People reviewing a printed diagram beside computer screens displaying code

The change started earlier than you might think. Before university, I was choosing between computer science and engineering. I went with civil engineering because I liked the idea of working on something tangible. But my interest in technology was already there, and it didn’t take long after starting the degree to wonder whether I’d made the wrong choice.

I remember thinking: I should have picked computer science.

Finding my way into programming

I decided to finish the degree. Alongside the regret, I had a belief that I could learn programming myself. There were courses online, tutorials, documentation and even computer science material from Harvard. Choosing civil engineering didn’t have to close that door.

By my third and fourth years, I was finding more opportunities to write code within the course itself.

In fluid dynamics, I started looking for things I could automate. During finite element analysis, I remember writing MATLAB code to analyse beams. I began learning Python too, and my interest kept growing.

That changed how I approached the degree. I still wasn’t convinced civil engineering was where I wanted to spend my career, but I was enjoying parts of it much more. I would look at a task and start thinking about what I could build to help with it.

Could I automate this calculation? Could I write something that saved me repeating these steps?

Programming gave me a reason to get interested in problems I might otherwise have found difficult to engage with. I wanted to make things, try them out and see whether they worked.

An opportunity at Mott MacDonald

When I started working as a civil engineer at Mott MacDonald, I arrived with some programming experience and a lot of interest in doing more.

Someone recognised that and brought me into the asset management team. That was where my path towards full-stack engineering really started to take shape.

I hadn’t become an expert during university. I had enough experience to show that I was interested, willing to learn and happy to get involved. Having the chance to use those skills at work gave me somewhere to take them further.

Looking back, my path towards building web applications was getting started before I’d really settled into being a civil engineer.

Career path
  1. Civil engineeringA degree, and a growing interest in code.
  2. MATLAB / Python automationFinding problems I could solve by programming.
  3. Mott MacDonald asset managementAn opportunity to use those skills at work.
  4. Full-stack engineeringBuilding web applications, from the database and API to the interface.

Learning by building

I took a lot of Udemy courses, but I didn’t really learn anything until I started building things hands-on.

That meant writing code myself, breaking things and working through the problems until I got them right. I often didn’t know what I was doing, but trying to make something work gave me a reason to understand it.

That was when the learning started to stick.

Learning cycle
  1. BuildTry to make something work.
  2. BreakFind the parts I do not understand yet.
  3. InvestigateWork through the problem.
  4. Try againUse what I have learned.

Then back to building, with a little more understanding each time.

Looking back at the decision

I did regret choosing civil engineering at the time. I don’t want to rewrite that feeling into a story where I knew everything would work out.

But the degree gave me places to start programming. MATLAB, Python and automation became ways to explore the thing I kept coming back to. My first job then gave me an opportunity to take that interest seriously.

There wasn’t one moment when I had the whole transition figured out. It happened through smaller decisions: writing a script, taking a course, building something and putting my hand up for work that involved code.

If you’re studying or working in a field that doesn’t feel quite right, I can’t promise your route will look like mine. What helped me was finding opportunities to practise before I had a clear path into the industry.

I started with the problems in front of me. Over time, those problems led me towards the work I wanted to do.

What civil engineering gave me

Not enjoying the course and being grateful for it can both be true. I completed a master’s in civil engineering with an average above 75%, and I’m proud of that, especially given how uncertain I felt about the path I’d chosen.

The degree gave me more than a qualification or an introduction to Python and MATLAB. Applying those tools to fluid dynamics and other engineering problems taught me to look closely at the details, question my assumptions and check whether an answer actually made sense.

Attention to detail is probably the most valuable thing I’ve carried into full-stack engineering. In civil engineering, a mistake can have consequences for people’s safety. Checking your work is part of the responsibility you take on when people will depend on what you design.

Web applications carry responsibility too. They can affect people’s work, their data and, in some settings, their safety. I bring that same care to the web applications I build: looking beyond whether something appears to work and paying attention to the assumptions and details underneath it.

I’m grateful I studied civil engineering. It gave me opportunities to discover programming, a master’s degree I worked hard for, and an approach to engineering that I still carry with me. I changed what I build, but the responsibility to build it carefully has stayed with me.