After giving my board exams in 12th, I was required to enlist in SCDF on May 2015 as part of my National Service (NS) obligations. I had secured 96% in my board exams, which was good enough to secure an admission at the National University of Singapore (NUS). I had initially applied for a Bachelor of Engineering degree program in Electrical Engineering as I wanted to continue learning physics at a higher level and apply concepts I had learnt in Electrodynamics and Mechanics classes back at high school to solve real Engineering problems. Admittedly, my greatest source of inspiration was my dad, who had studied the same subject in college for his Bachelor’s and Master’s. However I had a change of mind after my discussion with my dad when I had passed out of recruit phase and was well settled into my new role as an Admin assistant at the National Service Training Institute (NSTI). Given my stellar results in the Computer Science subject and the rising demand for Computing professionals, my dad encouraged me to think of pursuing Computer Science at the NUS School of Computing. The admission criteria for getting into the School of Computing was more stringent as compared to the one to get into the Faculty of Engineering, but he said that it was worth a shot if I was truly interested. As I reconsidered my decision to apply to the Electrical Engineering course, I realised that I wasn’t sure if I really wanted to go into Engineering of my own accord or because my other peers were applying for Engineering courses as well. I didn’t know how Computer Science would turn out, but I decided to try something new and take the gamble of switching the course. To my fortune, I was accepted into the Computer Science course.
One of my regrets during my time in NS is that I did not try learning Computer Science concepts or practicing programming on my own over the weekends or after work. I assumed that I would learn more in depth in college anyways, so I didn’t need to spend the time doing that before college. I’d like to clarify here that one can learn programming in college and still succeed in the Computer Science course. However, I would have had a better time during the CS1010X (Programming Methodology) course that I had taken as I was completing my NS, had I spent more time refreshing the concepts I had learnt back in high school.
Even though CS1010X was an introductory course, it was much more rigorous as compared to my high school course. The Professor who administered the course swore by the “sink or swim” methodology used to teach such courses there. Of course, we were not left completely stranded and the Teaching Assistants as well as Prof himself were quite helpful when we ran into any issues. However, Prof made it amply clear that they weren’t running an “Apple Genius Bar” service to guide us through each small technical issue and we were expected to research solutions to our problems as far as we could. This would turn out to be quite useful later on, during the course and after I had completed it, as every developer has to go through the journey of interpreting stack traces as they debug their programs, often on platforms like Stack Overflow. It takes a lot of time to get proficient at the art of debugging and it also depends on your experience with the particular programming language and project in question, but it helps you learn and ramp up quickly. This is something that I think most beginners might miss out in the beginning if they continue to follow along with tutorials or watch them passively without working on programming exercises and projects that employ these skills.
I haven’t yet mastered coding and I do spend a lot of time trying to figure out why I am running into a particular issue even now after I have completed my undergraduate Computer Science course, but I think that all of this is a part of a learning process that never truly ends. I started writing this post as I was reading through Ali Spittel’s tips to beginners, as a way of reminding myself about how I started and what I can learn from my own journey that I can now apply to my work as a QA Engineer.