I love attending last lectures for some weird reason. It is usually during the last lectures when the profs share their life experiences and wisdom; stuff that cannot be obtained from lecture notes or the internet. This week, I had the honor of attending two last lectures, the modules CS3216 and CS1010S by Dr Colin Tan and Prof Ben Leong respectively. The semester has almost come to a close and it can be summarized with two modules - Yes, you guessed it, CS3216 and CS1010S. I literally neglected all other modules this semester and only did the bare minimum required for the looming deadlines. Not really a trait of a good student, but who gives? I know my limits and I do what I like.
Talking to Users
This is perhaps one of the most rigorous courses in NUS. We built four (?) products within a semester. There was barely any time for breaks. Although I don't think I leveled up as a developer by much, I think I improved a fair bit in product and aesthetic design. We were forced by Dr Colin Tan to keep talking to our users and that's what we did. Whenever I met my friends in/outside school, I would get them to try my product and observed how they interacted with it. Initially, the UX of the product was pretty bad, and I ended up having to teach my friends how to use/play the product.
But I can't be around to teach every user how to use the product.
Thus we gathered feedback and refined the UX. Thanks to valuable advice from Dr Colin, Su Yuen, and our mentors from LambdaMu, Abhishek and Ivan, we finally got a clear direction and knew what to do with our product. I actually learned ethnography before in my Design Thinking classes when I was still in Mechanical Engineering. At that time, we weren't really building a product, just ideating, fantasizing, learning a lot of theoretical concepts and doing calculations on paper. The curriculum in Engineering was built as such, and that's a problem that I dislike about Engineering. But I didn't really talk to people then, partly because I found it hard to sell an idea without a prototype.
CS3216 taught me the importance of user testing and validation. Although the friends that I showed the product to found it difficult to use initially, once they were taught and started playing, all I could see were smiles on their faces while they were engrossed playing the game.
Execution over Ideas
Ideas are cheap.
I first heard this from Prof Ben when I was taking CS3217 but only truly understood it awhile later. This is evident in the many hackathons that I went to in Silicon Valley. Some teams had radical ideas but didn't have the ability to pull it off within 24 hours. Soedar and Joe Chee were my hackathon buddies in the valley and I'm glad that both of them could execute ideas really fast and well. We had decent ideas, but none of them were really radical nor original. However, we won stuff. Ultimately, it all boils down to the execution, whether a small team of 3-4 could complete a prototype of their idea within 24 hours that sufficiently demonstrated the value. Good design helped of course, that's where I contributed to. Heh.
To be honest, my final project idea of having multiple users interacting with a large display is not a new idea. While doing my research on advertising use-cases of our product, I found at least 10 over examples of big brands using interactive billboards for advertising. However, I bet these brands spent a huge load on creating these advertising apps when they could have done so at a much lower cost.
I think my team executed Una well. A month ago, we had nothing. We were busy with midterms for the other modules that we have neglected in the first half of the semester, so we started on the final project late. But thanks to the blazing speed at which Soedar, Chun Mun and Viet Tien coded at, today, we have 3 products to showcase on STePS day. Certainly, good design and planning helped in the process.
Thoroughly enjoyed the last lecture today! As usual, Prof Ben gave a wonderful last lecture that I'm sure inspired many of the students to work hard and possibly consider a career in CS. I talked a little about the key takeaways from CS1010S and their future directions, to one of my tutorial classes and hopefully they were inspired as well. On hindsight, I should have inserted some pictures into my "Last Tutorial" slides, like what Prof Ben did.
Learning How To Learn
I agree with this a lot. I first encountered this when I first took CS3217. Subsequently, I felt that this skill of independent learning was so important, it is required everywhere. I had to learn independently during my NUS Overseas College internship, learn Python independently to teach CS1010S, learn how to explain programming concepts to a class of freshmen who have no prior experience in programming. Nobody will be around to force you to constantly learn and practice, but that's the only way to improve. Hence having an innate desire to learn is crucial.
This is something I'm still struggling to grasp. This semester I worked everyday and only went home two/three times (I stayed on campus). The crazy workload this semester was a result of underestimation on my part. Taking CS3216 and tutoring for CS1010S wasn't a smart move. These two modules alone are enough to make up a 20 MCs workload but on paper are actually worth only 9 MCs in total. I'm actually glad if I have a weekend without any appointment or activities so that I can coop up in my room and do more work. But I'm beginning to realize the importance of people and broadening my horizons beyond my own major. Learning can be done through interaction with others too.
Perhaps I shall join some designer community or take up a CCA next semester. (: