Naaman Tan

Naaman Tan


Software Engineer with experience in NLP/CV research. If you need an engineer who can quickly prototype concepts and scale them up, I could be the person you’re looking for.

Reflecting on leaving mechanical engineering, two years later

Posted on January 15, 2023

Two years ago

Just about two years ago, it was the January of 2021. I got an email from the School of Computing, indicating that my application to transfer my course of study to Computer Science had been successful. I distinctly recall the moment - I was at the robotics lab with my team, working on the gimbal mechanism for the Standard Robot. It had been a pretty good day actually - development was going well and we had a good amount of momentum going. I also recall that it was the third round of ModReg - for the uninitiated, ModReg is the module registration system at NUS, and having 0 modules registered in the third round usually spells death - and it was the exact situation I was in, given that I had now been newly promoted to a Computer Science major.

But, as I would learn is a very common thing in the School of Computing, I reached out to what might as well be the fairy godmother of all of us - Ms Toh Mui Kiat, and she sorted me out with some of the most important fundamental classes in CS - OOP, Discrete Structures, Computer Organization, Probability and Statistics - all classes I would come to love (and hate at times).

That semester would begin what has been the very wild, often times wonderful, but equally frequently emotionally, mentally and physically challenging journey that I have been on for the last two years. But it’s been a good two years, and I figured I want to reflect on it.

Why I joined mechanical engineering

We have to go further back than two years ago for this. Back in 2019, I matriculated as a double degree student in mechanical engineering and economics. Why mechanical engineering? Well, it was sorta related to why economics as well. In much of my teens, I - and I suspect a good number of my peers at the time, too - was very idealistic and going through my own struggles with my health and in school. And this idealism manifested itself as a deep desire to do something somehow so great that it would outshine all of the things I had thought of as my failures and my points of shame. In particular, I had settled on the decision to enter the civil service, and so I thought covering my bases in mechanical engineering and economics would make me this special individual.

But also, I didn’t really know what I liked. I mean, I had this big dream and mission, but I was 18, sheltered for most of my life, barely going beyond the coddling of a classroom (perhaps H3 research counts, but not much more) to have a good sense of what I liked, what I didn’t, and what I was okay with doing. It gave me comfort to “follow the crowd” - except that my crowd was not my peers, but my role models - plenty of figures of authority in my life had been engineers, and I figured, “hey, why not”, and counted on this misplaced idealism of mine to derive meaning from the work I’d be doing.

It was not quite meant to be though, and cracks started to show even before I began school. I turned down the seemingly-always-coveted-overly-prestigious PSC Scholarship (the application process in itself is it’s own story), for many reasons, a lot of which was to do with my reservations towards engineering. But the train had already left the station - I had already accepted an offer from NUS to study the double degree, and I figured I’d just go ahead with it. I wish I could say I thought it through and decided it was a risk worth taking, but really, it was me intentionally ignoring what seemed to be warning signs in my head.

My three semesters of engineering

The first three semesters were… interesting. Interesting is often the word one uses to describe gifts they don’t like in an effort to be polite, and to put it lightly, I found engineering (at least at NUS) to be a load of horseshit. At least for the first two semesters. Math courses were more about exams than derivations and proofs, labs were overly simplistic, and I hardly learnt anything more than what I’d seen in JC.

It added to my sense of disillusionment towards engineering. And I started realizing that me not liking engineering really could be a real problem. So I spent a lot of time doing random projects - some more than others related to my courses of study - with the intention of finding something that I would go “this is it, this feels right”. After all, you gotta explore to know what you want. And at that point, all I knew was how to take exams, and not much else.

At the end of my second semester, interestingly, I had a chat with this friend of mine, Jessica - and she mentioned that she was considering changing her course of study from Chemical Engineering to Environmental Studies. She, too, hated engineering.

But my seniors insisted - engineering in year 1 is dumb, year 2 will be cool, and will kick your ass. So I decided to keep my mind open, and try another semester of engineering. Year 2 came along - and I carefully selected my classes. I hadn’t told anyone of my idea of changing course - it might not come to pass, after all, but I knew I needed to begin exploring. So I did 7 modules - some more focused on engineering (fluid mechanics, strength of materials, introduction to material science), some more relevant to my second degree in economics - I wasn’t giving this up (statistical computing, accounting for economists), and the class that would change the trajectory of my life - introduction to machine learning. I also threw myself into a robotics club and begged to work on all systems - mechanical, electronic/control and software systems.

