Post

How I Transitioned from Maths to Software

I am a mathematician; I studied Mathematics BSc at the University of Bristol, and I have loved mathematics ever since I was a kid. Pursuing maths always made sense to me, it seemed like a natural choice. But why coding?

In my second year of University, we had a compulsory module, Mathematical Programming (Python). I hated this module at first. Bear in mind it was the first year after the pandemic where we could have classes in person again, so thankfully tutorials and labs were fun, but the lecturer had provided all lectures online. There is only one thing mathematicians love more than maths, and that’s being lazy. We call it “working efficiently”. So having watched 0 lectures and being saved by my coursemates each week to upload the courseworks in time, I was faced with the final group coursework, worth 60% of the module. I could barely define a function in Python.

The last 2 weeks before the deadline, I spent at least 10 hours per day in the library, sometimes getting in as early as 5am and leaving at night. My blessing was that ChatGPT had just become popular, and I mastered using it for coding very fast. Since my logic was already quite good because of my degree, it was easy to just ask it for examples of syntax to write my functions. I literally used it as if it was my lecturer; I would ask it a lot of questions like “how do I write an if statement”, “what are the pros and cons of for and while loops and when should I use each one”, “what’s a clean and efficient way to use nested functions”, etc. I’ve always been a big believer that getting your hands dirty with a project, and just jumping into it even if you have zero experience and skills, is the best way to learn. This project ended up being incredibly fun and educational. When I finished, just in time, I felt very confident in my Python programming skills, and I was awarded a 90% mark for the project.

(You can find the project in the next article, and perhaps take some inspiration to start your first hands-on Python project.)

The summer of the same year, I did an internship at Bloomberg, but in the Financial Solutions part of the company, not coding related. It was there that I realised that I didn’t want to pursue that path because I missed the thrill of deriving an equation, of deep logical thought and of structured processes. So I took the allotted self-learning sessions to shadow and network within the Software Engineering department, which gave me a great insight into the sector. Any other free moment, I would spend on my computer watching YouTube courses on HTML5, CSS3, JavaScript, and using the Bloomberg University resources to learn how to use Shell, Docker and SQL. After 10 very intense weeks, I felt like I was ready to pursue coding as my career.

But as my final year of University started and the existential anxiety kicked in to find a job asap, I found it extremely hard to be taken seriously as a programmer. I had some personal projects on my GitHub, but no real experience or a way to prove I could actually code. Most online exams and interviews were also extremely difficult, as I was not familiar with data types and algorithms, nor with optimisation of code and time complexity. Plus, having learned how to code by myself, I had a lot of bad coding habits and structural mistakes that usually blocked me from getting a position. I decided I had to find a different method; I looked into my university’s career service and found something called the SME (Small and Medium Enterprise) Internship Scheme, where startups list job opportunities and the university covers 140 hours of your salary.

Through applying to many (MANY) of those, I managed to get hired at MyAdventureDiary Ltd, a social media startup in Bristol. I was tasked with helping in the design of the app, and then building it as a Full-Stack Developer and the main point of contact between the front-end intern and back-end developer. We were using Flutter for the front-end and Java for the back-end, both languages I had never touched before, but leveraging my fast learning skills and efficient use of ChatGPT, I was building the UI for a page per week within 2 months.

My experience has made me draw a clear conclusion; you don’t need any technical experience to develop skills. Just throught starting a project of your interest, getting your hands dirty, and using availableand free resources like online courses or generative AIs, you can start building projects you wouldn’t have imagined possible within months.

This post is licensed under CC BY 4.0 by the author.