Wednesday, January 13, 2010

On Success

Further on the question of success, I chanced upon the following Anthony Robbins video. Title says "Wealth Mastery" but Anthony Robbins deals with the issue of what it means to be successful and why some folks are outwardly successful, but extremely unhappy.



We were talking about failure and celebrating failure. The following is a cool story about failure and more failure and even more failure ... and then success:


Tuesday, January 12, 2010

Hard Questions

First, I would like to apologize to the class that today's lesson ended way late.

Like I said in my previous post, CS3216 is "like a box of chocolates". I never quite know what I'm going to get. Truthfully, it's pretty scary.

The Show-and-Tell this year was much longer than either of the Show-and-Tells for years' past. The main reason is that we had a *much* larger number of musicians, singers and dancers. Also, lots of the students showed stuff on their laptops.

This year was much more show than tell and those who told, told a lot. :-) Previous years were mostly tell and not so much show.

I guess I am quite good at cutting people off if they talk to much -- but I don't know how to cut people off in the middle of a musical piece.

My consolation to the class is that future lessons, except the Facebook application seminar, are not likely to go overtime. Remember that I'm the guy with the wife and two screaming babies at home.

If I keep going home past 11 pm, it will not be long before I have my ears twisted off. I think I have nice ears. I would like to keep them attached to my head thank you. :-)

Anyhow, typically I ask students at the end of the first lecture if they have questions and I expect "normal" questions.

Today, the students asked two questions and I didn't have the time to answer them so I said I would answer them in this blog. So here I am stuck with two hard questions.

First question: What is success?

Second question (asked by Wai Hong after Show-and-Tell): What is passion?

What do you do when confronted with hard questions? You Google - and I did exactly that.

I estimate that there must be at least 300 articles on success and about 30 on passion. Those with more time than me can go count and let us know exactly how many.

So obviously, people are more interested in success.

The truth of the matter is that I don't "know" the answers to the two questions. I can only talk about my impression of what they are.

I think success is a state of mind. People can be divided into two categories by their mindset: winners and losers.

The winners aren't necessarily your billionaires and often times if they aren't quite billionaires yet, they are just on their way. But this analogy seems to suggest that success is measured in financial terms. Maybe it is. Maybe it isn't. How would I know? After all, I'm a Computer Scientist, not a philosopher.

The following quote by Ralph Waldo Emerson is pretty thought-provoking:

What is Success?

To laugh often and much;

To win the respect of intelligent people
and the affection of children;

To earn the appreciation of honest critics
and endure the betrayal of false friends;

To appreciate beauty;
To find the best in others;

To leave the world a bit better, whether by
a healthy child, a garden patch
or a redeemed social condition;

To know even one life has breathed
easier because you have lived;

This is to have succeeded.

I once stocked up on copies of this book called Secrets of the Millionaire Mind and I gave them away to random students who came to see me (it's a cheap paperback lah). I've run out. Sorry.

The point of giving out this book was not so as to encourage students to become more money-minded, but to highlight to them this point I'm trying to make: success is a mindset.

Sorry I like to pick on students, but welcome to CS3216. This student for example has a mindset problem because he says "I think I am a failure".

The truth of the matter is that I knew that already. Our friend submitted a seven-page personal statement and said he "already tried to make it as short as possible". After reading every single word and thinking through what sort of a person would write what I was reading, I was not surprised to read the "I think I am a failure". :-)

Fortunately, the story does not end here. This student also says, "I don’t want to be one", which I also expected.

The truth of the matter is this: CS3216 doesn't take losers. There aren't already enough places to go around. It is only right to offer the places to those who have the potential to benefit the most 'cos I don't have any confidence that I can turn losers into winners. My goal is to try to pick the winners and try to help them win earlier and bigger. :-P

This particular student has talent. He doesn't really know what it is, but it's there. He feels he hasn't quite achieved his potential and he is NOT content with status quo. That means his mentality can be "fixed" so that he falls squarely in the "winning camp".

