What I Wish To Learn In CS3216

It was requested that each of us CS3216 student create a new blog and write about what we wish to learn in this module. I think I would’ve done the same even if there wasn’t such a requirement. What’s more interesting than to document the process of learning?

I’ve heard stories about this module. Both good and bad. About how sleep will be sacrificed, about how it’ll be so worth it after the module is done with. To me, pain has always been in connection with learning. Painful learning is what I call it and it has been the way ever since I step foot in NUS. Hopefully, I’ll enjoy another semester of painful learning.

I’ve just finished my freshman year, so what am I doing taking a module that’s meant for mostly year 3s? I would admit that my other modules weren’t really boring me. I still find algorithms interesting, and functional JavaScript a beauty. But they did not excite me either. CS3216 gives me a project of my own, a playground of thoughts (and of course lots of code) to let me develop something I can truly call my own. Putting my small side projects aside, building something from scratch for production level is something I wish to experience.

That was a really general idea of why I’m taking CS3216. But here are the specifics, here are four things that I wish to learn from CS3216.

Business Idea Pitching

It’s easy to be comfortable with just coding and leave the pitching to those who know how to talk. As a programmer/developer, that may seem ideal. Hell, in a way this could be a design pattern, where each function does one thing and one thing only. However it is also important to be able to let our thoughts and ideas be heard. If an idea cannot be explained in simple words, imagine how would the codebase look like in the future.

The ability to wear multiple hats is pretty important. In other words, I wish to be more versatile and not only be able to code, but to be able to present my ideas and thoughts well.

Deployment practices, and anti-patterns

Coming from a frontend background, I’ve been only exposed a little bit to DevOps and deployment processes. Now that a project has to be deployed on Amazon Web Services for full production scale, I would want to set things right and follow the common conventions. I’ve read this article that mentioned organization rather than technical being the most important skill in software development. Writing code that works is important, but to grow and further develop a product, the initial codebase has to be well organized. CS3216 gives me the opportunity to start something right from scratch. To write clean, scalable code. (Well, I’ve been told that this state of codebase is a unicorn, but that doesn’t mean we shouldn’t try)

What it means to be full stack

In CS3216, I wish to be able to touch on every layer of the tech stack and contribute in ways more than just frontend. Dealing with mostly frontend development during my internship, I long to have more hands on experience with the other roles of web development such as databases and cron jobs. At the same time, I would want to perform at the same level of competence for frontend.

This should give me a better idea of what it really means to be ‘full stack’.

Expand my toolbox

Currently I’m doing a Rails tutorial on railstutorial.org, to add on to my toolbox. Of course I wish to add a few more frameworks and tools to my knowledge bank over the course of this semester. Expose myself to more ways that things are being done and understand the pros and cons. That’s why I pretty much like that we have 3 major assignments in total. Gives me the space to play with three different technology stacks as I wish.

Last but not least, I would love to create something so awesome and kickass that people actually want to use. This should be my main goal of this module. To come up with a polished product that could potentially be used by thousands of people.

Here’s to a semester of awesome fun and lack of sleep!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s