Debating whether you want to study coding and become a software engineer? This is the guide for you.
It can be really hard to decide to take the plunge into changing your career and learning new technology. Unfortunately, most of us only have stories from friends or shows like Silicon Valleyto give us a sense of what being a full-time developer is really like.
My goal is writing this guide is to give you a better sense of what to expect. Both in terms of your day-to-day work and the types of work available to you.
I’ve spent the last 12 years hiring, teaching, and mentoring engineers. It’s been a fun process across 5 different organizations. Along the way I’ve spoken to several friends and students who were curious about what they’d actually be doing for work if hired! That’s why I wrote this guide.
Without any further ado, let’s dig in!
What does a software engineer’s day look like?
The daily work of a software engineer is often different than people imagine. Gone are the days of a lone developer sitting in a dimly-lit room, coding for hours, surrounded by cans of Red Bull and cigarettes. The majority of people work on teams now.
You should expect your first job to be on a team (taking on contract work to practice is fantastic, but I encourage everyone to find a team for their first job). The reason is simple, you learn more from peers and mentors. Your first job is a baby-step on this journey.
Your weeks will be a mix of a few different activities. There will be meetings, this is a reality of the corporate world. Likely, you’ll go over what you’re working on, plan for future work, explain past work, and show off or test the product with users.
There will be time to spend white boarding, planning, and strategizing with your teammates. You’ll want to put in some effort before writing a single line of code (but beware of spending too much time procrastinating!).
And then, you’ll spend time coding. You’ll need to defend this time as it is sacred. Block this out, get some good noise cancelling headphones, and create a strong habit.
You’ll be called on to solve problems. Sometimes these will be a bug in the code. Sometimes they will be a new feature or a whole new tool. Often, you’ll need to learn something brand new to solve this problem.
One of the main things I’ve seen people struggle with is the sense of never knowing it all.
In many careers, after you reach a certain point you know most of the things. Coder’s don’t hit this point. There’s always new technology and new tools to learn.
Writers don’t spend hours googling how to write later in their careers. Carpenters don’t spend hours watching YouTube videos on a job site. There are a few other careers like this, but I’ve never seen one that humbles the greatest minds with such ease.
Being smart is irrelevant a lot of the time. You need to be constantly learning new technology, and having a repeatable process in place assures you’ll be comfortable over time. In fact, you should expect to be learning something new on a regular basis. Even if you work with the exact same technology.
How much does a software engineer make? Or what is a software developer’s salary?
This is tough to answer, but I’ll give some rough guidelines. The most important is that it depends on the market you’re looking in. I’ll give a rough idea of what you can expect as a starting salary and as a starting hourly rate if you go that way.
Major Markets (SF, NYC, LA): As a junior you’re looking at around $100k per year, depending on the company. This could be as low as $90k or as high as $120k. Hourly, you’re looking at $50-$75 an hour in these markets. As you advance, your salary as a mid-level is around 1.5x and as a senior engineer/team lead/architect can be up at 2x that starting rate. Top tech firms pay even more including options and bonuses.
Mid-tier Markets (Top 20 US cities, Austin, Portland, Denver, Chicago, Dallas, etc.): As a junior you’re looking at $70-80k per year, and hourly from $30-$60 an hour. Unless you specifically look for an internship or find a job at your dream company, I wouldn’t accept less than $65k for your first job. Your skillset is frankly too valuable.
Other Markets: If you live in a smaller city or want to work remote, then it will completely depend on the company. In a small town I wouldn’t accept less than $50k a year (you can always find remote work for at least this much). Hourly, I wouldn’t go less than $30 still, but would still look for $40-$50 an hour. There are fixed costs to being hourly, such as health insurance, so I wouldn’t accept too low of an offer.
I’m planning to write some future in-depth posts on this topic, I’ll link them when I finish if this is something people would like me to discuss further.
Lastly, what about working in Europe or somewhere more remote like Thailand? It completely depends on the company and the market then.
There are lots of companies that encourage remote developers. Being remote often means more time for coding and less time being distracted in an office. Choose a work style that fits with how you work best.
Are you distracted easily? Then work from home.
Are all of your fun toys beckoning you away? Then work from a coworking space or a coffee shop!
Another area to explore with companies is the type of mentorship they provide.
I would strongly encourage you to find a company with strong tech leadership and senior developers who enjoy mentoring. This will make your first job a great chance to keep growing.
Try talking to friends and looking on GlassDoor to see what similar companies tend to pay and if the company you’re looking at has a mentorship program.
What does junior software engineer vs. senior software engineer mean?
This is a wonderfully arbitrary question. In a nutshell, it means you have made a lot more mistakes. An order of magnitude more. You’ve tried a lot of things that won’t work, and are faster and more capable at solving harder problems.
Companies often try to apply years to this metric, but it’s difficult. I’ve seen developers with two years of experience who are much stronger than ones with seven or eight years. It comes down to how often the individual steps outside their comfort zone, is willing to accept feedback, and apply it.
If you can do the work the company needs and have 2/3 of the required skills and experience, then go for a senior role. It’s always worth trying – if you don’t pass the interview that’s a-ok. It’s great practice!
How do I find a software engineering internship or entry-level job?
There’s no one right way. The wrong way is firing off a lot of resumes, without using LinkedIn or following up with individual companies.
The best way to find a job, even as an engineer, is by talking to people in person. It works this way for every single industry. And if you can’t do it in person, phone calls are a great second option. You’ll often be able to skip the first step of the interview process this way.
So how do you apply this? I recommend you:
- Go to meetups, either in your area or online for developers. Make sure to talk to at least 2 new people every time you go!
- Reach out to people on LinkedIn and on AngelList in your area, see if they will meet for coffee. Try to target other self-taught developers and people working at companies that you’re interested in learning more about. Ask them questions and be nice!
- Look for projects led by more experienced developers who are willing to help you learn. These can be Open Source projects online, or something local in your city. I’d always lean towards in-person whenever possible.
My overall advice is to ask a lot of questions as you’re starting out on your journey. Every company looks a little different. I challenge you to find out what styles of work you enjoy the most, and what types of collaborative environments are the most appealing.
It’s okay if you’re different from your friends. Find a company with the right amount of stimulation and solo time. If you want to work at a shop that pair programs most of the day, then be intentional about this!
Good luck, and let me know if you have any other questions.
Which piece of today’s post excites you the most? Let me know by leaving a comment below.