Let's play a little game. I know what his talent is. I suspect he doesn't. At this point, all of you probably don't either - since you don't know him well enough. Over the course of the semester, why don't you guys figure it out and do him a favour and tell him? :-)

Finally, what is passion? I think passion is a deep-seated conviction that empowers folks to do stuff above and beyond what is typically known as mediocre. It's not about what you believe, but knowing WHY you believe. No one says it better than Anthony Robbins.

I believe that I have a passion for what I do. It is now 4 am. I am dead tired. Still I blog. Enough said. :-)

Sunday, January 10, 2010

A New Beginning

Tomorrow will be the first class for CS3216. Again.

Typically, if I were to be teaching a class for the third time, I would probably be able to do it in my sleep.

Not so for CS3216.

While many people have been on vacation this past month, my dedicated teaching staff have been hard at work developing the new assignments for this year. To them, I owe a great debt of gratitude. Without them, CS3216 would not be possible.

Unlike last year, we will be introducing a new Google Wave assignment. Google Wave is so new that none of us knew how it works, and much less what it is good for - but we still have to come up with an assignment.

Also, instead of deploying their homework on the SoC servers, the students this Semester will get to deploy their work on Amazon Web Services. Truthfully, we also had no idea what this was about and we had to go find out.

But such is life.

There is the saying that if we really believe in what we're doing, then we better "eat our own dog food". So we eat.

CS3216 is about learning how to take risks and work outside our comfort zones. Why would we want to do something like that? Well, because if we do not push at the boundaries, there will be no progress - and if we do not push at the boundaries aggressively enough, there will not be breakthroughs.

So every semester we try new things. We try to make it better - though we aren't necessarily sure that we will succeed.

I was chatting with Kok Wee (course TA) after we finished CS3216 last year. I told him that I thought we did well and the feedback for the module seems to indicate so too. But it's scary sometimes when things go well, because in creeps the fear of screwing up. When things are going well and swimming along, where else do you have to go but down?

To digress, I would like to take the opportunity to address the following comment by a student last year: "I strongly suggest the last project before the Final Project be scrapped. Too much time is spent to master a totally new platform to create a new app. Perhaps it is not so strenous on non-programmers but it takes a lot for programmers to pick up a totally new platform. Although the intention is to expose the students to "evolving platforms", I feel that it is way too heavy and results in a lack of time for the final project. Overall this module feels more like an 8MC module and this view is echoed by all the students of the class. It is extremely taxing on students in their 3rd or final years where they are also pursuing their FYPs or design projects which also require an immense amount of time. While those modules are appropriately awarded with 8 or 12 MCs, this isn't. Although the student is already spending the majority of time on this, it does not translate to better scores, instead, it drags down the students' overall score as the other modules are severely affected."

Two things: (i) this student is referring to the Microsoft WPF assignment we had last year, which we have replaced this year with the Google Wave assignment. Google Wave is really just JavaScript, so life will be better this year (not only for the students, but for the teaching staff). (ii) We will continue to emphasize to the students to try to moderate the size of their projects and to avoid building the mother-of-all-projects project to take over the world. Instead, we hope that the students will deliver small but cool projects.

Sometimes, small is beautiful.

Sometimes, when we do something right/well, there are fears of not being able to reproduce past success. I would be honest and admit that these fears are quite real to me.

CS3216 really has a lot of random uncontrolled factors. Like Forrest Gump says, "it's like a box of chocolates." I have no idea what we're going to get.

However, there is also the theory of "Do or Do Not, There is No Try." Sometimes we might have concerns, but what really matters is whether we believe in what we do.

I believe. And fortunately for me, I have a dedicated TA and four brilliant Tutors, who are all ex-students of this class, and who share the same belief.

One lesson on risk management is to find the right people who BELIEVE in the same vision. I am fortunate to have found the right people and with that, we press on with CS3216 for yet another semester.

To conclude, I would like to address the issue of blogging.

