Why I switched careers from Aerospace Engineering to Web Development

November 9, 2020
––– views

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.

Table of contents

I enjoyed being an engineering student

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.

A high-school student who had to pick a career
A high-school student who had to pick a career

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.

Third year group project team
Third year group project team

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.

Working as an engineer is very different from studying to be an engineer

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.

Noise testing facility at NASA's Stennis Space Center
Noise testing facility at NASA's Stennis Space Center where I worked for a few weeks [thepointsguy]

Unfortunately, the role and I weren't made for each other:

  • I enjoy solving Math and Physics problems. However, the problems I solved at work were mostly logistical. Indeed, most engineering problems concern the logistical problem of utilising available human resources and machines to solve a problem within the given time and cost constraints. The R&D problems that I perhaps would have enjoyed were outsourced to universities.
  • I prefer to work alone for the most part. In my role, I hardly had any time to myself and was in meetings nearly all day.
  • I prefer to work on one problem at a time. However, I found myself with too many tasks to juggle, which was mentally exhausting.
  • I prefer proactive, slow and steady work. However, most of the work I did was reactive and even 'crisis management' like.
  • With a high workload and low resources, I was always in a high-pressure environment. My company was also actively trying to downsize. I couldn't see how my interests and development would ever be prioritised in such an environment.

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.

I discovered a passion for coding

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.

Python logo

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.

To learn modern software development practices, I'd need to leave engineering

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.

  • They lack essential software development tools, restricting developers from achieving their full potential.
    • Microsoft Excel and VBA are severely overused to make programs. The logic behind the calculations is neither easily readable nor testable.
    • In older companies, engineers may need to interact with programs running on Unix machines from decades ago which have yet to be replaced.
    • Data is stored as text files or spreadsheets on network drives that have loose access controls rather than on secure, regularly backed-up databases.
    • Software usage is restricted to an allowed list. Getting access to anything not on the list is near impossible. Developers cannot access the latest developer tools or open-source code. Nor do they have admin access on their laptops. Paranoid leaders prefer to secure Intellectual Property behind an overly restrictive firewall, even at the cost of productivity.
    • Forget CI/CD. There is not even a central git repository manager (like Github or Gitlab) so that developers can collaborate easily.
    • There is no easy way to spin up servers to deploy web APIs. Web APIs provide a language-agnostic way for applications to talk to each other directly. Without them, applications sit in silos, and slow, unreliable humans are required to interface between them.
    • It is tough even to share static web applications such as this blog.
    • Access to IDEs is limited. Even free for commercial use IDEs, such as VSCode or PyCharm, may not be on the list of allowed software.
    • No access to Macs. Only god awful Windows! I acknowledge that this perhaps wouldn't be a big problem for most.
  • Processes (mandated documentation, reviews, etc.) have to be followed to develop new software - even for a ten-line application. The documentation and review slides are seen by more eyes than the actual code! It disincentivizes software developers to create and share code.
  • Larger software development projects are outsourced. Investments are made into big projects based on monolithic rather than micro-service based architectures. These typically take multiple years to deliver any value, that is, if they are not scrapped halfway. Agile is a foreign concept.
  • No clear career progression route for software developers nor very many senior developers to learn from.
  • The IT strategy is bonkers. A lot of buzz words like digital transformation, AI etc. are thrown about, but the leadership is not interested in tackling the fundamental problems as listed above.
Urgency without clarity on digital transformation
Urgency without clarity on digital transformation

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.

A vicious cycle
A vicious cycle

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.

Python logo
Does it matter if the spreadsheet is wrong?

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.

My desire to find happiness outweighed my fears

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.

Please share! 🙏
Get emails from me about new articles 📮
--- subscribers
Prefer RSS? Subscribe to my RSS feed.