Saturday, May 2, 2009

Wrapping Up

We've just finished grading all the Final Projects and the following are some of the final points that I would like to make to wrap up CS3216 for AY2008/2009 based on what I've seen in the Final Project reports.

Forming the Dream Team. I did mention during the semester that we should seek to find the best possible people when we form teams (if we have the option of choosing). Some accused me of being elitist. :-P

Well, the truth of the matter is that due to some leftover influences of our education system, I think some students haven't quite understood the meaning of "best". I am happy to note that at least one student got it and I would like to quote Khoa, "The best is not the best, the best is the most suitable." I think Khoa got it. :-)

The moral of the story is quite simple (and not rocket science): great, you come up with an idea to take over the world. What you need to then figure out is how to break that idea into sub-tasks and what needs to be done for each of the sub-tasks. Then try to find the people who are the best in their respective fields for each of these sub-tasks. This is not the same as assembling a team of Dean's Listers or elite programmers. In fact, for Facebook apps, a whole team of elite programmers without an eye for design is almost certainly a recipe for disaster.

Idealism vs The Real World. The key impediment to ideas that can take over the world today is not the dearth of ideas, rather, it is the the people factor.

It's easy to talk about assembling the Dream Team. It's not always possible to find the Dream people. Also, some of the ultra-talented people have personality quirks that make them impossible to work with. So, therefore, for all that's said and done about this dunno what notion of a Dream Team, the reality of life is that many a times, we have to settle for a less-than-Dream-Team.

The crux of the issue is therefore to understand what needs to be done and try our best to get the necessary resources to do it. Once the team is assembled, expectations may have to be adjusted depending on the available talents and skills.

The Power of Passion. Sure, skills and knowledge are good, but sometimes passion and dedication can make up for the lack of skills and knowledge. I have to admit that I am quite blown away but what two of the all-freshmen teams, MyCampus and Spree Kingdoms, have accomplished for their Final Projects. These folks knew NOTHING about web programming at the beginning of the semester.

Through sheer grit and determination, they not only survived, they prospered. That provides that attitude probably matters more than how much people know. :-)

Reject Dogma, Embrace Common Sense. The scary thing about being a teacher is that students sometimes actually believe the things you say. :-) I did mention during one lecture that I think the best project managers are the elite programmers.

As it turns out, at least two of the groups, i.e. MyCampus and Varsity Chronicles, didn't have a programmer at the helm - but they did well. So was I wrong? Maybe. Or maybe not.

The point of the matter is this - what I really said is that elite programmers are good project managers because they are best able to assess the proficiency of their programmers and thereby estimate the amount of effort and time required to deliver different modules of a software engineering project. If need be, they can also offload some tasks. My view is that I have most confidence that a software engineering project will meet the schedule if I have an elite programmer as the lead.

That said, project management is also about leadership. Strong leadership is also necessary in order to get the team to work effectively, so an elite programmer with no EQ will not make the cut either.

The point that I would like to impress upon my students is not to take what I say too literally or assume what I say is necessarily correct. The most important skill that students today have to learn is how to look at facts, analyze them and come to their own conclusions.

Common sense really helps because in life, we are faced with new situations all the time for which there are no textbook answers. To quote Justin, "(Varsity Chronicles) forces me to make decisions which I have no experience to rely on. All I have was my common sense, my understanding of the group's ability, and the feedback of my team mates to count on".

Think Harder, Think Deeper. I must say that I am very impressed with the execution of the Final Projects this year. The average quality of the Final Projects are somewhat higher than those last year. It's not so much that the students this year are necessarily better, but it's more likely that the workload this year was moderated better so that premature burn out didn't happen after the initial assignments.

It's not that the students this year did less work this year, but they didn't do quite so much for the assignments during the first half of the Semester which leave them with more energy for the Final Projects.

What I would like to highlight however is that I still think that most students are somewhat too focussed on the execution and implementation and have often failed to take time to take a step back to think about the bigger implications of their work and longer term strategic issues like marketing and user experience. Detailed comments will be returned to the groups with the project grading reports.

Just want to highlight again the following mantra: "More thinking, less coding".

CS3216 is all about the People. What makes CS3216 work is not so much Facebook or technology or any smartness in the way the course is structured (though there's indeed some sense in the madness). What makes CS3216 tick is the people. One of the points that is highlighted over and over in the Final Project Reports is how much the students have learnt from their talented peers.

First, I am honoured to have had the opportunity to work with an outstanding group of students, who never fail to surprise me with their creativity, passion and grit. This past semester has been quite "happening" and tiring (for all involved), but it has also been a lot of fun. I would like to wish my students the very best in their studies and future endeavours.

Second, I would like to take the opportunity to thank my team of dedicated teaching staff consisting of TA Goh Kok Wee and Tutors Chris Henry, Lim Yuen Hoe, Kent Nguyen and Chin Su Yuen. They have worked tirelessly to help with the preparation of the teaching materials and executed their teaching duties with professionalism and dedication. Without them, there would not be CS3216. :-)


  1. Wah directing the "elistist" back at me sia..

    Actually what I was trying to say is that what you necessarily deem the best, may not turn out to be the best. IMO, qualifications or grades shouldnt be the only factors to determine who's best. Dr Ben, you claimed that we should all find the best people in their respective field to complement one another to form the dream team.

    In my opinion, those are not enough. Even add very good EQ is not enough. In fact these are not the most important attributes to succeed. DESIRE, FAITH, PERSERVERANCE, GUTS which sums up to be ATTITUDE are the most important, what I'll define "best". I believe a mediocre person with very strong attitude can far excel than a talented person with mediocre attitude.

    Maybe a mediocre person will not get results as fast and good as a talented person. But I strongly believe eventually a mediocre person with STRONG ATTITUDE will get anything he want. Being the best is only sufficient to be above average, but to really go far and stand out from the rest, I think attitude is far more important.

    If you all have the time after exams, go read this book "Think and grow rich" by Napoleon Hill. The content is not really about what the title says, go read it and you'll know :) Btw the book is quite heavy, I have to reread many times to really understand :P

    P.S. I'm saying all that because I feel I'm a mediocre person (in terms of knowledge and skills) I'm just working on my attitude. :P

  2. I'm saying all that because I feel I'm a mediocre person (in terms of knowledge and skills) I'm just working on my attitude.

    Mediocrity is something that's in your head. If you are willing to do the PRIDE thing and do a little bit extra in everything you do, you will not be mediocre. It's not just about desire, faith, perseverance and guts. :-)

    The problem with this PRIDE thing is that it takes effort and not many people are willing to put in that effort. You also have to work smart and pick your battles.

    Mediocrity is a choice lah. :-P