It's clear to me that some students are going to find blogging a pain/chore -- and like Randy Pausch says, "if there's an elephant in the room, address it".

CS3216 is about learning. The sad thing about learning is that students can go through motion the entire time they are in college, get good grades and learn absolutely nothing. This statement might seem like nonsense, but it's true.

How does blogging help in the learning? Well, we have to go back to the psychology of learning.

The thing about blogs is that there's some ownership. When a student blogs, it makes a statement about who he/she is. Very few people want to make a statement to others that "I'm a loser".

In this light, when "forced" to blog, students will spend a lot more effort thinking about what to say and how they want to say it. It is not so much the blogging that the learning takes place, but in the agonizing over what to write where people will learn something.

They are forced to take stock of what they have heard/seen and draw conclusions. That's important. Many people go through life not thinking hard about what they have seen or heard.

I am one of the weird profs who tell my students that school is overrated (fortunately, parents don't believe that - or I'd be out of a job :-P).

Well, school is overrated, because learning is EVERYWHERE. To think that learning can only take place in school is completely misguided.

That said, given that we have job to educate our students, we should try to earn our pay.

In addition to "forced" thinking, there are two other key advantages of blogging.

One, it is important to learn to communicate in ANY job. Writing more through blogging is one way for students to practise this skill. We're not looking for Shakespeares in CS3216. People just have to express what they say in clear and concise manner.

Foreign students might find blogging even more of a pain 'cos they have to write in a foreign language. All the more better write more to improve your command of English.

Two, the blogs actually allow me to figure out exactly what people are learning and how much they are learning. Blog comments also provide me with a way to ask questions and challenge assumptions and/or clarify ideas. Students can also interact with each other and learn from their friends through the blogs.

There are many good things going for blogs - but there's no free lunch. Blogging every week requires effort and discipline.

As it turns out, I believe that teaching also requires some leadership by example.

If I am to inflict such pain on my students, I jolly well demonstrate that I can take the same pain. In this light, I will also write a blog entry every week like the students.

However, I will probably do it AFTER I have read what the students have written.

It's not because I dunno what to say and I need to check what the students have written to check market rate and because I need to "copy" from the students. In fact, by blogging after the students, I am making my life much harder 'cos the expectation is that I have to say smart things that none of the students have said. :-)

Actually, if students expect me to say "smart things," I suspect they will be sorely disappointment. My talent lies in stating the obvious (did I say school is somewhat overrated? :-)).

But more seriously, I don't want to write first because there's still a very bad culture in Singapore where students tend to think that there's some "model answer" and that the prof knows the "right answer". I suspect that if I weigh in prematurely on issues, students will end up worse off because they will be circumscribed by what I say.

To understand my concerns, see this entry. I would like to clarify that students won't "score more points" if they agree with me. No one has any need to rewrite *any* blog entries. :-)

What exactly students think doesn't really matter. What matters more is how and why they think the way they think. I'm am actually more impressed with students who come up with views contrary to mine that are backed with with good ideas and thorough arguments.

Anyway, my closing remark to the new students is this: don't complain about this blogging business. Just do it (Nike style). If you struggle with it, good for you. You're learning something and getting smarter.

I'm ready for CS3216. Are you? :-)

Thursday, November 26, 2009

Paradox of the Poor (Money No Enough) Programmers

Recently, I got involved in a some discussions over the future of Computer Science in Singapore. The truth of the matter is that Singapore has done very well with regards to attracting lots of world-class Infocomm companies to set up shop in Singapore. REGARDLESS of whether the current economic recovery is going to be U-shaped, W-shaped, O-shaped, whatever-shaped, the jobs are coming over the next couple of years. There are going to be a large number of them and these are going to require good programmers (and not just run-of-the-mill graduates).

But there's apparently also a shortage of good programmers. For a CS prof who is concerned about the state of the local IT industry, this is clearly something that I am deeply troubled about.

