How To Find Your First Software Engineering Job
Several years ago I was working for a startup as Director of Sales Engineering. One day I stepped into work and a thumb drive holding our product demo was placed into my hand. From that moment I owned the demo and the code. My first task would be to tweak it for an upcoming sales call.
My palms began to sweat. My heart started to race. I have no clue how to do this, I thought.
However, I did not have the practical skills to do the work. I was a project manager. I was a sales guy. I was not a developer.
I have worked in tech since 2005. My start was in the video game world as a Producer, where I quickly learned the agile process. I spent most of my free time hanging out with game developers.
Fast forward 5 years and the game company where I worked had been acquired, I had an MBA, and had started my own Mobile App consulting firm. I had been part of hiring and managing our remote teams in the game world and I applied the same principles to my own company.
Over the next 8 years, I managed teams and hired engineers. I dabbled in coding, starting to take it more seriously in 2013. With the help of friends I learned a few languages and began to code.
About a year ago I stumbled into a position teaching junior software engineers for a full-time job. I worked for a wonderful immersive program in Austin at Galvanize. However, not everyone can afford either the financial or time commitment necessary for an immersive program (we’re 9AM-8PM, 6 days a week!)
I want all of you to have a guide for your entire journey. Even if you plan to take an in-person program, or have a mentor, you can use this as a signpost to make sure you are learning all the necessary skills.
Everyone can learn to code. Yes, everyone.
Let me know if you have any questions! And if you find other amazing resources please share them with me. This is a living document and I’m always open to feedback.
How to Use This Guide
My recommendation is that you skim this once and then evaluate where you are on your journey. If you’re just starting out, fantastic — begin at the top. If you’re already on the path, find the sections that seem the most relevant to where you currently are. Work through these and reach out for feedback from others.
My goal in this project is to make a reference guide. Maybe it takes you 3 months to finish, maybe 3 years. That’s fine. Software isn’t going anywhere.
Either myself or my students have tested every single link. Below are the resources I’ve found the most helpful for teaching specific topics. I’m happy to be an affiliate for courses, but only ones I have taken and believe in. There are a couple of affiliate links below.
There’s a risk of information overload out there which can lead to paralysis.I want you focused — not spending time reading or watching videos instead of doing. I want to provide the resources that can get you back on track when you get stuck or are deep in the struggle zone!
Overview of the 4 Posts of This Series
Section 1: What does a software engineer do? What is a software engineer? How much does a software engineer make? These are common questions I hear every single day.
This section will answer some of the high-level questions if you are on the fence about whether to pursue this career.
Section 2: Mindset and how to practice — The goal of this section is to give you a different way to look at your learning process. The most common roadblock I see for new developers is the way that they learn.
This often has to do with negative self-talk, trained habits from school, and a lack of awareness of how humans learn new skills.
I will cover resources and tips that help people learn faster and have a blast doing it! There are always dips and rough days in learning and job-seeking — we’ll get you through them.
Section 3: Learning to code — You have to learn to make websites and apps, period. The only way to learn this is by doing it.
Section 4: The job hunting process — I’m going to cover it all. From making your resume, to the developer skills you’ll need, technical interviews, and whiteboarding.
One of the hardest things about becoming an entry-level software engineer is the actual process of finding the job. It can be 3–6 months before you feel ready from a code perspective. Keeping up the momentum here is critical.
I’m creating a community to help with exactly this problem. Check it out here.
What Does a Software Engineer Do?
The daily work of a software engineer is often not what 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 time will have a mix of different activities. There will be meetings — these are a reality of the corporate world. At these you’ll probably discuss what you’re working on, plan for future work, explain past work, and show off or test the product with users.
Additionally, you will spend time coding. You need to defend this time — it is sacred. Block the time out, get some good noise canceling headphones, and create a strong habit.
You will 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 will 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 a certain point you know most of the things there are 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 have never seen one that humbles the greatest minds with such ease.
A lot of the time, being smart is irrelevant. You need to be constantly learning new technology. 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 keep working with the exact same technology. This requires a total mental shift, which I will cover in the next section.
The other questions people tend to have are:
How much does a software engineer make?
What is a software developer’s salary?
These are tough questions to answer, but I’ll give some rough guidelines. The most important point is that it depends on the market you’re looking in. Here’s a rough idea of what you can expect as a starting salary, or 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 are looking for an internship or find a job at your dream company, I wouldn’t accept less than $65k for your first job. Your skill set is 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 an offer.
Lastly, what about working in Europe or somewhere even more remote like Thailand? That completely depends on the company and the market.
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 opportunity to keep growing. I also recommend talking to friends and looking on GlassDoor to find out what similar companies tend to pay.
What does junior software engineer vs. senior software engineer mean?
This is a wonderfully arbitrary question. In a nutshell, making senior software engineer 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 of 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 OK. It’s great practice!
How do I find a software engineering internship or entry-level job?
I’m so glad you asked! 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. If you can’t do it in person, phone calls are a great second option. You can often skip the first step of the interview process this way.
Thanks for reading Part 1 of this guide! Please leave any comments you have below and…
Check out part two on Mindset and How To Practice Coding