As software continues to eat the world, more and more people ask me about "getting into tech," i.e. a successful Software Engineer easily making around $350,000 in total annual compensation. I get asked this a lot because I had very little coding experience when I decided to make a career change into software. Four years after making that decision, I entered Twitter as a Senior Software Engineer with a compensation package I couldn't even dream of making elsewhere. I often look back and refer to my career change as the best decision I made in my life.
I decided to condense my experience to a blog post to help those understand the process and how to strategically think about their transition. There three main phases:
- Project and portfolio building
- Landing your first full-time job
- Getting promoted to senior status
Each phase has a distinct goal and a strategy to get to that goal as fast as possible. One of the benefits of the incredibly high demand of software engineers is that reputation and pedigree are less critical for the vetting process. What actually matters is that you are able to deliver great work, you are knowledgeable, and you are a really great team member.
Project and Portfolio Building
When starting from zero experience, the priority is to establish both ability and credibility. You first and foremost need to be able to do the work required to build something someone is willing to pay you for, and you need to be able to do it for multiple people. The goal here is to establish the idea for a recruiter or hiring manager that people paying you for your work is commonplace and expected.
When starting off, you should pick a tech stack to learn quickly. For me, it was building single-page applications with JavaScript, HTML, and CSS. I always enjoyed the instant gratification of throwing together some code and seeing changes directly reflected on a site, and I still enjoy it to this day. At this point, focus on improving your ability to put things together and have non-buggy projects that function well.
The goal here is to establish the idea for a recruiter or hiring manager that people paying you for your work is commonplace and expected.
Find anyone that needs simple software work done—an uncle who needs a simple website, a friend who needs a custom to-do app, anything. Get familiar with the process of taking business requirements and providing deliverables. Do this enough times and, surprisingly, you’ll find someone to pay you a small amount for a simple task here or there. Between projects, continue to build something for yourself or something a bit more ambitious to improve your hacking skills. At any point in time you should be working on something and learning. Focus on building momentum in one particular skill set. You eventually want to build enough credibility in that skill set to be hired for it. If you generalize too much in this phase, you’ll find it very difficult to land a first job in the next phase due to only being mediocre at everything.
Landing Your First Full-Time Job
Suppose you now have anywhere between 5-10 projects in your portfolio, maybe only a handful were paid for, and maybe you really only have 3 that you are comfortable showcasing in an interview. That’s OK. The objective in this phase is to get your foot in the door, any door.
I think most career-changers tackle the job search without any thought or strategy. Applying to full-time jobs via job sites are incredibly competitive. The best path to finding a full-time job as a slightly under-qualified professional is to actually apply for contract work, part-time, or temp work.
My trajectory into full-time work was through a temp job that was listed as a 4-week project because the sole web developer of a small company was having a baby and they needed someone to fill in for a few weeks. The recruiter thought I was crazy to wanting to (temporary) relocate for only four weeks, but the four weeks of work quickly turned into 8 weeks then suddenly I found myself negotiating a salary for a full-time position there.
The best path to finding a full-time job as a slightly under-qualified professional is to actually apply for contract work, part-time, or temp work.
It isn’t quite as easy as it seems unfortunately. For this strategy to work well, you have to have really great communication and interpersonal skills. People will most likely want to keep you around first and foremost, because you are incredibly productive, but it is almost equally important to be a pleasant person to work with. This is critical, as you begin to enter this industry, people move around a lot, and if they have a good memory of working together with you, they will serve as a potential resource for future opportunities.
Getting Promoted to Senior Status
Regardless if your first full-time job is at a startup or a larger corporation, you'll find yourself with a bit more free time on your hands. Steps 1 and 2 of this transition is like working on your own startup and you're constantly "on" hustling to get your foot in the door. Using this initial transition to settle in and relax is probably a good idea.
When you're ready, there are two key points for this final stage:
- For the most part, you hacked your way into the field. Now it's time to go back and relearn everything correctly.
Learning your programming language by just using and building isn't enough to make the cut. You need to have a deep understanding of how your language works the way it does and can clearly (and effortlessly) articulate why things work or behave the way they do. Part of this just comes from time and experience, but the other part comes from learning from the best people in your industry.
Don't have access to the best experts in tech for your language?
Yes, you do. Every language has a well recognized book written by some of the best people in tech. If you hate books, learn to learn from them. For technology and programming, it will be the cheapest price for undeniably the most valuable knowledge you can obtain. For me these books were: Professional JavaScript by Nicolas Zakas, Practical Object Oriented Design by Sandi Metz, and The Algorithm Design Manual by Steven Skiena.
- Knowledge is only one facet of several (some of which are out of your control) that will determine your promotion.
Almost every company has a rubric for what it takes to become a senior engineer. Senior engineers will typically have adept debugging abilities, deep domain knowledge of a language and company codebases, knowledge of good design architecture, experience in delegating work and setting reliable expectations, good teamwork and communication skills, and finally some experience in mentoring.
Note that management will make the argument that you should already be doing these responsibilities to be qualified for a promotion. Seek out what your company's requirements are, and be sure to track your work and accomplishments on a daily basis. At the moment, there isn't a particular all-in-one solution for tracking your work and accomplishments which is why we're building Rize.io—to help software engineers track their work to better advocate for a raise, promotion, or new job faster.
Unfortunately, many factors outside of your control have a huge impact on whether or not you will receive a promotion. Depending on the cycle, there might be a limited number of promotions available and many people to compete with. In some situations, companies can halt promotions and raises altogether if finances are a bit tight. Regardless, making the most compelling case for yourself will give you the best shot.
Final Thoughts
Getting into a software engineering job and hitting senior status is only the beginning of a career. You could go into engineering management, product management, be a principal contributor, do entrepreneurial work, start a startup, etc. I often view software engineering fundamentals as a core skill set that sets you up to virtually do anything. Where you take it from there is up to you, and the possibilities are almost endless. Good luck! 🍻
Top comments (5)
Nice writeup thanks. Althoug i am a bit sceptical about this fast progression. There are also many intermediate developers that stay on this level about some time. But maybe is title progression different in different companies.
One thing i really took of this article is the ebook. Can you also suggest this version, from a different author, but including 2019 ES6 amazon.com/Professional-JavaScript... ?
cheers mate
Your skepticism is justified. There's a lot that goes into promotions other than your raw ability as a programmer. A lot of luck in timing is a big factor, and I definitely think the timing worked out in my favor.
I can't say I know that author, but it does seem like the same book. I'm sure it's equally as good, if not better. Cheers! 🍻
Great advice for anyone entering software! This certainly applies to me, my first role as a software engineer was as an analyst, if that says anything.
Nice post. I got my foot in the door from a job posting on Craigslist.
Hey Will! I co-founded #WOCinTech Chat, the initiative that created the photo you used in this post. Just wanted to thank you for using it :)