After discussing this issue with some folks over the last few days, I came upon this apparent paradox: it is well-known that a good programmer is 10 times more productive than a mediocre one. In this light, suppose a mediocre programmer makes $30K a year, the good programmers should be expected to make $300K a year. However, we are not seeing this in the market today. WHY?

While thinking about this problem, I suddenly recalled this conversation I had over lunch a couple of weeks ago with my ex-classmate who is the co-founder of a successful startup. Over lunch, we were discussing the issues of manpower and pay. He made this one remark, "I have this guy who is worth 10 times what I'm paying him - but I'm not paying him that much. The reason is that he doesn't KNOW he's worth that much, and I have no incentive to tell him."

This indicates that there's information asymmetry. The classic example of this is what's known as the Market for Lemons. The idea here is that in the used-car market, there are two kinds of cars, lemons and peaches. Lemons are cars that will break down frequently and peaches are good and reliable cars. The catch is that only the seller knows whether his car is a lemon or a peach. A buyer cannot tell. Hence the information asymmetry. The question is this: suppose lemons are worth $20,000 and peaches are worth $60,000, what is the price of a used car?

Clearly, the price must be at least $20,000 and at most $60,000. A market price of $60,000 is impossible because the buyers risk getting a lemon and suffering a huge loss. Suppose the clearing price for used cars is $20,000+x, where 0<x<40,000. The lemon sellers will gladly sell their car 'cos they will enjoy surplus x>0. The peach sellers however will not sell 'cos they will lose $40,000-x>0. This means that at this price, the market is full of lemons. If the buyers were rational, they would never pay $20,000+x since they know that they must be looking at a lemon. The stable equilibrium is therefore a market clearing price of $20,000 and where only lemons get sold. This is a market failure because peaches cannot be sold.

So how is this issue of information asymmetry and lemons related to programmers?

Well, it seems to me that there's some weirdness in the market. If there's a so-called shortage of good programmers, then logically, the salaries of good programmers must shoot through the roof (in Singapore, not talking about Google, Mountain View here), but that's not happening. Hold that thought.

Over the past couple of years that I have been teaching at NUS, I have come to realize one curious thing. The class of Honours is NOT an entirely good indicator of whether a student is a good programmer. There is some correlation, i.e. First Class Hons typically better programmer than Third Class Hons, but there are very good programmers who are only 2nd Upper/Lower students (and quite a number of them!).

I have had students who are elite programmers who fail MA1505 (calculus) and get their CAPs thrashed. There are also First Class Honours students that I would never touch with a ten-foot pole. Software companies try to do their due diligence and set tests and exams, etc. However, the laupok First Class Honours will still probably get through.

All in all, I believe that there's an information gap. Companies look at the prospects and they are not entirely sure. Good programmers who just graduate fresh from school don't really understand their own market value and are willing to accept somewhat low salaries from the bigger firms. Bigger firms don't pay more because the programmers are docile enough to accept and they also have no interest to pay more. Cheap is good what. Smaller firms don't have the financial resources to compete and also take the cue from the large firms.

I had an idea: suppose we have an oracle that will magically reveal the value of each programmer. We take a programmer and stick him into the oracle and out comes a dollar value, i.e. say $40,000, or $60,000 and both the market and the programmer believe that the oracle is accurate. How will this change the situation? :-)

I have a theory - and I plan to build the oracle to test if my theory is correct. Wish me luck.



Afternote:
Here's another post on the same issue (Thanks Zi!). The funny thing about productivity in programming is that we actually want programmers who write less code, not more. Also, the majority of the time is spent not so much on writing code, but in debugging. Good programmers generate fewer bugs. :-)

Wednesday, May 20, 2009

Understand Life, Reject Dogma, Embrace Common Sense

"SINGAPORE needs people with a sense of the aesthetics and not just people who get straight As in school, said Minister Mentor Lee Kuan Yew. "

Wei Man's response, "Say that again?! My life will be different if you thought so ten years ago."

