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.
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!