How I’m managing a CS Masters while working full time (Part 1)
This post (and subsequent ones) is my attempt at reflecting on my experiences after a couple of semesters studying for the NUS Masters in Computing, Computer Science Specialisation. Personally, I need to write about an experience before I feel like I’ve digested it properly, so I’m writing things out so my brain can make sense of things.
On a broader level, I’m also writing this for the benefit of other people who may be thinking of the same thing. Before I started this course, I was surprised how little I could find on the web about other people’s experiences — why they had decided to go for further qualifications, how they were managing their time, whether or not they found their courses useful, whether they were enjoying themselves.
I would have found this information really helpful about a year ago, so I decided to also write for people who would be in my prior position. Nothing here is prescriptive, but perhaps it will give you something to consider.
My background
- I come from the sciences, but not from the “hard sciences” like Chemistry and Physics. I’m a Biology graduate in Zoology and Plant sciences. This meant that for three years I studied topics like how worms have sex, and how most of our genome is actually viral DNA from ancient infections. It was all very fun and intriguing. But compared to a subject like Physics, Computer Science or Engineering, it wasn’t very mathematical or quantitative.
- Still, I managed to pull together a portfolio of work that got me an entry-level job in the tech industry. The exact details of this are the subject of another post, but to set up the story here, my first entry into coding was a chance event. One rainy night, while still a university student, I walked into a seminar hosted by Code First, Girls. One of the panelists had just given up her lucrative graduate job offer to join a coding bootcamp. Another panelist had studied Philosophy, Politics and Economics student, but had also taught herself how to build websites and was going into an entry-level job in tech. After that night, and some asking around and research, I became convinced that one could learn just enough to get one’s foot in the door, and then slowly learn on the job. So that is what I did.
My motivations for pursuing further education
- After about three years after that event, I started to want a more solid foundation in the fundamentals of computer science. At work, I was working on mostly machine learning projects. However, I could see that most of the value on these projects were created not by applying sophisticated algorithms, but by automating data pipelines and models to run securely and reliably. In other words, the value came from the projects software and data engineering components. The problems I was facing — how to get a machine learning system to run safely and reliably, whether to expose a model’s results as an API or write the results back to a database — were problems with roots in engineering and CS rather than statistics and machine learning.
- Given this, on my own, I had started to read about things like database indexes, about race conditions, and about clean code. However, I always had the feeling that I wasn’t building a solid mental model of the knowledge just by watching youtube lectures and implementing coding projects. The key red flag here was that I never seemed to retain the finer details of the material in the long-term. I found I had trouble generalizing my book knowledge to new situations, and I couldn’t see around corners to anticipate edge cases. Knowledge is best built up in layers over time, but I was scrapbooking a patchwork of concepts onto my brain like a crazy quilt. Things just weren’t sticking.
- I’m not sure whether I was having holes in my self-study techniques, but I think one root cause was also that the structure that is normally present in a study semester was not there. I was haphazard to going from a Youtube lecture series to a conference talk. It meant I wasn’t building my knowledge base systematically, in a way where I build a strong foundation before moving on to the next thing.
Eventually the pain of not being able to extend and apply myself to these issues I was facing became quite severe, and so I put in an application to NUS and crossed my fingers.