Wei Man is one of the most outstanding students I had this past Semester and the CS3216 Blog Queen. When I read her response, it bothered me. It also reminded me of this Facebook comment conversation I had with some former CS3216 students a couple of weeks ago about scholarships for foreign students.

My question to Wei Man: why should your life be different if the Minister Mentor thought differently ten years ago? He's not your grandfather what.

First, I am surprised that people seem to think that this news reports is saying anything new. Do people think that the Minister Mentor just woke up recently and decided that we needed more than students with straight As?

If people will read carefully, the example of the two Japanese landscape architects happened during the "Singapore's early years". Translation: the MM figured this out 40 years ago. :-)

Frankly, the fact that Singapore (or any country for that matter) needs more than just students with straight-A's pretty common sense isn't it? Really doesn't take a genius to figure it out. Why then is Wei Man surprised at this latest press report?

For some strange reason, people seem to have this impression that the Government (whatever that means) "demands all its citizens to be a jack of all trades and good in everything" (to quote Wei Man). I was like "Huh? Since when?" :-P

I'm a systems scientist. A system is a entity consisting of a collection of smaller components. Systems are interesting because they often exhibit behaviour that is different from its components. Futher more, one way of understanding systems is to understand how the individual components work and interact. Society is one such system.

One criticism I have of our people is that they don't try to understand and appreciate the "laws of nature" but instead blame all their failings on "the system" or "Government". What the heck does that mean?

Let's take two examples illustrating the sense in the madness we call the "system".

First, why do we use grades for university admission. Answer is very simple: because there is a limited amount of resources (university places) and we need to allocate them in some "fair" way. Lottery wouldn't do.

Second, why the apparent "fixation" on grades in the civil service? Since I'm an ex-civil servant, I can say that there's no "fixation" on grades. It's all quite practical practical.

Again, there's limited resources, either scholarship places or jobs and there's a need to shortlist the candidates efficiently. Interviewing EVERYONE is NOT an option by a long shot.

Why are Second Uppers paid more? Because the private sector also pays them more. If the civil service doesn't pay more, it can forget about hiring the better graduates. I wish that people can understand a little more about labour markets, about Economics and realize that grades are what's known as a signal.

Line managers in the civil service are no different from those in the private sector. They hire people to do their work and minimize their own grief. If better grades do not translate to better workers, they hire for what? In case people don't know, civil servants don't get more bonuses if they hire people with better grades.

Frankly, Singapore is a really "logical" society (maybe every society is equally logical?). Everything happens for a reason and there are good reasons for everything. The system might not be perfect, but people should first look within themselves and learn to take responsibility for their own actions and/failings.

Finally, Wei Man thinks that "more options" means "more freedom to choose". She is sort of right - but my stand is somewhat more philosophical: more often than not, it not so much the lack of options but the lack of guts that limits one's freedom of choice. :-P

I agree with Wei Man that Singaporean's education system is going the right direction, but after speaking with some parents last week, I have also come to realize that all the changes mean squat unless there is a change in the mindset of the parents.

I wrote the following letter a couple of years ago at a whim while I was still a graduate student at MIT:
The Straits Times, March 27, 2006
All-rounder student mould is pointless

I, TOO, am heartened by the breadth and depth of the Ministry of Education's recent policies and I believe that our policies are indeed progressive.

People are different and few are truly 'all rounded'.

To expect our students to conform to the mould of an 'all rounder' model student is like expecting Singapore women to diet till they all look like Ally McBeal: It is self-defeating and pointless, unless what we want is a whole generation of mediocre students.

We have to let a thousand flowers bloom. Then perhaps a garden might grow on our doorstep.

Young Singaporeans have to understand that the world has changed since their parents' generation: Singapore is now a global city and they will have to compete with foreigners for jobs at home.

Protectionism is not an option. We have no oil. We have no natural resources. If we drive up our already high labour costs, we are toast.

Let us not forget also that there are 1.3 billion hungry people, in the emergent China, who are willing to do the same jobs for less; they are even willing to do jobs that Singaporeans are not willing to do.

