Should I Take CS3216?

In my first post, I didn’t know enough to address “What is CS3216?”. In this concluding post, I’ll leave a few words so future students can make an informed decision before they decide to take this module.

CS3216 isn’t about how well you code

First, let me start with an excerpt from my first post.

… CS3216 sounds like an exciting, fast-paced module that forces you not only to write quality code, but to focus on developing useful products, and bringing them to market.

While the second and third points hold true, I’ve found that quality of code is not the emphasis in this module. As Yang Shun commented, you find that it is rarely possible for you to achieve all three aspects in the cost-quality-speed triangle. We saved on costs by using inexperienced developers, ahem us ahem, and needed to push product quickly, resulting in a lack of focus on the quality of our code.

Of course, I’m sure this is not true for all teams. Some of the teams had really experienced developers with years of experience and, from what I’ve heard, were stringent in ensuring code quality, going so far as to perform code reviews on others’ code. Fortunately or unfortunately, I didn’t end up in such a team.

CS3216 is about product

While code quality may not be emphasized, product quality is still heavily emphasized. Consumers don’t care how disgusting your code base is as long as they have an amazing time using your app. This means focusing on making your app simple to understand, easy to use, and beautiful.

The first three assignments are about ensuring you know the bare minimum to push out working web applications. In the final project, that’s where you need to push out your application to consumers in a span of 3 to 4 weeks, then spend the last 2 weeks building up your customer base. In the last 2 weeks, you also have the pleasure of collecting user feedback, and fixing up your app to make sure (1) it works (2) people like what they see.

For my team, it was mostly the latter. Our app wasn’t too complicated, and worked for the most part. What was important was making sure that users knew how the site worked, knew what to do on the site, and knew why they should use it.

Marketing isn’t just about your posters, or walking up to people and talking about your product. It starts with your product splash page, as well as the look and feel of your product.

What I learnt

At the start of the semester, I listed three things I wanted to learn through CS3216.

Coding

I’ve picked up Javascript through CS3216. I’m still not a master, but I know enough to fiddle around in Node, Express and Angular. I’m not all I imagined I would become, but I guess you don’t turn from a complete novice to a jedi-master in one semester. I think I at least qualify as an apprentice now.

But from what I learnt from CS3216, I was able to cook up a simple web visualization for another module in less than a day, something I wouldn’t have been able to do before.

Web Visualization

So in this regard, I guess I’m pretty satisfied, but I definitely still have a long way. I plan to pick up React during the December holidays for a side project I’ve wanted to do since Orbital, but didn’t feel I was capable of building at that time.

Product Development

In this module, I’ve learnt about product validation, conducting UI tests, as well as how to go up to complete strangers to pitch my project. The last one was surprisingly not that terrible an experience, possibly because I was picking friendlier-looking faces, and left the tougher ones to Patrick hehe.

Working in a multi-disciplinary team

This batch of students didn’t have many non-coders, but I had the privilege of doing 2 assignments with one business student in each. It was really helpful to have them around so we could focus on the coding while they worked on product validation and user testing.

I did backend-coding for all the assignments, and had a great experience working with amazing front-end coders Larry and ZhuoHan. We faced less issues with integrating the front and back-end than I anticipated.

Last Words

I’ve learnt a lot about web development in CS3216, and while it was a terrible burden at times, I don’t regret taking it. That said, I think that this module would be best suited for students with strong web development experience. The better you are at coding, the more time you can spend focusing on developing your product. Personally, I wish that I had come in with better skills and more knowledge, then maybe our codebase wouldn’t be the mess that it is now haha.

If you have zero web development experience, I would advise against taking this module. You’re asking for it LOL.

Written on November 19, 2016