Next month, December 9, 2020, it'll be one year since I became a software developer. Deciding to leave engineering and find a job in tech was difficult. It was especially challenging for someone without the privilege of a British passport nor any substantial previous experience in software development. However, through a combination of perseverance and sheer luck, my dream came true. In this article, I revisit my motivation for changing careers. I hope that this will be useful to anyone in a similar position.
As an A-Levels student, I had no idea what I wanted to be when I grew up. I knew I loved Physics, Math and Computer Science, but that didn't help me narrow down my career options. At the time, I leaned heavily towards Physics and Math rather than Comp Sci. I enjoyed learning to code for my A-Levels and had an excellent teacher whose classes I always looked forward to. However, I didn't find the programming language we used, Visual Basic, appealing.
I went on to do Aerospace Engineering at the University of Bath, UK. I loved being a student. Some lectures fascinated me so much that I couldn't go to sleep at night! In my 3rd year, I learnt Matlab. I liked coding again, but Matlab, much like Visual Basic, didn't excite me. I gravitated towards Aerodynamics and Turbulence, mostly because I found them mind-boggling. The things that we struggle to understand, hold a strange power over us.
I aimed to become a researcher and professor, staying in academia. Sadly, my research ambitions were destroyed when, in my final year at university, I was rejected by all ten universities that I applied to. Luckily, I had an offer in hand to join a graduate scheme at a reputable aircraft engine manufacturer that I had already done a couple of internships with. With a heavy heart, I entered the industrial world. To my surprise, I preferred the industrial world to the world of academia. I liked the increased focus on delivery, and I enjoyed being part of a team rather than the solitary figure that I imagine most academics to be.
After a year and a half long graduate scheme, I was excited to get a permanent role in the Noise team. Turbulence & Noise was my most favourite and challenging subject at university.
Of course, reality rarely measures up to our expectations. On the bright side, I had an incredible team of highly inspiring people around me that I enjoyed working with. Working for an aircraft engine manufacturer also meant an abundance of exciting and challenging problems. I was the Noise work-stream lead on an engine. I was responsible for the delivery of various milestones such as designs, engine tests and for acting as an interface between my company and the air-framer.
Unfortunately, the role and I weren't made for each other:
There were stark differences between studying engineering and being an engineer. Whilst the former gave me a sense of purpose and happiness, the latter I found draining.
In my last attachment of the graduate scheme, I worked for the Noise team. I was asked to create a Python program to parse various text files and display plots. I had to learn Python first since I had never used it before. For the first time, I fell in love with a programming language. Writing in Python feels like you're expressing logic the way it is meant to be; concise and pure.
I forced myself to use Python actively for the work I needed to do. I would do calculations and plots in Python instead of Microsoft Excel. This route sometimes cost me more time as there was a learning cost. I built my own Python library to make my day to day work easier. I also started engaging with other software developers at my company.
One evening, following a presentation at work, I was chatting with the presenter about the limitations of Python for UI development. He recommended that I look into web development and React.js in particular. The web was complicated to get my head around at first, but before long, I was having more fun writing JavaScript than I ever did with Python. Whilst JavaScript is not quite as neat as Python is, it opens up the possibility of creating User Interfaces. Front-end or UI development, where you can see and interact with the thing that you're developing, is immensely satisfying.
The obvious next step was to move to a software developer team. However, I was
on a UK Tier 2 VISA. The visa restricted me
to work for my company in a Design and development engineer
role only. I'd
need to apply for a new VISA. First, my company would have to advertise a job
vacancy nationally to prove that there were no suitable workers already living
permanently in the UK, aka a
resident labour market test.
However, my company had a hiring freeze on at the time and wasn't able to do
this.
That was my cue to start looking for jobs externally. Several factors persuaded me to search for jobs in the tech industry rather than engineering. As far as I'm aware, most engineering companies are lagging when it comes to software development technology & culture.
Smart, determined employees, could deal with and solve these problems if it were easy for them to effect change. However, that tends not to be the case. Change/progress happens too slowly, in order of years. Outdated, risk-averse and unambitious IT leaders block progress.
If the company is also struggling financially, then a vicious cycle ensues. Naturally, the priority for a sinking ship is to stay afloat. In other words, money is diverted away from investments for the future to activities that keep the lights on. This makes it even harder to make profits. I sympathise with the plight of such companies, but this is capitalism. You snooze, you lose.
I hypothesise that these problems are characteristic of the engineering industry globally. They collectively failed to keep up with innovations in software development from the 90s onwards. In November 1987, MS Excel was released on Windows. The resultant massive productivity boost meant that engineers didn't need to be able to code as much anymore. The shallow learning curve for a spreadsheet was just too seductive. For the next couple of decades, the industry missed out on innovations in web development and cloud architecture amongst others. Now, they are struggling to survive in the new digital world. Basic software development skills aren't taught to engineering students in most universities even now, but that's a topic for another day.
The only way I could experience and learn the latest software development practices was to work in the tech industry. There were also a few other things that appealed to me about the tech industry. Software developers command higher salaries compared to engineers. I wanted to live in a big city like London, where tech companies tend to be based. Their principles and cultures resonated with me, e.g., Amazon's leadership principles or Spotify's culture wonderfully explained in the video below.
Was I throwing away my ~£100k degree in engineering, four years of studying and another four years of working in the industry? What if I failed to get a job as a software developer? What if I failed at being a software developer? What if I regret leaving engineering? What if I miss the Science? What if it's too difficult to make new friends in London? These were questions that I considered carefully.
The only thing I knew for sure was that I was not happy where I was. I didn't fancy living if it meant continuing on the career trajectory that I was on. Coding made me feel satisfied. A shot at happiness was worth any risk.
In late 2018, my request to move to a software development team was rejected and I immediately began applying for software developer roles in the tech industry. It wasn't until October 9, 2019, that I got my first offer. Why did it take me a whole year? How did I work towards my goal? I'll explore these in a follow-up article. Please let me know what you thought about this one or any questions you have in the comments below.