In some ways, our situation may seem bleak but I believe in our future; among all the people in our region, I believe that Singaporeans have access to the most opportunities.

The question is: Will our people fully exploit the available opportunities to excel in a profession that they truly care about, or will they cave in to peer pressure and continue the blind pursuit of good academic grades and co-curricular activity records, believing that paper qualifications are the key to a secure future?

To me, the truly worrying part is the expectations that the parents impose upon their children.

MOE has done its part by reducing the syllabus, and it has improved the testing system by introducing questions that cannot be answered by simply regurgitating from a 10-year series.

These are steps in the right direction.

This move has, however, unnerved many parents, who seem to prefer the good old days, where their children can safely spend their entire lives buried in their books, but thereby 'guarantee' good grades at the national examinations.

Like Ally McBeal, Singaporeans may need to take a look in the mirror.

Ben Leong
Cambridge, Massachusetts

I think I was spot on. One of the key concerns I got when I spoke with the parents was "is there a career if my son/daughter chooses Computer Science? Will the starting pay be less than the other professions?"

I looked at them in the eye and told them, "if your son/daughter does well in WHATEVER course he/she chooses to study whether at NUS or NTU, he/she will probably find a decent job; if he/she does poorly, probably NO course will guarantee a job. So have your son/daughter pick a course, he/she thinks he likes. This maximizes the probability that he/she will do well. Simple as that."

MOE needs to educate not only our children, but the parents. :-)

This is my charge to my students: school is overrated. Life is *real* (and often very harsh). Take some effort to understand how the world around you works and think. Apply common sense. It takes some effort, but it's not that hard.

Saturday, May 9, 2009

Reflections Two Years Down the Road

We had BBQ tonight. Since last semester, it has become somewhat of a tradition for the class to hang out and chill out at the end of a tough semester.

It was nice that most of the students turned up, except for a couple who are out of town. A few students from last batch also came -- Zongyao, Caleb and Christine. I would like to express my gratitude again to my trusty TA, Kok Wee for organizing the BQQ and also Janus for helping him. :-)

It was really nice hanging out with the students. I had a great time chatting with the students, but I unfortunately had to leave early 'ços my wife was nagging me to go pick up our two babies. :-P

Jason asked me if I was going to offer CS3216 again next year, and I said, "Yes".

This is now the second time that we've offered CS3216 and truthfully I did have second thoughts in the middle of the semester about offering CS3216 every year. I was seriously considering the option of offering it every other year instead. I discussed this matter at length with Kok Wee, my trusty TA, who was adamant that we should offer CS3216 every year. (It's nice to have a TA who really believes in the course. :-))

Last year we had about 50 students. This year, we only had 28. Personally, I am quite confident that we can sustain a enrollment of about 25-30 students a year, but one of issues that we had this year (which we didn't have last year) was the difficulty the students had in forming Final Project teams different from those for the Facebook assignment.

It was a structural problem arising from the smaller numbers. Some groups inadvertently wanted to work together with their Facebook assignment teams and with a smaller enrollment, this made it difficult for the remaining people to switch groups even if they wanted to. The same issue didn't arise when we had 50 students last year.

I didn't really like this situation because I had this idea that one of the skills I wanted the students to learn in CS3216 was how to get to know people and then form the dream teams to develop their "killer app". Because "Musical Chairs" didn't happen, I was thinking to myself that a perhaps more efficient way to run the class was to mount it every other year so that we can collect enough (say 50 students) in each course.

What made me change my mind towards the end of the course was the realization that a smaller class actually has its advantages. With fewer project teams, I have the time to talk individually to each and every group and get to know each and every student. The quality of the Final Project apps this year also turned out to be significantly higher.

It is no secret that CS3216 was inspired two years ago by the late Prof Randy Pausch's Last Lecture. In that talk, he described this class he created when he first went to CMU called "Building Virtual Worlds". It sounded really cool, but unlike Randy, I'm an animation guy, so this virtual world business was out of my league. It so turned out that I am the sort of guy who likes to build systems - and along came Facebook, so in a moment of insanity, I proposed CS3216 to my Department.

I would like to take a moment to give credit to my Department, especially my Vice-Dean Prof Khoo Siau Cheng. Randy says CMU is great. Truthfully, NUS ain't bad. Instead of telling me that I was crazy and stupid, I actually got the support of SoC and later approval by NUS to mount a new course on Facebook programming! I am blessed to work in probably one of the most enlightened faculties on campus and probably in the world. For this, I am very grateful. :-)

Truth be told, it's actually not very reasonable for NUS to have a Facebook Programming class, because that seems to make us too much of a vocational institution, which we are not. (However, as the students will attest, I don't actually teach people how to write Facebook apps (and neither did I ever have such an intention). The whole point of CS3216 is for students to figure out how to learn. Two generations of CS3216 students have thus completed the course, survived to tell the tale and learnt (albeit painfully) that picking up the technology is the least of their problems, if they truly want to do something great).

