© 2024 Jeremiah Yee

CS3216 – before and after

15 Nov 2022

CS3216 is probably the craziest module I have taken in NUS thus far. And I use the word crazy because I’m not sure what other vocabulary can describe the insane stress, workload, fun, excitement and euphoria that comes with it. While we had to write A LOT of reflections in this mod, I want to document the first and the final one, to contrast my journey after those brutal 13 weeks.

BEFORE (prompt): What do you hope to learn in CS3216?

The short answer – everything I can.

The long answer is, while it’s not realistic to completely learn the ins and outs of every single facet of the product design/software engineering process, I can narrow down my learning objectives to three broad goals. 

The first one, which I hold with utmost importance, is the value of collaboration and communication. I hope to learn as much as possible from every one of my teammates, as I believe that each member brings a fresh set of perspectives, experiences, personality and skills to the team. It is also exciting to envision the concoction of ideas and creativity that each group will come up with. One of the main struggles during my internship was that of stakeholder management and communication, as it was often difficult to reconcile the clashing priorities of people in various roles. While that variety may not be as large in CS3216, learning to communicate my thoughts effectively, achieve group chemistry and efficient cooperation, as well as pitch our ideas to the greater world out there, will certainly not be an easy task.

The second goal relates to the hard skills. I’ve dipped my feet into different sources of water (UI/UX, frontend development, marketing, etc.), but I’ve barely threaded ankle-deep. There will always be more to learn, and it’s essential to develop a growth mindset along the way. I want to further understand the objectivity of ‘optimizing for the user experience’, learn to utilize cool web and mobile technologies (i.e., PWAs, cross-platform scripting, microservices etc.), and discover the different ways of hacking a product’s growth.  A wise man once said, “the greater the circle of your knowledge is, the greater your contact with the unknown will be”.

The third goal will be learning how to add value. This is an abstraction, as adding value encompasses many things. I would like to add value to my various project groups by substantially and fruitfully contributing within my personal capacity. I would also like to add value to the course by just being in it and learning with everyone else. Finally, I would like to add value to the lives of people (i.e., the product users) in every product I play a part in building, regardless of whether it is in this course or in the future. One of the greatest accomplishments of software, in my opinion, is the meaningful contributions it provides to society. I expect the path ahead to be treacherous and steep, but I am ready to tackle it.

AFTER (prompt): So, tell us about your journey. Focus on important lessons you learnt as well as a summary advice for potential CS3216 students in future. 

To all arts majors who want to take CS3216:

Do it. Why are you even reading this? You should be starting to prepare your application already.

You’re hesitant? Worried? Want to know how it’s like for a fellow arts student? Ok, I got you. This is my story.

Apprehension

Damn, I actually got in. Most students here are from computing. I don’t know most of them.”

What if I can’t keep up?”

That was during the first lecture. 13 weeks later and I can still feel the anxiety. Foreign faculty, foreign module, foreign people (ok, not really) – you need to have some type of confidence level to not feel at least a tinge of apprehension. The best bet is to go with the flow, keep an open mind. Try to learn as much as you can. Try your hardest. That was the mentality I ingrained in myself from the very beginning. Of course, self-help can only get you so far. You need to meet new people, get things done.

I was lost during the gather.town session. Everybody was forming their groups, and I was struggling to find someone with open slots. Thankfully, the only 2 souls I knew from this module was Jiefeng and Maxx, and I hitched a ride on their connections for A2 and A3. But I needed a team for A1, and the very first stranger I talked to in CS3216 was Weiming. Luckily, her group had space and she was nice and welcoming (thanks Weiming and Yuming).

It’s not so bad after all

“My groupmates are fun and friendly.”

“UI/UX with no coding? I took this before in NM2213.”

Except this time it had to be done in 2 weeks, not 13. At least I was somewhat familiar with the concepts, and my teammates were really easy to work with. But there was an unusual amount of late nights burned for the first 2 weeks of the semester, which was a foreboding sign for things to come. The final 10-hour sprint before the deadline was spent doing up our 30+ page report. Admittedly, the hard work did pay off, resulting in a neat-looking student meetup app (ToGather) and some new skills (Figma, UX design). I’m still impressed by Chen Hui’s newfound iMovie skills.

My worst fear

“Public speaking… Hate it.”

“What’s a shocking new innovation out there?”

