Switching to software development as a career

Posted: Edit on GitHub

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.

Chancing upon web development

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.

About 6 months before I left the company, I stumbled upon web development when a colleague brought me on to work with industrial IoT projects with him. My work involved gathering machinery data from IoT devices and routing them into web-based dashboards. From time to time, some customizations were required and I had to dive into the code base. I had to research and learn JavaScript and before I knew it, I was hooked. For the first time in a long while, I was able to create something from scratch to solve a particular problem. There was a great sense of satisfaction.

Many nights of research went by and my YouTube watch history went something like the following:

What is JavaScript? -> for loops in JavaScript -> What are APIs? -> What is web development ? -> How to become a web developer in 2017? -> How to become a Digital Nomad? etc

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.

Push factors

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.

Getting prepared

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 knew being an iOS developer was out of the question because I was using a Windows machine (and I still am). I didn't do much research into android development as well 🤷‍♂️. In the end I narrowed it down to web development with JavaScript as my language of focus as I already researched on it during work. There were also tons of resources for learning fullstack development with JavaScript. It just made sense for beginners like myself as it seemed to be the lowest barrier to entry to get an understanding of the 20%.

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):

  • Knowledge of at least one front end JavaScript framework (React, Angular or Vue). This automatically implies a good understanding of ES6 JavaScript is required as well.
  • 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.

If you're lazy to go through JDs, then The Web Developer Roadmap and freeCodeCamp are definitely top resources to help with your learning curriculum.

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.

Conclusion

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.