I dominated the curves that semester as I got straight A+‘s in what has been my best semester academically to date. The robotics project was also going well. But delving deeper, what should have been satisfaction in topping the cohort in my engineering classes was instead a sense of emptiness - the feeling that I could never see myself using this knowledge. Instead, I had deeply and intimately enjoyed my introduction to machine learning class - a class all my peers hated with a passion, going so far as to self learn deep learning from textbooks. I knew at that point I had to change.

Changing my course - thank you Ms Ng

Sometimes, people ask me why I changed my course, and often when they do so there’s this smirk they have thinking I did so because of the annual GES results indicating that CS graduates were well paid.

It isn’t quite that. In fact, it isn’t that at all. I knew I liked machine learning, because god, there’s something so interesting and wonderful how mathematical statistics combined with a bunch of linear algebra can basically spit out magic. But I also had a chip on my shoulder - CS students were (and still are) known to often be a bunch of irritatingly-smart and competitive individuals. I was doing well in engineering, and having no real background in the math I now do today with relative comfort, I was genuinely afraid of being mediocre. Not just my grades, but in just, well, everything.

But I made my peace with it - I figured at some point that I’d rather be mediocre than hate not just my major, but the prospect of finding work I found no meaning in. At least, in my naive mind at the time, I figured at the very worst, I’d be a poorly paid, but not-unhappy software engineer. And that turned out to be a profound bit of growth that has carried through in a lot of the decisions I’ve made to this day.

It was my secondary school teacher that gave me the push I needed. I hadn’t always been a good student - in fact, I was a very bad one in most of my secondary and high school. I often cut class claiming to be sick and did not complete assignments, and at one point it got so bad in high school that I was out of class more than I was in it. One classmate even once commented “oh, you’re here today” in surprise.

Anyway. This teacher of mine from secondary school - Ms Ng, is someone who looked past my misbehaviour and often gave me the benefit of the doubt. She was kind and nurturing, and her class was one I always paid attention to, because I owed it to her to at least repay her for her faith in me. She invited me for a bike ride (we road bike) with her husband and another friend of hers. This friend of hers was incidentally a software engineer at Google, unbeknownst to me at the time. On this ride, I talked about my thoughts of changing my course, some of my concerns, and Ms Ng essentially said something along the lines of “do you want to take this risk when you’re young, or when you’re 28 and have children?“. It was enough, and I got home, filled in the application form, and the rest is history.

Thanks for that, Ms Ng.

The last two years

In the last two years, so much has happened, and I’ve grown so much. Changing my course of study was terrifying for a lot of reasons.

I did it anyway though, and it has been one of, if not the best, decision I’ve made for myself. And I can’t help but feel proud about how far I’ve come.

My first year in CS could only be described as brutual but wonderful. In that year, I studied discrete stuctures, OOP, computer organization, statistics, data structures & algorithms, database systems. I remember the shellshock I felt after many of the midterms and finals for these courses, in particular the one for discrete structures with my dear friend Aryan. I remember the hours and hours of studying to get good at these topics while the lecturer whizzed by at what felt like an overwhelming pace. I deeply remember literally not understanding pipelining and caching until the night before the final, when things suddenly just clicked.

But I also remember that in all of these times I struggled, I thought, well, it could be worse - I could be studying mechanical engineering.

My second year in CS was better - like most things in life, your fundamentals compound, and having pretty solid fundamentals really helped me to learn quickly. I did classes on software engineering, machine learning, advanced algorithms, OS and networks, and boy oh boy did I love them.

But don’t get me started on the CS internship grind - the thousand leetcode practices, hackerrank assessments, and the other thousand hours spent on applying and the sense of exhaustion and little hit to your self esteem that comes when you get an email that starts with “Thank you for your application”.

Where I’m headed

Nonetheless, the last two years have whizzed by, and I’ve grown a ton both from my course work and internship experiences. I’ve done close to a dozen CS courses, interned at DSO, the Institute of Data Science and an insanely-intense-but-wonderfully-nurturing startup in Hypotenuse AI, and these experiences have in equal parts tested me and fortified me as an engineer and general nerd interested in computing.

I’m fortunate enough to be headed to ETH Zurich for the coming semester, an interesting internship at Palantir in London after that, and then another one at Apple after that. It’s going to be an exciting year, and god, I feel so lucky that I can say that I love what I do.

Sometimes, I feel scared that I’ll get lost in the seemingly neverending grind that is a career in CS, but I have some faith that I’ll always come back to the thought of “well, it could be worse, I could have been in engineering” to give me some solace and perspective.

I’m hoping for another good year ahead, and if you’ve read this far, if you, too, are thinking of changing your course of study, let’s have a chat.