Now THAT is a legitimate dilemma. It is really difficult to find anything out there that doesn’t fall into the buzzword soup of AI, ML, VR and Big Data. There’s nothing fresh because everyone’s had a taste of that soup. But I learned that pitching really isn’t about throwing out buzzwords and trying to sound cool, it’s about selling the usefulness of your idea to your target audience. My group chose Neuro Rehab VR. In case you can’t seem to guess from the name, it’s an upcoming VR solution for neurorehabilitation. Jiefeng and I were definitely not the most confident speakers out there, but I think we did our best. Gotta thank Chrystal and Dylan for giving us pointers and making the slides look as sleek as possible. It was a great learning experience, and I think my presentation skills did improve a little.

And no, ‘arts major’ !== ‘good presenter’.

Coding nightmares

“What do you call an Internet application that believes in social reform? A… Progressive Web App.”

“I found a bug.” – Sherman Lim, 2021

Nothing hits harder than the thought of your QA/Backend guy sending videos of all possible bugs to the group chat.

We spent way too long on ideation for A3. I lost count of how many times we went back to the drawing board (spoiler: a lot). This project was more technical-focused, but I think we all wanted to create something we believed in. We were quite proud of the finished product, and it was well-received by the people we know.  

The submission week for this was suffocating. I was the frontend guy. There were many frontend bugs. Juggling this and midterms, coupled with learning the ropes of building a PWA – all in the span of three weeks; there’s only a single image that can perfectly encapsulate this:

I lost a lot of sleep and a lot of weight. Thankfully, I was surrounded by capable teammates – 2 strong backend engineers (Sherman, Yitao) and a really on-the-ball PM (Maxx). Their skills, knowledge and hustle inspired me to do better.

No rest for the weary

“Ok guys, it’s 23:55 and we just submitted our A3 report. Let’s take a break for a few days.”

Nope. Right after our A3 submission, we had a meeting with Yangshun at 12am, our external advisor for the final project.

The immediate transition from A3 into the Final Project felt like changing MRT from the red line to the purple line at Dhoby Ghaut station except that your next train is in a minute.

We spent another week in the washing machine of ideas. And one more to really decide on our vision for the platform. We also had to learn an (almost) completely new stack following the recommendations from Yangshun. He didn’t force us, but we accepted the challenge in hopes that it will make our lives easier in the future (it did). For me, the hardest part of the engineering was GraphQL and Relay. I spent 5 hours at Coffeesmith from 10pm to 3am pouring over the Relay documentation, and till today I still don’t quite comprehend everything. Coffeesmith should really thank the Relay technical writer for the extra coffee purchases.

You know how they say Stack Overflow is your mentor?

Sometimes, it quite literally is.

After overcoming the initial barrier, building and iterating on new features was fast. The economies of scale indeed came to fruition.

Users, users, users!

“What do y’all think about this?” – me to my groupmates (x100)

Notwithstanding Relay, the hardest part of the final project for me was the UI/UX. Much of my sleep was replaced with agonizing over the user interface. Maxx and I spent three hours choosing an appropriate icon for the sidebar, which we eventually ditched. All of us had big dreams for the platform, and I knew that if we were to host thousands of users, we needed a perfect user experience. It still isn’t remotely close to perfect, and perfect is impossible in the UX world, but that was the standard I set for myself. Countless user interviews, iterations, and bug fixes later, the current Whispers SG was born.

STePs

“Winning was no surprise…

Because the organizer accidentally leaked the results beforehand😐

Jokes aside, it did come as a surprise. To be honest, I had little expectations. Every other CS3216 project was amazing in its own way.

I really only had a single main goal – making a difference. I wanted to build a platform that adds value to society, that people will use, and that might become the next big thing. Every other milestone was a good-to-have. Recently, I’ve spent way more time than necessary reading the user posts on Whispers SG. It has been a whirlwind of feelings; sadness and sympathy for some of their personal stories, amusement at the entertaining ones, and a comforting assurance that they are able to share or vent on our platform.

I am extremely grateful for my teammates, Yangshun, Uncle Soo, and everyone else for allowing this project to happen.

 Stay hungry, stay foolish

“Is this the end?”

Probably not. Given our large user base and organic traffic, we do have plans for Whispers SG. After all, there’s only so much you can do in a 13-week module. What matters is how you apply this experience moving forward.

If you’re aspiring to take CS3216, there are three questions I’d like you to keep in mind:

  1. Are you passionate about tech?
  2. Do you care about adding value to society?
  3. Are you a team player?

If your answer is a resounding ‘yes!’ to all three, then everything else will fall into place.


Back to blog