Now two years down the road with CS3216, I can safely affirm that the late Randy Pausch was truly a great educator and his demise is indeed a real loss to humanity. I just went to read the transcript for the Last Lecture again and found the following quotes I am able to relate to quite intimately after teaching CS3216:
The first assignment, I gave it to them, they came back in two weeks and they just blew me away. I mean the work was so beyond, literally, my imagination, because I had copied the process from Imagineering’s VR lab, but I had no idea what they could or couldn’t do with it as undergraduates, and their tools were weaker, and they came back on the first assignment, and they did something that was so spectacular that I literally didn’t, ten years as a professor and I had no idea what to do next.

(If you) wait long enough and people will surprise and impress you. He said, when you’re pissed off at somebody and you’re angry at them, you just haven’t given them enough time. Just give them a little more time and they’ll almost always impress you. And that really stuck with me. I think he’s absolutely right on that one.

And the course was all about bonding. People used to say, you know, what’s going to make for a good world? I said, I can’t tell you beforehand, but right before they present it I can tell you if the world’s good just by the body language. If they’re standing close to each other, the world is good.

And BVW was a pioneering course [Randy puts on vest with arrows poking out of the back], and I won’t bore you with all the details, but it wasn’t easy to do, and I was given this when I stepped down from the ETC and I think it’s emblematic. If you’re going to do anything that pioneering you will get those arrows in the back, and you just have to put up with it. I mean everything that could go wrong did go wrong. But at the end of the day, a whole lot of people had a whole lot of fun.

So today’s talk was about my childhood dreams, enabling the dreams of others, and some lessons learned. But did you figure out the head fake? [dramatic pause] It’s not about how to achieve your dreams. It’s about how to lead your life. If you lead your life the right way, the karma will take care of itself. The dreams will come to you.

The first clue that CS3216 was doing something right happened when I was grading the Hello World assignment apps last year. How much can students do with a Hello World app? Well, a lot more than I had EVER imagined.

Teaching CS3216 is really challenging, but it is also intensely rewarding because I get to work with perhaps the most talented students we have on campus from all faculties. In some situations, the distinction between teacher and student isn't quite so clear.

Two groups of students this year taught me the truth that "wait long enough and people will surprise and impress you".

One group was MishMash. Jiayang tells their story here and it's true! Truthfully, when the team first did MishMash for their first assignment, it wasn't so hot. It wasn't even usable and so I must admit I was not exactly encouraging when I heard that they wanted to work on it for the Final Project.

I have to admit, I belong to the "Brutal Truth" camp. I don't tell students what they want to hear; I tell them what they need to hear. Telling students that they are doing well when they are not means that we condone low standards. That's not my style. :-P

In any case, the story has a happy ending. Instead of being discouraged by my initial comments, they decided to prove me wrong and persevered. I was quite blown away by MishMash when the Progress Report was due. While all the other teams had trouble producing a prototype, MishMash was done. Also, the improvement in the app was phenomenal to say the least. Even my student Zi Han who has really high standards for web apps had nothing but good things to say about the app. Of course, I conveyed my thoughts to the team.

