Friday, April 16, 2010

Learnings in CS3216

CS3216 is coming to an end, and I have to say I have got to know a lot, if not learnt as much. Technically, I am better at PHP and database queries than I was; however, truthfully speaking, I am better than I was a sem ago because I learnt some real-life principles and appreciate the process of solving real-life problems, most of which do not seem to have model-answer solutions.

1. People are not like you
This is the most important lesson I learnt from CS3216. I seldom think in other people's shoes, although I know this thing called "think in other's shoes"...
-- Don't be so lost in your idea, people don't buy it
This is for the finger breaker, which is one of the (in fact the second) proposal for the final project. We had fun designing and playing, and we thought it is gonna be popular. However, feedback was not so encouraging. Don't know why, maybe they deliberately tried to demoralize us... :p But nevertheless their cold feedback made me understand the fact that I was, we were purely appreciating our own work. Who the hell think their own work isn't great?! Have a show of hands?? :p Learn to think like a customer -- they don't care how much code you wrote, how much work you've done, they only care if that thing is fun or WORKs.

-- Don't be so proud of your design (of UI) , people think it is cluttered or they are completely lost (dont know what to do).
It happened again in the finalized (the fourth) idea for final project -- I don't mean our UI is cluttered, it's fancy right? :p Instead, people are lost.
We again thought from programmers' point of view: "huh, so when this button clicked, XXX will happen, then you look for YYY there lah!" -- Users don't know. (Hate to say this, but you really want to succeed, you have to make your stuff usable by the dumb mass with average IQ<40...)>

-- People are not like me; they may be better at other things -- like marketing/sales/presentation, it is better to outsource such jobs to them.
I'd like to take this chance to say that I owe Reuben and Wai Hong a billion thanks. In the 1st and 2nd assignments, they were responsible for all the write-ups/reports for my group. At first, I thought, "OK, he is the biz guy, he should do it." / "Wai Hong is busy with his FYP, writing reports rather than coding may save some time for his FYP" ... Actually, they did their jobs so well that I never felt that there were such things as reports until the final project, where I do all the writing stuff. Now I feel reports are monsters... for me.
Different people are good at... no, I should say gifted in different things. Some in coding (not talking about myself, still got a long way to go), some in talking business with others, some in articulating the idea and work in a seamless way... For programmers, outsourcing writing/sales jobs is definitely more efficient and EFFECTIVE.
So, my point is "if you can't make it, there are people who can do it quicker, better and with less pain."

Really think in other people's shoes, you will find actually many things are not too hard to understand. Try to think like a user, a teammate, project lead, employer...

2. Ideas are cheap, execution matters.
Just random thought first, somehow these words come to me: "Although nature is defining, nurture still matters a lot." There is some similarities: ideas needs execution to be a real piece of work, which will not be so good if the idea to start with is not good; talented people needs proper education (nurturing) to be real zai ones, but people born with not so much talent will never achieve that much. OK, that's it for random thoughts. Let me continue...

Why ideas are cheap, now that ideas, like nature, is defining? Because there are different groups of people trying that idea at the same time. So in the end, execution matters.

3. Some ideas are impossible for a student, but easily done for big companies -- life is not fair...
Someday in a final project discussion we thought of building our on iPhones, but hell they do not have APIs ready... Then we read news, Apple says they are gonna do it, they have the data, they got the servers, they got the money and people... their idea is basically the same -- event-based social networking. S*** on them... Life's not fair. If only I am in a big company now.
Ok, never mind, Apple's gonna crash that day Jobs dies. *evil*

Looking back, throughout the whole module I have been in trial and error... Setting up web server, getting more familiar with Linux stuff, forgetting the damn server is in the U.S and lost hairs wondering how the hell cannot get the time correct ... etc in assignment 1; but that was better as least we know what to do from Day 1 during the Facebook assignment. In assignment 2, we faced a choice: make a music scores wiki or a CBU (and pirated) game? It took long to decide -- Wave is quite laggy down here in S'pore, real-time game is really kind of nonsense. But we somehow decide to trust Google's gonna solve that problem somehow soon.. Development for Wave was not so painful, but debugging was damn painful -- Google likes to cache -- we have to rename the xml after we made changes to it... Fortunately, it didn't take long to figure out. :p

Coming more in the final project, we proposed; we rejected our own idea and reproposed; met prof Ben and got killed; proposed again; started work and built the "iPhone looking" website; we refined our idea again and *really* started building the till now... quite messy... It is so good for you that you know exactly what you want to do from Day 1.

Inspired by The Last Lecture:
Like yourself -- everyone is unique, and they should love themselves.
Yes, I am not overall the best; I am neither No.1 in any field, but I can always find something that I am better at than every person I've met (not to be proud, but I do think so :p). Don't laugh at me, better at playing sports/cyber games/guitar also counts here. :p I mean, if you cannot even find one thing that you are better than anyone you know, I feel so sorry for you. Otherwise you got some reasons to love yourself. Any reasons. That could the reason you are not replaceable. That is your value. Any value. :p

Know yourself -- know the strength, weakness, opportunities and threats.
Knowing oneself is important as that is all you have to begin with. Then it comes to knowing people and understanding the world (齐家 治国 平天下???).. That's too high level... Living one's life to his full potential is already very zai liao. :p

Last words
CS3216 taught me about life. I have not solved them all; nevertheless I appreciate the experience and I'd like to thank prof Ben, all guest lecturers and all classmates: thank you for bringing me this wonderful experience!

another insomnia night (in fact it's early morning now)


  1. I like this quote leh:

    "You are not a beautiful and unique snowflake."

    But I love and believe in myself anyway.

  2. -- Don't be so lost in your idea, people don't buy it
    This is for the finger breaker, which is one of the (in fact the second) proposal for the final project. We had fun designing and playing, and we thought it is gonna be popular. However, feedback was not so encouraging.

    Totally agree. I even convinced Tomithy that a person always like his own creation.
    It is very hard to stay distant and look at your own work, criticize it. But at the end, we are building applications for common users, that's why asking for their opinion is important

  3. @Hung: yup. the Chinese saying "旁观者清" -- The outsiders see through -- hits right to the point. :p

  4. @shannon: haha, nice quote. I wonder why it is said as even snowflakes are not exactly the same, like Da Vinci figured out that no eggs are the same (no matter on the 2D canvas or 3D space lah :p)