Disclaimer: Opinions expressed on this blog are solely my own and do not express the views or opinions of my employer(s), past or present.
CS3216, one of the two premier Software Engineering modules at the School of Computing, National University of Singapore (the other being CS3217). These 6 characters, when uttered, literally strike fear into the hearts of SoC students. Thoughts of a hectic workload, sleepless nights and last minute bug fixes immediately spring into mind. Having gone through that and cleared my Software Engineering module requirements, from a purely “economic” standpoint (in terms of maximizing the net gain to oneself), it would seem pointless and downright silly for me to take CS3216.
Maybe it is. Especially when I’m at the final year of my undergraduate studies. But perhaps there is a reason for the module’s reputation and the aura surrounding it. If we take a look at blog posts from past students, we see some patterns, one of the more notable being this - most of them agree that while CS3216 was definitely not a walk in the park, it was a very good experience and they’ve picked up a lot from their journey. Indeed, learning is the primary factor why I’ve decided to enroll in the course. Without further ado, what I hope to learn in my CS3216 journey.
1. Working better with people
One of the things that past project teammates, mentors, friends and co-workers have pointed out, whether explicitly or implicitly, is that there is room for improvement for my people skills. I very much agree with them, which is why I placed this as the first out of three main things I wish to pick up from the course. This is not to say that I’ve waited all along until the course to do it; I’ve been continuously working on this and my stint at Viki has taught me the importance of working well with people and that of a harmonious work environment. I believe that CS3216 will take things a step further.
2. Getting my hands dirty at the business side of things
I’m sure we are familiar with products that are technically superior to their competitors but failed for some mysterious, non-technical reasons. There must be something that their competitors did right and they did not; either that or they must have made some mistake(s) which their competitors didn’t. I have a hunch that the outcome is due to the “defeated” companies screwing up (pardon the language, I cannot think of a better phrase) on the business side of things.
As a software developer, I know that we as a group are generally obsessed with the technical side of things (we would have chosen a different profession otherwise) but may think of the business side of things as inconsequential, messy, not putting in much effort, poorly run, etc. We tend to attribute the success of a product or company solely based on its technical accomplishments but we rarely take a look at or give credit to the marketing, PR and business decisions that led to the product’s and company’s success. As a group that prides itself on cool, logical thinking, it seems that our biases and judgements are not logical at all.
Increasingly, I am seeing that the quality of a product and its technical merits, while important, are not the only factors affecting a company’s success. Just like the technical side of things, I believe that the business side of things matter. CS3216 presents an opportunity for me to learn more about this since I can hitch on the business people in my teams.
3. Having the courage to do things
Very often, the difference between achieving a goal and not achieving it does not boil down to one’s ability or lack thereof, but whether one has the courage of taking the first step and carrying it on from there. I’ve witnessed good things happening to people in my life due to them having the guts to set out to do what they want to do.
In some ways, choosing to take CS3216 was an act of courage for me. After all, I had to make a conscious decision of going through a Software Engineering module again (not the most pleasant type of course one can take at NUS), of meeting people who are still unknown to me and working with them, along with the risk of encountering bad teammates (I hope not), etc. To add fuel to the fire, there is a part of the course that I’ve been feeling very uneasy with - the talent showcase. I’ll state right here that I have no performing arts type of talent to showcase - I am not a performer and I have never aspired to become one. Heck, I even considered dropping the module because of this but eventually I decided it would not be wise to do so and that I should just stick to it despite an ominous welcome party.
To return to our main topic, there are probably many unknowns that I’ll have to deal with in the course, many of which will be beyond my control. Many decisions will be made and some of them will not be easy. I hope to gain more wisdom to make the correct decisions and the courage to stick to them.
Alright, this is it. Looking forward to an exciting semester with CS3216!