Switching to software development as a career
Making a career switch is no easy decision and there are many factors at play. When I made the decision to switch, it was a result of common reasons you'll find online, tons of research and to a certain extent, luck.
In this post, I try my best to distill my personal reasons for the switch and how I prepared for it.
I joined an engineering MNC and was working in the industrial department doing technical sales of heavy machinery.
When I joined the company, I thought I would like the work. It was my first job out of university and I was very naive. Don't get me wrong, the company is a good one, but after a year or so in the department/industry, I started to lose the drive and motivation as I had no passion for the products or the industry.
Many nights of research went by and my YouTube watch history went something like the following:
After a couple of months of intensive research, I decided that I wanted to become a web/software developer. Who knew that would be the case when I started working on IoT projects. It was my situation at work and definitely some luck that had a part to play in helping me realize that I wanted a career switch.
Other than my circumstances/luck, there were definitely other push factors that made my decision to leave the company a lot easier.
As mentioned above, I had no passion in the industrial sector. Some people might like it, but I wasn't interested in the hardware that we were selling to cement plants, shipyards or factories.
One factor, which might seem trivial to some people, was commute time. Travelling to the office for me took 1.5hrs and another 1.5hrs to get home. That's a total of 3hrs! To put that into perspective, after a month of going to work, I would lose a weekend (48hrs) of my life travelling. I definitely wasn't paid enough to lose a weekend like that.
Fear of regret was also a factor. I knew I wanted to become a developer but I was also afraid of failing. Thanks to the YouTube gods of recommendation, I chanced upon one of Gary V's video on regret. I didn't want to regret 5-10 years down the road for not trying. If I failed, at least I knew I tried my best.
For my personal situation, I realized quiting and switching ASAP was the right move. I wasn't married, my parents were still in relatively good health, I was only 2 years into my professional career and I had the strongest drive to learn about code. I just couldn't stop coding during the nights after work. If I didn't switch ASAP, who knows what life might throw at me to make my decision to quit even harder.
Research, research, research. I was on YouTube, Medium, freeCodeCamp and reddit looking at what was needed to become a developer. It was tough narrowing down requirements and deciding on what kind of developer I wanted to be. It was even tougher finding out the 20% of knowledge that was required to perform 80% of the work. I talked to a few people who were working in the industry and got some tips, resources and insights from them.
I discovered that looking at job descriptions (JDs) helped to narrow down the things I needed to learn even before I was ready to apply for developer roles. I highly recommend this as an approach to help in formulating your own curriculumn. Most software/fullstack developer JDs are very similar and they are very specific in terms of the tech they require for the role. The following is a non-exhaustive list of common requirements I saw on JDs in Singapore for full stack developer roles (it may differ in your country):
- If it's a React developer position, it's very common to see Redux experience as an additional requirement or a "nice to have" requirement.
- Sometimes they require people with experience in Bootstrap, or Material UI or Foundation. But this is not that common.
- Knowledge of one (or more) backend language. Java is very popular. Node, GoLang, Ruby and Python were also highly sort after
- Experience with NoSQL / SQL databases (PostGres, MySQL, MongoDB)
- You should definitely know Git. Some companies put this down as a requirement but I personally think it's a given that you should know how to use Git.
- Big companies would like you to know test-driven development(TDD). Starts ups don't usually practice TDD strictly but most do some form of testing.
The last thing I had to consider was the amount of time I would allow myself to make the switch. Of course, anyone would like to have years to make the transition but that's not the reality. Personally, it came down to how much I was willing to see my bank account dwindle down to before I had to get a full time job again. After all my estimates, I gave myself roughly a year to get a job in software.
It was then time to leave my company and begin the career switch.
I mentioned serveral personal reasons why I wanted to make the switch. I think the most important of all was that I enjoyed writing code. The software industry is also one of the few where there's a huge online community surrounding it and anyone with an interest can find plenty of resources, for little to no money at all, to get started.
The main takeaways from this post would be:
- If you're contemplating a switch in careers, do your research and talk to people involved in industry. Know what you're getting yourself into.
- Make a plan and have a deadline. This should all be done before you leave your job.