The podcast & newsletter for those who code - resources, tips, interviews and more all aimed to help you make the most of your career as a software developer.
stackyack.substack.com
Dear fellow Stack Yacker,
You can say that coding is a means to an end. We write code to produce software to achieve business goals and solve problems for end users - users who could care less whether it’s Java or JavaScript, React or jQuery under the hood.
Do we even need to care that much about how we write our code then? As long as it does what it needs to do, we did our job right?
TLDR; Yes and for two reasons:
Business objectives, users wants, needs and demands change over time. To accommodate, our software should be easily malleable, or simple enough to make changes to in a timely manner. Sure, many users don’t care how the car runs, but they sure don’t want to wait 3 weeks to get their tire changed.
Now let’s think about who is responsible for making those changes - developers! Not all changes to a code base are going to be easy, but the code and the architecture of the codebase itself should not get in the way. Writing unmaintainable code will lead to those 3 week wait times for even the simplest of tasks.
How can we help ensure we are writing code we’ll be proud of at the end of the day?
🤯 Avoid over-engineering
Keep it simple. As Albert Einstein said, “If you can’t explain it, you don’t understand it well enough”. This goes back to the point that the end-user does not care how clever the code is under the hood. They just want software that is useful. Writing simple, elegant, and expressive code is one way to assure your output will be useful to others.
🤔 Code with your colleagues in mind (or your future self)
Although I don’t always hit the mark here myself, every time I write code I think about how easy it will be for my developer colleagues to understand what the hell is going on. This ties back to avoiding over-engineering and writing clean and expressive code. This mindset also helps you improve over time. Put in the work to write easily-readable code, leads to better PR reviews, which leads to better and constructive critique, which leads to you being a better software engineer.
🤮 Understand what bad code looks like
Quick and funny story here. A few weeks back, a team member and I were looking for some sort of code example on CodePen. We got to one sample and at the exact same time in the same way blurted out “yuck!” Maybe you had to be there, but the point I’m trying to make is that we both were able to point at what we were looking at and think this is not good. The code layout was awful, everything was jumbled, variable names that were not descriptive, etc. We had no idea what this code was doing, and even if it worked and would be a great solution, we didn’t want to take the time to even read through it.
🤩 Have a desire to be proud of your work
This may seem like an obvious one, but I think it’s the most important. To write your best code, you have to want to be proud of what you’re putting out. Even if you are a seasoned developer, the moment you stop caring, your code quality will fail.
A few questions for you:
How much do you care about the code you write? How is this demonstrated in your work? What are areas do you think you could improve on as a developer?
—
Thanks for reading. 🙏
Christian
Subscribe at stackyack.substack.com
Hello Stack Yacker! Thanks for tuning into episode #007!
For the last 2-ish weeks I’ve been forcing myself to TDD which is what spawned the idea for this week’s topic. We all know (or should know) tests are an important part of the development process. A process in which we all have our own way of approaching. Some of us like to code the implementation first, then write the test. Others prefer to write their tests first before touching a single line of actual code. The later in this case is known as “Test Driven Development” or TDD - and with any methodology, there comes a list of pros and cons.
To better understand, I speak with Jan Hesters - a TDD activist if you will 😉, JavaScript developer, and fellow co-worker at Hopin.
Have a listen!
P.S - If you’ve enjoyed the episode, please share! 🙏🏻
Subscribe at stackyack.substack.com
This week I dive into part 2 of the Freelance series, where we talk all about money and how much you should be charging for your work.
Dear Stack Yacker,
Welcome back to part 2 of my freelancing series. Today we’re going to talk all about charging for your services. Say you’ve got a prospective client that is asking for a proposal for a blogging website. Let’s assume the design and build out are pretty straightforward and there is nothing too technically challenging about it. You write up the scope, and a little blurb about why you are the right person for the job.. then you get to the pricing section of the proposal and find yourself staring blankly at the screen, your fingers unsure of the next key stroke.
Pricing is hard, but it doesn’t have to be. In fact it’s my favourite part of drafting proposals 🤑. Here are a few simple rules I follow to make it easier (and quicker) to do:
ALWAYS avoid hourly pricing
Unless you enjoy the feeling of someone breathing down your neck of course.
Aside from increasing your chances of the relationship being micro-managed, charging by the hour gives you zero incentive to work smart. The quicker you finish, the less money you make. I don’t believe there has to be a sacrifice – you shouldn’t be penalised for working efficiently.
“Can’t I just increase my rate then?”
You can, but the amount you’ll need to set to have it make sense might cost you winning the job. The client likely won’t think the way you are when they read the proposal for the first time, they’ll just see this insane hourly rate and move on to the next freelancer.
Price by the project
I prefer to keep things simple, and charging by the project is the best way to follow this practice. It’s easy for the client to reason about, you don’t need to worry about logging your hours, and you know exactly how much income you’ll earn at the end of the day.
“So how much should I charge?”
This is going to sound contradictory at first, but I calculate the total project cost based on my hourly rate.
“But.. but.. you said..”
Let me clarify – I do have an hourly rate, however I never talk about, nor show that to the client. It’s only ever used internally by me, and me only.
“What should my hourly rate be?”
Your hourly rate should purely be based off your experience. Don’t think you can come fresh out of bootcamp and charge $100 per hour, but also don’t undervalue yourself. Experience levels vary, so if you’re unsure, I suggest googling the yearly average salary for developers in your area at the level you think you’re at. Ex: “Mid-level Web Developer Salary Washington D.C”. At that point you can derive the hourly rate with some simple math.
From here it’s pretty straight forward, if you think a project will take you 40 hours to do, and your hourly rate is $60 per hour, then your base project price is $2,400. Notice the term base project price I’m using. This is not the estimated total I give to the client. There’s still a bit more processing on my end that needs to be done.
Now that I’ve got my base price calculated, I’ll then begin to evaluate external factors by asking myself questions like:
“How clear is the direction from the client?”
“Will I need to do a good share of consulting work?”
“Does this client seem like they might be difficult to work with?”
“How often do they want to have check-in meetings”?
All those questions help me evaluate how much additional time will I need to spend on the project that is not directly coding.
Any time spent with a client directly or indirectly, you should be getting paid for.
Which is also a big reason why I’ll never bill hourly. I can imagine my client scratching their head with a strange look on their face when they see a line item on their invoice for a 15 minute meeting. Just expect these will happen and bundle them into your price.
For this example, say you expect meeting to be pretty low, and the client seems pretty mellow and low-key. You estimate no more than 3 hours of meeting time. Now you have your external factor cost calculated at $180, bringing your new project total to $2,580.
But we’re not done yet!
The two guaranteed things in life are death and taxes. I don’t mind too much about the tax guarantee because it means I’m making money. But how do taxes play a role in our project price?
I’m a bit more aggressive than I need to be with the amount I put away for taxes (30%), so for this example let’s go with that rate which would bring our tax owed amount to $774. Subtract that from our total (2,580 - 774 = 1,806), which brings us to an $1,806 net profit. The next question I’d then ask myself is the $1,800 from all the work I’m about to put in worth it?
If yes, then that’s the total I’m sending to the client in the proposal, $2,580. If the answer is no, then I’ll focus on what I want to net from the project. Let’s say I want to take home a minimum of $2,000. I would then need to bump my base rate to around $3000. The 30% taxes on that would be $900, leaving me with $2,100 in net profit, and my proposal with a $3k price tag on it.
—
Again, pricing can be hard, but with a strategy you can make it much simpler and easy. Also, processes are meant to be changed and improved upon. What works for you this year may not work for you the following. As a freelancer you need to be adaptive, creative and be flexible enough to allow for change.
Thanks for reading 🙏🏻
Christian
About Me
Currently writing code at Hopin, an online events platform where you can create engaging virtual events that connect people around the globe. In my non-work hours, I spend my time flying airplanes, surfing, and traveling with my amazingly talented wife.
Subscribe at stackyack.substack.com
This week I talk with Barbara Iranzo from the Talent Acquisition team at Hopin about resumes, interviewing, and how you can stand out (good and bad) from the heaps of applications that recruitment teams receive.
Christian Bryant (CB): Today I’m speaking with Barbara Iranzo who works with me at Hopin. She is in the Talent Acquisition and People Ops department. We’re going to be discussing how candidates can stand out when they are applying for a role. Thanks for joining Barbara!
Barbara Iranzo (BI): Thank you for the invite. To give a small introduction, I’m from Venezuela currently living in Spain, been here for about 4 years. I’ve been working as a recruiter for 6, and as a tech recruiter for the last 5 within the US and European markets.
CB: So, we both work at Hopin, and can both attest to the speed at which the company is growing and moving, and the amount of people that apply to work here. However, before I ever see an application come through for a technical screening, they all go through you first. And you’re seeing hundreds! What are things you look for on their resume when doing your initial screening?
BI: In terms of the “Dos”, one of the first things I look at is the environment in which the candidate has worked in. Is it a startup or not, is it big or small, etc. Also I look at the product they were working on itself. Does it share the same complexities as the product they’d be working on here, etc. It’s a huge plus when a candidate includes as much detail about what they were working on at their previous company because it gives me the information to make the best decision I can [to move them forward].
CB: Let’s say I meet all the technical aspects the role requires, and I’ve made it to the face to face interview with you, what are things I can do to stand out?
BI: I get really impressed when candidates are structured in the way they talk about their experiences. But let me back up to the process I usually follow - I begin interviews talking about the company (they are applying for), but I like seeing when candidates ask questions or have some input mid-way through my “speech” because it tells me they’ve done some research on the product and company. So do your research, actually look at the company website. When you ask questions, it shows that you are really interested.
Next I like the person to talk about themselves and what they’ve done. I don’t ask many specific questions, because I like to see how they communicate, and how they structure their thoughts. For example, I may ask something like “Let’s focus on the past 2-3 years, tell me about the company, the environment and workflows”, and then I may add a few specific questions. Once the person starts talking and they cover all the points I was looking for and then give more, to me that’s really impressive because it shows me they have a clear thought process before giving a response. Also tells me they are a good listener, because I just gave them a really long list of questions to answer.
CB: We’re in a peculiar time in the world with COVID-19. With many positions now forced to be remote, are there any other skills a candidate should show they have when applying for these types of roles?
BI: You need to be flexible in terms of time zones. Don’t stay within the mindset that you are going to work 8-5 or 9-6. Most remote employers have a pretty distributed team all over the globe, so you’ll need to be understanding that it might be required to get up earlier or work a little later.
You’ll also need to have a good amount of discipline. You need to have a space just for work. Don’t mix personal time with work. It’s about understanding and making that space, and be able to manage your time better.
CB: What are some examples of red flags you’ve seen through a candidates application process?
BI: This will sound obvious, but basically people will apply with a blank CV. Probably by accident, but I can’t do anything with it. Make sure to double check the documents you are uploading. It’s more common than you think.
Next, the cover letter - It’s more to understand your motivation, not if you are fit for the job. The CV speaks for itself. Don’t highlight how amazing you are, just keep it brief and tell why you are interested in the company.
CB: I think just having written communication skills here is important as well
BI: And being able to be concise. Talk straight to the point of what you need. Some companies are actually requiring tests on Slack to see your writing skills.
One other thing about the CV, I often see a lot of extra “design” effort. For developers, keep it simple, clear, and normal format. Don’t make it look too complicated, because it can be hard to read. Don’t stand out in the wrong way.
Also once again, make sure you add technologies you’ve worked with under each job experience, and how many people used it, the scale, etc.
Key points:
Include as much detail about what you did in your previous roles. Highlight your accomplishments and your area of expertise.
Practice how you are going to talk about yourself to the recruiter. It’s good to have a structured, well thought out timeline you can articulate.
Practice your written communication skills
Do you research on the company you are applying for and ask tons of questions.
With remote work on the rise, make sure you can be flexible with timezones and can be a disciplined worker.
Double check files you upload (make sure they aren’t blank or corrupted).
Developers don’t need a fancy designed resume. Keep it simple, clear, and to the point.
Like reading Stack Yack?
Mind giving it a share or a follow on Twitter? 🙏🏻
Subscribe at stackyack.substack.com
The first of a 4 part series on everything freelance – how to start, getting clients, how how much to charge, and more.
Dear Stack Yacker,
Whether you’re looking to grow your skills as a developer, earn extra income, switch careers, freelancing can be a great option. As someone who’s spent about 8 years in and out of freelancing, from doing it part time, to doing it full-time for 2 years straight, I can attest how wonderful this path can be.
Today I’d like to dive into the first part of this series and go over what you should have in place before embarking on your freelance journey. Let’s dive in!
Your Freelance Journey “Packing List”
Whoo! Freelancing! Yes! You’re doing it! Cool! So uh.. where do you start?
Setting off on any new journey is fun and exciting, even more so when you’ve planned and are prepared ( forgetting sunscreen, towel, swimsuit, etc. when going to the beach type of thing.. ). So what is it that you need to make sure you pack for you freelance adventures?
Well, be it as we are all different people that have our own unique story and path, the following below outlines in detail the “items” I made sure to pack, and that have helped me be successful with freelancing.
Write a personal mission statement
Why do you think clients should hire you? What makes you special? Why should they choose you to build their website? Your mission statement will answer these questions, and can be used as your north star to help guide you through the business of freelance.
Spend some time on this, and really focus on crafting those few sentences. If you are looking for a good place to start, try to answer Why, How and What.
Why do you do it?
How do you do it?
What is it you do?
It’s a bit unintuitive and harder to start in that order, so I highly recommend taking the 18 minutes to watch Simon Sinek’s 2009 Ted Talk - “Start with why”, where he explains the entire concept.
An excerpt from his talk, using Apple as an example:
If Apple were like everyone else, a marketing message from them may sound like this: (what) "We make great computers”. (how) “They are beautifully designed, simple to use, and user friendly. Wanna buy one?”
And that’s how the majority of how many businesses, freelancers, etc communicate to the world about who they are. They expect some sort of behaviour by just saying their name, company slogan and what they sell. They don’t stand out. They aren’t very inspiring. Here’s another excerpt with Apple as an example, using the “start with why” principle:
“Everything we do, we believe in challenging the status quo. We believe in thinking differently. The way we challenge the status quo is by making our products beautifully designed, simple to use, and user friendly. We just happen to make great computers - wanna buy one?”
Pretty drastic of a difference right?
Anyway, the point I’m trying to make here is it’s important to tailor a mission statement about yourself, since as a freelancer, YOU are the brand. This will help drive you forward, and stand out from the crowd.
Polish up your portfolio
When you first start freelancing, your portfolio site will often be asked for and looked at more than your actual CV, so I highly recommend you spend some time making this look shiny ✨. If you aren’t a designer, or don’t have design chops, you can always visit websites like Site Inspire for some inspiration. Pick something simple, clean, and and easy to look at (unless it’s your style, stay away from brutalist design 😂)
Next, you’ll need some actual content.
Although you could just throw a link to sites you’ve worked on, you’ll stand out if you go the extra mile by putting up images of the project with a simple case-study write up. Talk about the project, what the goal was, technologies you used, etc.
Don’t have any work you’re super proud of to display on your site? That’s okay - the solution for this is to go to Dribbble, find 2-3 really kickass landing page designs and build them out (with of course attributing the designer). If you do go this route, try to pick sites that are unique from each other - maybe pick on that is a product / e-commerce site, one that blog / editorial style site, and then maybe one that just uses really cool animations. Diversify your portfolio.
One last thing about your portfolio - remember that mission statement you wrote? Include it on the homepage somewhere for prospective clients to see!
Use LinkedIn and other social media outlets
You never know what’ll start driving leads, but social media and LinkedIn are definitely places you want to let people know that you are open for work and do freelance.
Put something in your bio or tagline, like “Freelance Developer”, “Contract Developer for Hire”, etc. You can also use these outlets to post about the work you are doing or have completed. Don’t feel shy to post little blurbs either about the work you do: “Just launched XYZ site - what do you all think?”.
You’re putting in the initial ground work and laying the foundations for your brand. And who knows, you may actually end up getting your first client this way.
Have a dedicated email
You are selling yourself as a professional, so when a prospective client gets an email from “sk8erdude91@gmail.com”, the appearance of professionalism will dwindle. This is an easy one, but make sure you’ve got an email account that is dedicated to your freelancing business. You can keep it simple with you name @domain, or do something like I’ve done - christianlovescode@gmail.com. It’s a little more friendly, fun, but still has context that I write code.
Put on your sales hat
Although you’ll get better with this over time, and find yourself not needing to “sell” as hard once you’ve been freelancing for awhile b/c you’re getting so many referrals, but when starting out, you’ve got to be comfortable with sales and talking to people about your service.
The mission statement you write can definitely help guide this, but you should spend time practicing 30 second elevator pitches, and drafting “cold intro” emails. You want to make sure these are really on point, so I recommend testing them out with your friends and family to see what resinates the most.
Having to sell can suck sometimes, but it’s part of the gig - and if you’re like .. “Christian.. the selling thing is 100% not for me”, not all hope is lost. You might consider teaming up with a friend who has the gift of gab, and give them a commission to help you draft up sales pitches, proposals, emails, etc.
Freelancing is extremely fun and can be quite lucrative and rewarding, and the more you are prepared for your journey the better time you’ll have on it. I appreciate you taking the time to read Stack Yack #004 today, and hope you stay tuned for next week as I get into part 2 of the freelancing series!
Best,
Christian
P.S - here’s an awesome video series to get you hyped about freelancing, by my favourite freelancer Dann Petty,
Subscribe at stackyack.substack.com
This week I discuss time management as a software developer, it’s (obvious) importance, and ways you can start improving your time management skills today.
Don’t have time to read? 📺 Watch on Youtube or 🎧 listen on Spotify
Dear fellow Stack Yacker,
Time management is a critical skill every developer must have. From meeting work deadlines to finding time to learn a new skill or work on that side project – it can often feel like there’s never enough hours in the day.
A bit of some backstory – For most of my life I’ve always been a yes man. I never turned down a project or the opportunity to do more. The last year alone, outside of my day job, I averaged about 2-3 freelance gigs per month, learned to fly airplanes, took a 5,000 mile road trip , planned/had a wedding, read 16 books, and took on several consulting projects – and I still felt like I had time to do more.
Today, I don’t take on side projects (other than Stack Yack) given the rocket ship I’m strapped into at Hopin (we’re hiring btw), but rather use my time to learn new tech, do home improvement projects (trust me I need as much time as I can get here b/c I have no clue what I’m doing 😂), and to think about time.
But seriously, I’m obsessed with time and spend a lot of it thinking about time and ways I can improve my productivity and maximise my output. I attribute the amount of time I’ve invested in learning and practicing time management as to why I think I’m able to optimise my day the way I do. It’s something I continually refactor, but as it stands today, my learnings can be boiled down to three things:
Changing your mindset about time
Block your time
Set daily minimums
Let’s dive in.
Changing your mindset about time
I used to find myself thinking about time in 2-3 blocks: morning, afternoon, and night. Morning was for going to work, afternoon was for still being at work, and night was when the day is over and I guess I just eat dinner and go to bed. This is a terrible f*g mindset, and I know so many folks who think this way. You basically just block yourself from completely considering all the other things in your life you want to have time for, because you only give yourself 2-3 time slots in which anything you want to do can happen in! Well how do we get more chunks of time? Sure we can break it down into hour slots, but I like breaking my daily schedule and routine down to the minute. There are always 24 hours in a day, but thinking about time in smaller chunks gives you more time to play with.
Block your time
Okay, so now that we understand the benefit of thinking about time in really small, granular units (minutes), now we need to discuss what to do with those minutes. Two words - block and protect.
Let’s say you’ve got a list of 7 total things you need to do on a given day. This includes work, goals, anything you either have to or want to spend your time on.
Kick ass at your day job
Work on side project
Work on freelance gig
Workout
Read
Grocery store
Cook dinner for family
Writing down a list is common way to stay organised as to what you have to do. The only thing I dislike about “to do” lists is there too loosy-goosy – there isn’t enough structure. When will you read? When are you going to work out? When are you going to sit and read? To do lists are a great first step at managing and owning your time, but they don’t do enough. They assume you super disciplined and know exactly when you’ll do everything. Maybe this is you, if so great, teach me your ways. If it’s not you, then like me, you need something more structured and not left so open-ended. This is where time blocking comes into play.
Time blocking is planning ahead the chunks of time throughout the day that you are going to spend on something. There are plenty of tools out there, but I just use the Calendar app on my Mac. Here’s an example of what my time block looks like for today:
This serves as a to-do list, but also helps me manage when it is I’m going to actually do the things on my list. I like to colour code the activity types to help me get a quick at-a-glance snapshot of what my day is going to look like. I keep those pretty simple: “personal”, “meetings”, “planned work”.
“Okay.. so Christian.. what if something unexpected comes up in the middle of my 30 minute reading time I had planned?”
Glad you asked! On to my favourite time-tactic: daily minimums.
Setting daily minimums
Life gets in the way, not sometimes, but all the time! Which can def make that the 30 minute time block for reading, or 90 minute time block for that side project not so ideal. Say hello to “Daily Minimums”.
Consider daily minimums your backup plan to your obligations. A daily minimum is still an obligation, just not so ambitious. Say you do have a 30 minute reading goal each day, then you might make your daily minimum 5. No joke, I have daily minimum reading goal of 1 page per day. I often far surpass this minimum, but there are some days I don’t! And the best part? I don’t feel down that I didn’t reach or work toward a goal of mine. Daily minimums are your out for when time seems to creep up on you, but also removes any excuses. I mean, come on - do I really not have time to read a single page in 24 hours? No way.
—
Time management doesn’t have to be a scary thing, or something you just let slip away. A lot can be done in a single day, it just matters how you look at and manage the time given to you.
I’d love to hear some of your own tactics at time management. Let me know in the comments below or tweet me @stackyacker
Thanks for reading,
CB
Subscribe at stackyack.substack.com
🎧 LISTEN: I’ve launched an audio version on Spotify podcasts! Check it out here.
📺WATCH: check the episode on YouTube here!
Greetings from sunny Los Angeles! No, I did not move back, but ended up having to head out here to pick up our car we left when we moved. Long story short, don’t leave your car sitting for too long or people will target it and steal your catalytic converter! The Prius sounded like a sports car. Anyways, it’s been a nice 2-day vacation 🤷🏻♂️🌴
This week I want to talk about side projects and the importance they play in your growth as a developer. For those that know me personally, know that I’m never not working on a side project. TBH I don’t think I’ll ever stop either. The benefits I’ve gained from the time I’ve invested has been oh so worth it. Today I just want to share some insight as to why I believe they are valuable and hopefully convince you to start as well if you haven’t already.
🧠 Thoughts from the week
What I’ve been thinking about, and think you should be thinking about too.
Whether you’re just getting started coding or are a seasoned pro, NOT having a side project can halt your growth as a developer.
Why should I care about having a side project?
10x your learning opportunities
Better job opportunities
Extra income opportunities
Overall be a more well-rounded developer
10x learning opportunities – My favourite part about having side projects is that there is no predetermined technology stack I have to follow, and no external pressure or decisions being made that limit what libraries, tools, etc. that I have to use. Want to give Gatsby a try? Maybe Svelte? Side projects are a great excuse to learn something new.
Better job opportunities – When I’m looking at resume’s for potential candidates, I absolutely love when I see side projects included. What it shows me is that this person loves coding and building things, which then leads me to presume that they are a curious type of person who is willing to go the extra mile to investigate and learn. That’s the type of person I want on my team, hands down.
There is also the chance that if you work on a side project that gets picked up by a company and they dig it, who knows, they may just reach out to bring you on board. We’ve definitely done this at Hopin.
Extra income opportunities – Built something cool that other people want? Charge for it! This is much easier said than done, but thousands of developers monetise their side projects, thus turning them into side hustles. Indie Hackers is a cool place to discover these (and just a great community to be a part of in general).
Overall be a more well-rounded developer – When you work on a side project you’re likely not working on it in the routine way you do at your day job like a code monkey (ie. picking up a ticket that someone has predefined, doing the work, opening a PR, merge, and repeat). Side projects require you to think outside the scope of typical day to day development. You’re not thinking only about implementation details, but also making the decisions as to what it is that needs to be implemented. Side projects can help you see and understand the bigger picture in the product development lifecycle.
How do I start working on a side project?
Aside from actually shipping your project, one of the most exciting and challenging aspects of being a side-project developer is picking what you want to work on! For me personally this has never been a problem, I have a dedicated Note on my phone I use to write down any random idea that I think of, regardless how stupid or silly it might be. If you don’t have any ideas right of the top of your head, start by asking yourself these questions:
What are my hobbies? Is there something I could build that could incorporate something I’m already interested in?
What problems do I encounter in my day job? Could I build something to help?
What are my friends and families hobbies/careers? Is there anything I could do to help make their lives easier?
Given my typical day, is there anything I could automate or make easier to accomplish with technology?
Don’t worry if you struggle for a bit finding something you want to work on. You can find something that’s already been built and just find ways to improve on it. Also, if you start a project and a few weeks in you aren’t feeling it anymore, quit! It’s totally ok! Take a look at my repository count:
More than half of those are side projects I’ve never finished or done anything with. But they have ALL help shape me into the developer I am today. The point is to just start.
Side note - I just finished and launched one last week https://www.react-togglr.com/
Finding the time
Everyone has different schedules, and if you are the type of person that doesn’t want to code on the weekends, or want to do other things, that’s perfectly ok - just pick something really really small to work on that you can spend an hour or two a week on. Your side projects don’t need to be these grand, 20+ feature apps. Even if you do have a grand idea, I still suggest starting small and building an MVP version first anyway.
Just pick something and start, you’ll be thankful you did. If you are finding yourself lacking motivation somedays, again totally normal and fine just remember that by committing to being a side-project-dev you’ll be increasing your learning opportunities, have better job opportunities, and possibly make some cash from it.
Thanks for reading / listening! If you are working on a side project, tweet me @stackyacker to tell me about it - would love to check it out!
Have a wonderful week.🤘
– Christian
🐦 From the Twittersphere
Things web development related worth sharing
It was pretty nostalgic for myself to read this tweet from Kyle. It’s so true though how it happens, you just have to stick with it and keep improving your skills. The doors will open.
TBH I never knew that existed either! I’ve always just used text-decoration: line-through. However, this is definitely more semantic (and accessible). Next time I need to have text with a strike through, I’ll be reaching for this. Learn here
The concept of z-index initially is pretty is straight forward to grasp, but once you start getting into super nested elements, it can get a little weird. If you are just learning about layering I recommend checking this out.
🔥 Interview Q’s
Frequently asked interview questions to make sure you have a handle on
Q: What’s the difference between .forEach and .map? – It’s easy to get these two confused when you’re first starting out, because in a way they are pretty similar. Both map and forEach are used to iterate over an array. The main difference here though is that .map returns a new array, while forEach just iterates through the original array.
So when should you use either?
A: The map() method is quite handy (especially in react) when you want to iterate over data in an array and manipulate it in some way. For example, say you’ve got an array of cities, and you want render them all as list items with the name of the city to the page. Example:
const Page = () => { const cities = ['Sydney', 'Los Angeles', 'Seoul'];
return (
Favourite Cities
{cities.map(city => ( * {city}
))}
); };
What’s happening here is you’re taking your original array of strings and returning an array of elements, which can then be rendered to the DOM.
So what about forEach()? This method is useful when you want to run an operation on each value in an array. For example:
const hasEvenNumbers = numbers => { let hasEvens = false; numbers.forEach(number => { if (number % 2 === 0) { hasEvens = true; } });
return hasEvens; };
console.log(hasEvenNumbers([1,3,5])) // false console.log(hasEvenNumbers([1,3,5,6])) // true
Although you could still technically return an array of elements using a forEach, and you can map over an array of numbers and check if they contain evens, that doesn’t always mean it’s the best tool for the job. You can probably cut a steak with a spoon.. er you get the picture.
🎓 Learn
Tutorials and educational resources to check out
How to use React Testing Library by Robin Wieruch @rwieruch – Have a solid understanding of writing tests is a critical skill in every developers toolbox - and TBH, was something I didn’t really dive into until a few years ago (oh the headaches I caused myself… 🤯). Anyway, if you write in React and haven’t heard of or have never used React Testing Library, this tutorial is great. I luckily was able to first start using RTL on the job at my previous company, but wish this tutorial existed so I could have upped my game quicker.
🔗 Bookmark It!
Resources, tools, and other sites I think you'll find valuable
Javascript.info – Although marketed as a tutorial, I keep it bookmarked as an index of anything and everything JavaScript. This site outlines in extreme detail all the moving parts and inner workings of the language. I would say I use this just as often as the JavaScript MDN if I find myself needing a deeper understanding of a given topic.
Syntax.fm – Another Wes Bos plug! (you’re awesome too Scott Tolinski). Syntax is self described as “A Tasty Treats Podcast for Web Developers”, and it really is a treat listening every week. Wes and Scott do a great job breaking down a topic and definitely make it easy for developers at any skill level to follow. I highly recommend adding this to your podcast playlist, as I find myself often learning something new from these guys almost every time I have a listen.
✨ Stack Yak Recommends
Products and services that have made life for me better as a developer
📗READ: Becoming a better programmer by Pete Goodliffe. This was the very first industry-related book I ever read. I remember being hesitant at first to buy, since 8 years ago when I first purchased it I thought it might be too over my head.. to my surprise it wasn’t at all! In fact it doesn’t assume you know any certain language whatsoever.
Goodliffe writes in a non-college-textbook style which I think is what made it so easy for me to read through. In it he outlines a handful of useful approaches from organising and designing software, to techniques to work more efficiently and get things done.
I personally have used and it have recommended it to students I’ve mentored, and in fact gave my last copy away a few weeks ago!
Definitely a must read for any current or aspiring developer.
Enjoyed reading? If so, please share and tell others about Stack Yack. I’d really appreciate it! 🙏 🙏
You can also follow me on twitter @stackyacker
Subscribe at stackyack.substack.com
Don’t have time to read it all? Listen to the audio version above 🔉
🧠 On my mind this week
What I’ve been thinking about, and think you should be thinking about too.
Asking better questions
As a developer, you’re faced with solving problems all day everyday. The two most common types are usually around code implementation (ex: “how do I make x do y?”), and understanding requirements (ex: “what is x, what is y, and why does it matter?”). Regardless of the type of problem, one thing is certain about both– in order to be good at solving problems, you need to be good at asking questions.
When you’re first starting out coding, it’s hard to find answers to problems you’re stuck on because you likely don’t even know what to ask or how to frame the question. Next thing you know, you’ve fallen into the Stack Overflow pit of death because you posted your first “It doesn’t work” question with no code example":
So, how do you make sure you don’t end up like the guy above?
Don’t ask yes or no questions - you’ll likely end up with incomplete information. Use “where”, “what”, “how” types. This is easier for the person responding to your question to give some more thought to their answer.
Gather as many clues as you can. Be a detective 🔎. Let’s say you’re building out a form and are having troubles getting the form to submit. What’s a bad question to ask in this example? “The submit button isn’t working”.. Is that the actual problem? What is suppose to happen when that button gets clicked? It suppose to call a function that submits the form. Are we making sure we are even calling that function on click? Yes. Does that function exist? Oops.. typo. The point is here is to find and follow a trail and gather as much information as possible. Now when you go to StackOverflow for help, you can actually give context and and save people the time from having to ask the basic questions you should have asked yourself.
Be specific / Give as much context as possible - In addition to your actual question, be sure to give as much information as possible. You’ll want to include things like what you’ve tried already and what the outcome was, any error message that came through, versions of tooling you’re using, operating system, etc. The more details the better.
Provide code samples! This! Share your code. This goes back to the point of providing as much context and detail as possible. How much code should you provide? Good question! If you don’t know exactly where the issue lies, just tart small and isolate. This is where tip #2 of clue gathering comes in to play. Try to find the smallest chunk of code you think is the issue and go from there.
Proofread / think twice before asking/posting your question. Make sure the question you wrote or intend to ask is clear and concise. Edit for clarity, fix typos, and make sure you re-word anything confusing. Pair programming and helping someone squash a bug can be fun, but you also want to be mindful of the time the person who is helping you is putting in.
📰 News
What’s happening in the wonderful world of development...
June 16th and 17th, Developer Week Global is hosting a virtual conference. This is one of the biggest developer and engineering conferences out there. Tons to learn and discover. Normally the cheapest ticket is $150, but they have waived the fee completely! Get your free ticket here!
Jam Stack Conf happened virtually a few weeks back, and the videos are now available on Youtube. If you aren’t familiar with the JAM stack in general, read this WTF is JAM Stack?
🔥 Hot tip
A quick win to up your coding game
Love at first sight: using optional chaining in JS
Less code is good code in my book, and if you feel the same way and also love keeping things clean, then maybe this’ll be a love story for you as well. Let’s take a look at some code:
Just a simple object, with some props. What would happen if I did something like this and tried to access a property that didn’t exist?
We’d get an error 😭
Now I could do something like this to safe guard that from happening:
Works right? But imagine nesting any deeper, could get ugly quick (as it already does in that example).
“Please welcome, our dear friend, Optional Chaining to the stage!” 👏👏
Spot the difference? With optional chaining, you provide the “ ?. ” operator, which allows you to not have to explicitly validate each reference in a nested object. Makes things shorter, sweeter, and simpler.
Practice optional chaining here
🎓 Tutorials
Regardless of your experience, part of being a developer is continually learning. You've got to love it, and if ya don't then ya aught to learn to love it
Whether your new to coding, or have been in the game for a while, we all know how important it is to be good at JavaScript. One free course I recommend everyone take is Wes Bos’ JavaScript30. Each day you’ll build a small project that focuses on using different parts of JS. It’s quality 👌
Check it out here
🔗 Bookmark It!
Resources, tools, and other sites I think you'll find valuable
Still haven’t gotten a grasp on CSS grid? Learn it here.
Need to check if the technology you’re using is supported across an array of browsers? CanIUse is your go-to.
Looking for inspo, or want to just see the cool sh*t you can do with code? Check out Site Inspire.
✨ Stack Yak Recommends
Products and services I love because they make life for me better as a developer
Felix Gray glasses - Eye health is extremely important, and if you are a developer or really anyone for that matter that spends a majority of their day behind a screen, you need to be doing something about it. Check out Felix Grays - they are the sunscreen for your eyes (no stinging I promise). I’ve been on this train and brand for years now, and wear them religiously when coding. If you are into wearing non prescriptions (they do have prescription lenses) out in public, they are stylish enough to do that too. My go-to are these.
💼 Jobs
Whether you are looking or not, it's always good to know what's out there. Below you’ll find some ones I think would be cool and why I think that.
Hopin - Virtual events platform (Remote)
Shameless plug, but my company Hopin is hiring! From Frontend to FullStack, to Performance and Scale. We are growing fast. 🚀No joke - Hopin is on its way to being the fastest growing startup in Europe for that matter. Albeit I’m a bit biased, our team is incredibly talented, and even though we’re 100% remote and pushing 50+ people, our culture is amazing – it feels as if you’re working in the same physically space as your teammates. I just love it.
We are also looking for non-engineering roles which you can find here.
Frontend Developer
Performance Engineer
Senior FullStack Engineer
DevOps Engineer
Enjoyed everything? If so, please share and tell others about Stack Yack. I’d really appreciate it! 🙏 🙏
Subscribe at stackyack.substack.com