Saturday, April 17, 2010

After going through hell, you will be stronger

So prof ask us to write a final blog entry summarizing the lessons we have learned after a semester. It is very difficult as we have learned incredibly a lot of things. I will try my best to summarize some of the most important ones. 

Looking at the first note, I expected myself to learn more about selling, team working and programming. I also expect to learn a lot from our peers. Now at the end of the semester, I think I have learned more or less all of these things:

- You can only work with your best when you work on something you believe in! As a team, don't start working when not every one has trusted in the idea. Convince him, or question others if you haven't believed in it. Once I believe in something and work on it, I can easily go crazy for it.

- Team working is essential. AND it's difficult. There are certainly limit of what one person can do, thus combining force is the way we can achieve the common goal.

One important thing when looking at a person is looking at the context, the emotions. Criticizing is not the best way to deal with a problem or a conflict. Finding a better solution is more important. And in case you can't find a better solution, don't complain.

I believe in team working, it is better to make everything clear, and express all your thinking. If you don't like something, address it. If you need something, speak. It is worse if you try to suppress your feeling. It will stack up, worsen your feeling everyday and one day, when you can't handle the heap, it will explode, causing a lot more damage. Another reason to be clear and direct is to avoid any assumption being made. It's the worst of them all when you have to combine different part of works and realize that they are not compatible. Don't believe me? Read this post from Carolyn's blog about team working.

However, I am aware that sometimes I am not straightforward enough in expressing my ideas, my situations to the teammates. This is partly because I am still not very good at English, thus sometimes it feels very bad to explain something. (I should have tried harder.) Sometimes, my teammates also closed their mind / work (about their issues) that deterred my temptation to speak out loud. Sometimes, I worried that my ideas weren't right. I am certainly afraid that complaining too much will hurt others' pride and might as well hurt the team relationship. And maybe I should wait a little more, things will get right.

Thinking more about it, most of the time it is not the nature or desire of the person to not do the right thing. For example, the work is so hard (and we're run out of hard focus) that the need of some thing to divert our mind arise. Sometimes you neglected the work (AND WE KNOW IT!). All we need (or want) is someone to poke us, point us to back to the right way. And then we will appreciate it, instead of having bad feeling about others*. I am not pointing to anyone specifically, so please exclude yourself and excuse me if you find it untrue. But it is what I got from my observation of  different people.

Now I believe that the best solution in team working is always being clear. Everything must be transparent. And discussion should be carried until we can resolve and have a final agreement (even if that agreement is something like "Let's do it this way first" when a solution is not clearly better than other). As a team, we should agree on this at the very beginning.

- I have also learned a lot about programming. Certainly there are new languages that I have learned, such as Java, PHP, Javascript, Flash (& Actionscript), Facebook API, SQL, etc. Certainly there are new method of programming I have learned (more about), such as OOP, Event-driven / GUI programming. However, there are something much more than that, which is very hard to write down in words. Vaguely, it's a kind of generalized stuff my mind created automatically while learning all these stuff. Basically now I think I understand a lot more about programming, how the languages and/or the methodology work. I am also more confident of my ability and what I can achieve with it.

- Some important and insightful lessons:

+ Idea is cheap. Execution matters. After the final project, now I fully appreciate this sentence. Idea alone is just the first, smallest step to succeed. And more often than not, there probably are many people with the same idea as yours at the same time. It is more important, however, is how to execute the idea. To carry the idea to succeed is a long, difficult journey.
+ People is different from you. Period. Still, we tend to forget this simple idea in real life.
+ Life is about choice. Do the right thing. Make decision fast. (This is combined of 1101S, 3216, and added after I read Haocong's post)
+ Communication is the key. My skill has improved quite a bit after 3216. However, I sure know it is still lousy. There is nothing worse than wanting to say something but you can't. I will work on my speaking and communication skill harder.
- Prof's common sense lessons are sure important. Many I have aware of (well, it's common sense), but many was new to me (common sense yet not so common). But all sure make me think. That makes 3216 and his class different. And that's why I enjoy them. Most generally, you learn to observe yourself, people around and the world and learn from them. You learn to never stop learning, to work hard. You learn that you have to find your passion. In 3216, prof's lessons assured me that I was going the right track. No, it's more like I have found a lighthouse to lead me to a desired destination. I still need to go through the difficult way to reach it.

And  hey buddy, stay assured, if you haven't found your passion, continue seeking for it. What I can suggest is trying different things, meeting different people, one day you will find yours. And that is what I am doing.

- 1 thing unique about 3216 is the awesome students. It is the first (and probably the only) class in NUS that I find so many passionate and open people. Each person is skillful in a different area, like programming, design, game design, team leading, etc. And each person provided me a different view of things. I love to talk with everybody, to observe how people works and interact. Looking at them inspires me to strive harder. Even hearing their problems providing me insight view of something. Of course there are also limitations and weak points in each person, however, there are still time for us to learn and develop ourselves. I would love to stay in touch with all of you guys, 3216s = )

Last words, 3216 taught me many things about myself, my friends, and the world. Now I understand myself a lot more than before, both about my abilities and my limitations. I am proud to say I am stronger. 3216 is sure the best class I have ever taken.

*...I can be very indisciplined - earlier on Saturday night I sat down to watch an animated video, putting off coding the UI, and Biyan said: "Cedric, I need to plug in my code into yours soon. So please work?" and I felt very guilty about that...
 -- excerpt from Cedric's blog post.

P/S: I realized I was mistaken about the blogging requirement. I had this misleading idea that I would only blog if I can find something non-trivial to add on to a lesson, or that I would not just write down the lesson as it was. Why is it wrong? It is certainly better if I can add original thought to the lesson; however, writing (scripting. copying) the information I received alone has its own value, that is strengthening the lesson in our mind. From now on I will try to do that (write down) any lessons I learn.