Now that you’ve decided to become a Software Engineer, the first thing you need to do is determine which niche you want to target.
There are plenty to choose from:
- Web/Application Development
- Backend Engineering
- Frontend Engineering
- Full Stack Engineering
- Mobile Developement
- iOS
- Android
- Data Engineering
- Big Data Engineering
- Machine Learning Engineering
- DevOps
- Security Engineering
- Embedded Software
- Robotics
- …and others
If you’re not sure, Full Stack Engineering is a good place to start since it’s broader than the others. Specialized areas such as machine learning and robotics are popular and have solid growth potential, but my advice would be to not pursue those out of the gate since they are harder to break into as a career-switcher. You can always choose to move your career in that direction later if you want.
A quick note about data science: while that field involves a good amount of development, much of the code that is written by data scientists is productionized (i.e. put into a consumable form) by software development teams. This blog will not cover data science roles explicitly, but you may find that some of the topics discussed are applicable.
Once you determine what you’re targeting, then you’ll need to get some concrete experience in it. There are pretty much 4 options here:
To choose between those, you’ll need to consider 4 main factors:
- Time
- Money
- Experience
- Credentials
Each option is described in detail below, but I’ve included a table here to quickly summarize the tradeoffs.
| Time | Money | Experience | Credentials | |
| Current employer | π΄ | π’ | π’ | π΄ |
| Self-study | π΄ | π’ | π‘ | π΄ |
| Bootcamp | π’ | π΄ | π’ | π‘ |
| Master’s | π΄ | π΄ | π‘ | π’ |
Switching at Your Current Employer
TL;DR
Pros: Immediate, hands-on experience while earning your current salary
Cons: May waste time waiting for employer
This option takes some time since companies typically require that you at least transition your role or finish some project first. That being said, I would not give your company more than 6 months to transition you. If the timeline slips beyond that, you may want to consider other options. On the plus side, this option is essentially free since you continue earning your current salary and management probably won’t go out of their way to cut your pay.Β When discussing this option with your current employer, remember that you are your career’s best advocate. From the company’s perspective, they don’t have much to gain from transitioning you in the short term. (Of course, once you get your sea legs, a happy, productive, passionate employee is extremely valuable, but I digress.) Understand that this option may be a tough sell, but it comes with the tremendous upside of getting you experience immediately with the benefit of retaining your current network.
Self-studying
Pros: Cheap, choose-your-own-adventure
Cons: Entirely dependent on personal discipline, more legwork to demonstrate work to potential employers, potentially overwhelming amount of resources
Self-studying takes a variable amount of time, but is relatively cheap. How viable this option is really comes down to personal discipline, and whether you feel you can devote multiple hours per weekday (at least 2-3) and weekends to this. It’s hard to work 8+ hours a day and then come home and do more mentally intensive work.Β If you do go this route, I’d recommend setting up a personal study plan by combining a few courses from different MOOCs + some books. Remember that your goal is to learn enough to pass an interview, not replace an entire undergraduate CS curriculum.
Bootcamps
Pros: Structured, focused learning. Demonstrable projects. Focus on employability. Industry contacts (sometimes).
Cons: Expensive, large dropoff in quality and outcomes outside of top choices
Bootcamps are often the fastest, but also one of the more expensive options. Most bootcamps cost somewhere between 15-20k and require you to do them full-time for 3 months or so (meaning you’ll have to probably quit your job). However, at the end, you’ll have a number of projects for your portfolio and will have spent 3 months intensively coding so it’s honestly not a bad option. These days, there are also part-time bootcamps that cost the same and run longer, but at least you don’t have to quit your job or take a leave of absence. If you go this route, make sure that the bootcamp you select has a history of placing graduates into full-time roles.
Master’s Degree
Pros: You get the degree. Structured, focused learning. Demonstrable projects. Alumni network.
Cons: Expensive, large opportunity cost, don’t always get industry-standard / up-to-date experience
Getting a master’s is probably what most consider the traditional option, but unless you want to go into something like Data Science, Machine Learning, or Robotics, I wouldn’t recommend it. This option takes the longest (1-3 years), and is generally expensive for an on-campus student. You can do something like Georgia Tech’s OMSCS (which at ~6k is actually cheaper than bootcamps), but I think the most convincing argument against that for career switchers is that what you want to gain are the bread-and-butter CS skills that are usually taught at the undergraduate level. A graduate level course in machine learning is not going to teach you about basic data structures or big-O complexity. And as a Software Engineer (SWE), this is what you’re going to be tested on in interviews.
Interviews
Speaking of interviews, for every option above, you’ll have essentially 2 hurdles:
- getting an interview
- passing an interview
Transitioning at your current role or getting a master’s degree are the best options for getting you interviews. Bootcamps are also not bad since many of the top bootcamps have industry contacts and that’s usually part of their sales pitch. At the end of the day, recruiters are looking for either paper credentials (degrees, baby!) or real-world experience (code, baby!). They’re not going to sit there for 30 minutes and try to extrapolate your current experience into a given role. They’re mainly looking for keywords.
Once you get the interview, you’ll need to pass it. For this, you must simply work problems on platforms like leetcode and HackerRank. As you do so, you’ll need to be able to explain the time and space complexity (big O) of your solution. Other interviews will be technical discussions focusing on your previous experience. What this means practically is being able to discuss a project you’ve worked on in technical detail. Each of the transition options above include hands-on projects so be sure you can clearly and concisely describe what you made, including challenges you faced along the way and what you might improve in the future.
Regardless of which option above you select, you must choose a programming language and master it. What that language is is influenced by what you’re targeting, but both Python and Javascript are easy to get started with and fairly ubiquitous. By the time you interview, you should understand your language at an intermediate level.
My Path
My personal path took me through a combination of switching at my current employer (option 1) and self-studying (option 2), though it was Option 1 that was the most helpful for me. Self-studying has its time and place, but can be difficult if you have a demanding or technical day job (as it was for me). That being said, once I was doing software day-to-day, I would regularly do deep dives on just about everything I could.
I chose not to purse a master’s because of the expense (including the opportunity cost), and because I had just gone through a rigorous STEM program, and didn’t feel like doing it again. I believe I made the right choice in this regard, though I have certainly seen graduates of the GT OMSCS find success in the industry.
Final Thoughts
All that being said, you can successfully switch to a software engineering career using any of the options above. Understand that everyone’s journey is different and success is not linear. It will be easy to feel doubt and jealousy so the best advice I can give you is that once you’ve decided what you want to do, then do it. Don’t wait. Start today. I can’t emphasize that enough: doing something is much better than doing nothing. In the grand scheme of things, the disappointment you get from a bad course or project will not matter relative to the skills you pick up along the way and the context you gain on the industry.
You only have one life, so live it intentionally.