The other group was MyCampus. This a group of four freshmen. They worked on this Flash-based app for their first assignment and it didn't work out very well. Then they told me that they decided to do a Flex app on xiaonei for their Final Project and I asked, "Sure or not? How much Flash do you know?" The rest, as they say, is history. :-)

Randy said that he could tell how well the BVW projects would turn out by the bonding between the students. The same is absolutely true for CS3216! Next year maybe we don't even have to bother to grade the apps. Maybe we just do a survey to ask the students how much time they spend with their teammates and how much they like each other. A similar trend was observed last year too, but these year's students seemed to like camping out overnight at COM1 a lot more. :-P

To a great extent, CS3216 has transcended from being just a class and evolved into a community. Perhaps shared suffering creates bonding? :-)

I have said a lot about how great things were, and I might have given the impression that life is a bed of roses. Truthfully life is NEVER a bed of roses. The class got random flak and naysayers: here and here. The attendance at lectures started to drop significantly last year after the midterm break (which is why I started blogs this year - which apparently "fixed it". *Evil laughter*).

I got a lot of flak from the students last year for random stuff like "changing deadlines" (actually I was giving extensions so I dun know what they were complaining about, but ah well), "poor scheduling" and for not being organized. I am pleased to say that I got a little bit smarter after last year and most of these logistics issues have been resolved.

I'm not complaining. Merely highlighting that things are NEVER a bed of roses even if things seem fine and dandy. This is especially if we try to smart and do something different and a little crazy.

So why do I do what I do (other than that I'm a little crazy :-P). It's because I BELIEVE. I believe that there is a place in NUS for a module like CS3216. There is a need to give our students a chance to do what they want to do. A chance to dream. A chance to learn what they WANT to learn.

CS3216 is infamous for its unreasonable workload. However, the truth is this: after the feedback from last year, I've fixed it!! Yes I did, believe it or not -- and I spent most of the Project Team meetings telling the students to scale down their projects. Just pick one thing and do it well..... but most of the students still went ahead and camped over. I suspect they actually enjoyed it (though they will still complain 'cos that's the way it is).

CS3216 is a head fake. It's really not about programming Facebook apps (though most students will learn some of that along the way). What is it all? If you are a student reading this blog to try to figure out what CS3216 is all about and trying to decide whether it's for you, read the blogs by the students found in the sidebar. :-)

The strange thing about CS3216 is that I don't know what the students learnt exactly. Much would depend on their backgrounds and what they decided they wanted to learn. Unlike a factory-system where we churn out a whole class of students all with the same set of skills, we instead have a whole class of students go away with different lessons. Yes, I know it sounds a little wild, but it's true. :-P

This reminds me of the conversation I had with Chris Henry on the way to the BBQ earlier this evening where we had this discussion about education, politics and "the system". I shared with him my view that this idea of The Singapore Dream is quite bogus. What Singapore Dream? Are our people so pathetic that they don't even know how to dream that they need the Government to tell them what to dream? My hope is that our people will dare to dream and we have 4 million different Singapore dreams. :-)

That is what education is about in my opinion: teaching our young to dream and helping them understand that life is about choices.

To conclude, I would like to quote from Larry Page's recent commencement address at Michigan (not what he said, but what his father said 53 years ago):
"...we are entering a changing world, one of automation and employment change where education is an economic necessity. We will have increased periods of time to do as we wish, as our work week and retirement age continue to decline. ... We shall take part in, or witness, developments in science, medicine, and industry that we can not dream of today. ... It is said that the future of any nation can be determined by the care and preparation given to its youth. If all the youths of America were as fortunate in securing an education as we have been, then the future of the United States would be even more bright than it is today."
I am really impressed that an 18-year-old could have said something like that. I believe that we have succeeded in making universal education a reality in Singapore today. The question remains: what will our youth do with their education? :-)

That, is a choice.

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. :-)