Tuesday, November 8, 2011

The Last Lecture That Could Have Been Better

CS3216 was inspired by the The Last Lecture.

Just delivered what is likely my last lecture for CS3216. It is hard to describe the feeling. Strangely liberating is probably the best I can do.

In terms of delivery, it could probably have been better. I committed the elementary mistake of trying to cover too much ground. I shouldn't have made, but I did. >.< Ah well.

I guess it's hard to resist the temptation to try to tell students everything under the sun, including the meaning of life, when there's a nagging thought that this IS the last chance.

School is hardly the most efficient mechanism for learning and lecture is hardly the most effective way to have students learn.

My only consolation is that it is not likely that students would remember much of what happened tonight a couple of years down the road (which might also not be a consolation depending on how we look at it. >.<).

I guess my goal tonight is to provide students with some sense of the history and motivation of CS3216 together with an overview of the issues that I think matters. Most importantly, I wanted to pay tribute to the people who helped make CS3216 happen, especially long-suffering TA Kok Wee. :-)

In the spirit of walking the talk, I will also finish my final blog post for the semester tonight to summarize some of things I covered:

(i) The world today as we know it is broken. I believe that it is important for people to try to understand WHY the world come to be broken. My blame Wall Street, but that's too simplistic even I might not think much of bankers.

I really don't think that it's the fault of anyone in particular that caused the world to spiral into its current state. To me, it is really the consequence of what I believe are core structural issues, couple with many Prisoner-Dilemma-like situations, where people are naturally led to incentivized to do the "wrong" things.

I think it's important for students to think about social political issues from a higher-level because I think it helps to put things in perspective. We live in a world much better than ourselves and I think it matters to understand, without judgment. The social pyramid I described is not a matter of good or bad. It just is.

Human societies have always self-organized into social pyramids in one way or another. That is merely a function of life's penchant to be unfair.

Am I hoping that one of the students can make a difference and put things right? Truthfully, not really. Truth be told, I'm not entirely convinced that the inevitable decay that we see happening around us can necessarily be stopped.

From where I'm standing, it seems to me that the future is pretty bleak for most of the developed world.

We've reached a saturation point whereby the good old days of 8% growth are over. At 3% growth, I think life will become harder for most people.

Deepan said he didn't agree and for all our sakes, I sure hope that he's right. I guess my point is not that we should be pessimistic about the future, but that it's important to be mentally prepared for hard times 'cos "unmanaged and unrealistic " expectations on serve to create unnecessary disappointments.

(ii) Before people can try to make a difference and perhaps save the world while they are at it, it is important to work towards self mastery. Because we can even have a chance at changing the world and external environment, I believe that it is important to look inward and make sure that things are in order.

The process will never be complete and starts with self awareness. That's one of the reasons why we have peer appraisal in CS3216. Obviously, I also took the opportunity to belabour the importance of 10,000 hours and deliberate practice.

(iii) Finally, I hope that students will focus on creating value. Why? I think that vocations that create value will tend not to contribute as much to the current downward spiral that is the reality of the world of the world we live in, compared to vocations that do not.

As we had discussed, value is obviously subjective. Something of value to someone might be completely worthless to another. I have a certain disdain for wealth arising not from the fruits of one's labours that generates value for another.

In this light, I think stockpicking creates absolutely no way whatsoever and the same goes for making money off property. I see no reason why a pile of stones and bricks sitting quietly should generate significant amounts of wealth over time.

The problem with wealth arising from sources other than hard work is that it encourages greed. On the other hand, I believe that those who are able to invent new machines and groundbreaking services that solve *real* problems are entitled to become rich.

I believe that real value creation should be rewarded in monetary terms, commensurate with the value created.

In addition to these three points, I think I said a whole bunch of other random things today, but I suspect that these three things are what I tried my best to articulate today, but perhaps not very well. Today was not the best of days for me.

The funny story for today is that ex-student Linxi turn up today, and I was completely embarressed that I couldn't quite recognize her. Well, in my defense, I haven't seen her for a very long time and she has started working. She really looks quite different in make up compared to back when she was a student. We just had a rather long chat and caught up over GChat.

Even though the class is effectively over (except for tomorrow's poster presentation, which I'm quite sure will turn out *just fine*), I hope that my students will not be strangers once the class is over. They are always welcome to come have coffee with me. :-P

Personally, I don't think I did do as good a job as I could have done today, but in the same spirit of forgiveness that I had espoused, I will get over it and start working harder on my last lecture for CS1101S this Friday. We need to give ourselves some room for mistakes. :-)

After teaching for many years, the fact remains: there are better days and there are not-so-great days. Preparation helps to increase the probability of good days, but we cannot be completely sure that we will always give a good lecture.

What I do however is that I always try my best and I try to learn from the mistakes so that I can do better the next time.

While we can do everything within our powers to try to succeed, success is not always an outcome that we can control. The one thing we can control is how hard we try.

It is my hope that my students will always do their very best, in whatever they choose to do. :-)

I look forward to an interesting poster session tomorrow. :-P

Saturday, October 29, 2011

The Last Lap

It is hard to believe, but we are almost done with the class. Ten weeks have passed and we have moved into the last phase of the class with the Final Project.

The poster session will be happening in two weeks.

Many weeks ago, I blogged about the importance of finishing strong.

It is over the next two weeks that we will see the true mettle of the students. We're reached a crunch time where most classes all have their assignments due at the same time. The time management skills of most of the students will be severely tested. Those who survive, will emerge stronger.

We have been pushing the various project groups to deliver a prototype and push out their projects for real users to test. The various projects are in various stages of polish and hopefully, the majority of them would be pushed out by user testing by this weekend.

User testing is a very important component of CS3216. CS3216 is not just about software engineering, though there is a lot of that. The real goal of CS3216 is to provide students with an opportunity to identify and solve a meaningful problem.

Often times, students are somewhat immature and are not very good at articulating and/or identifying a good problem. They often get confused by the difference between a problem and an idea. Ideas that don't solve an important are really not very useful.

One of the reasons why I brought in a whole bunch of local entrepreneurs to give a talk last Monday is because entrepreneurs are folks who are good at identifying problems and also executing solutions. The sharing session was quite long and I was pleased to see that quite a number of the students stayed behind even after the session was over to chat with my entrepreneur friends.

Back to user testing, it was quite clear in our Final Project discussions that many of the students, while competent software engineers, do not have sufficient product development experience and have not spend sufficient time/effort thinking through the issue of user experience. The process of user testing is supposed to help students understand how users think and how to design better products.

We've also just finished our midterm survey and it seems that many of the students have learnt quite a number of things thus far and things are going relatively well like past semesters.

The Final Projects that we have this semester are very diverse. While we only have two weeks left, CS3216 students are very competent and are capable of doing a lot in just two weeks. I am hoping that once the projects get pushed out to real users, the live feedback would serve to inspire the students to iterate harder to improve their apps.

Wednesday, October 19, 2011

Why Occupy Vancouver?

I am currently in Vancouver attending a conference. The weather is nice and the city is very beautiful. It is very nicely landscaped and there's a lot of greenery all over the city. It reminds me a lot of Boston.

It is interesting that my hotel is situated right next to the Occupy Vancouver protests.

As I was mulling over what I should be blogging about this week, I thought that maybe I should take a break from typical exhortations about how to scale websites and why security is important and talk about something higher-level.

I was once asked by an ex-CS3216 "what is the meaning of life?" Perhaps it might be helpful to reflect on this question with the current Occupy protests that are happening not only in Vancouver, but all over the world (except perhaps Singapore, where it failed miserably), and reflect on what is really going on.

First, there's the TV coverage on the protesters. It is not very hard to understand why people are unhappy and taking to the streets.

One protester said that all she wanted was a job and a future. She does not know how she is going to make enough money to pay for her study loans and bring up her two children. The unemployment rate in Vancouver is about 7% at the moment.

Wandering around the city, it is not obvious that things are quite so bad because there are lots of "Hiring" signs all over the place. I met this owner of a boutique and he was complaining about how the taxes and laws are making it very hard for the businesses.

Hiring is very difficult and there are local laws that prohibit the hiring of foreigners if employers are not able to "prove" that the job cannot be done by a local. The owner however complains that the locals are lazy and not willing to work hard. He said that the young go to college and do fluffy degrees like psychology and expect a high paying job.

Doesn't this all sound familiar? Classic tussle between labour and capitalists. Who is right?

Does it matter?

The sad truth is that the world today is that it's structurally broken. How exactly do the protesters think that protesting will change their lot? Many claim that their Governments are not listening. The implication, obviously, that if someone listened, someone will be able to change their lot?

Is that true? Sometimes, it is important for us to re-examine our assumptions.

I have thought very hard about the shit hole that the world is currently in. The future is really very bleak. I do not believe for a moment that the Europeans can figure out how to get out of their current mess. America is very screwed and I really don't think that their lots will improve in the short to medium term.

Singapore is actually holding out remarkably well in the midst of this insanity, but it is a question how long we can continue to hold out before also getting sucked into the mess.

I see the current situation as a deadly combination of three factors, that, together, cause what I call a spiral of death: (i) expectations; (ii) politics; and (iii) rising costs of living.

There are many things to learn in life, some of which are found in unexpected places. One of principles I learnt while doing HR for the Singapore Legal Service many years ago is called the "Principle of Equal Misery". The general idea is very simple: people are not unhappy necessarily because of how much they have, but how much they don't have, relative to others.

Critics of the Singapore Government have often cited the increasing the Gini coefficient as evidence that Singapore is doing it wrong and people are "suffering" because of the rising income inequality. The Singapore Government has always pushed back by citing growth figures and how our numbers show that our people are very much better off than folks from most places in the world. Who is right?

Obviously, I support the Government's position and I don't think that the Gini coefficient matters. I think that what matters is whether lives are improved in absolute terms. However, it hardly matters what I believe, because I represent what is known as the "rational" camp, which I suspect is in the minority.

Lots of people are unhappy because sometimes (most times?) life is not just about reason and I can illustrate this with an example.

Every now and then I go jogging to try to keep fit and as a valiant attempt to pass my annual IPPT test, and as I jog, I would inadvertently pass these big houses. When this happens, one question often pops up, "Why are these people staying in such big houses while I stay in a HDB flat? Are all these people smarter and more capable than me?"

Perhaps I might be arrogant, but I suspect that the answer is no. It is not unlikely that I am smarter, faster, more articulate and more hardworking that quite a few of the folks who own these big houses.

If so, then should I be staying in one of these houses instead of my dinky little HDB flat? :-) However, the reality is that if I stayed in my current job as a prof, I would never be able to afford such a house (at least not on a prof's salary without striking lottery or something :-)).

The obvious answer is then, obviously, to quit my job and to find a higher-paying job or start a company or something.... but this is where I stop myself, "Wait, why do I want to stay in such a house anyway?" Sure, it might be cool to stay in a big house, but am I really unhappy with where I'm staying now? As it turns out, no. So *why* am I thinking about buying a bigger house to begin with?

Life's complicated and what I have done with this example is to illustrate the issue of envy. Sometimes we might get lulled into thinking we need something we don't actually need just because someone else has it. Most people also have an inflated sense of their self-worth and think that they are better than others. When others have something that we don't and we don't think that they are better than us, we think we deserve it too. :-) That's the problem with the Gini coefficient.

The trouble with politics in the modern world is that we don't have enough benevolent and wise dictators and democracy is a failed system. The problem with democracy is that politicians need to be popular to get elected and to do so, they need to do what people want -- and the trouble is people often don't want what is good for them. Look at Steve Jobs, did he every trust the people to know what's good for them?

But this is the reality we live in and unfortunately I don't have any bright ideas for a system of Government that works better than a democracy, so we learn to live with what we get.

The biggest problem that we have in Singapore is the problem of success. It is my view that lots of people are unhappy because they are always comparing themselves to folks more successful than themselves and they have unreasonable expectations.

They expect to do better than their parents. They expect good jobs with high pay. They expect to own their own homes simply because their parents could afford to do so and they expect their kids to go to college.

To be fair, it is not entirely unreasonable to want progress and for their kids to do well. Why is that unreasonable?

This is where the original "unreasonable" needs some qualification. By unreasonable, I don't mean that it is unreasonable for people to have these expectations, just that it is unreasonable for the system to be able to fulfill these expectations.

For example, Singaporeans want their kids to go to college. They believe that the college degree is a ticket to a better life. It is partially true. The degree is a pre-requisite for many jobs. But what people fail to realise is that why college degrees and higher paying jobs are correlated, it does not necessarily mean that there is causality.

The trouble with the generally working class Singapore is that most people still don't understand that employers don't pay for degrees. They pay to get the job done. The degree is only useful as a signal for them to hire fresh graduates. Students with good grades are either (i) smart; or (ii) hardworking; or BOTH, and these are helpful traits in workers.

But how many people do we think can win elections by telling people straight in the eye, "you really shouldn't waste time getting a degree, you're not as good as 50% of the other people". There are always exceptions and late bloomers who get a degree late in life and do very well.

As more and more people get degrees become PMETs and expect higher paying jobs, we have to ask ourselves what the structure of our economy is going to look like. If we don't want to let more foreigners in, then who are going to serve in the restaurants and man the stores in the shopping malls?

The recent policy to increase university intake by another 1,000 is a disaster waiting to happen. I am not convinced that it will make our people happier in the long run. The trouble is that telling people to quit whining about not getting into university and to be content with their lot in life is not effective way to win elections. That's where politics fails.

I really do think that a very very important aspect of successful governance for the next 2 decades is to get people to wake up their idea and to be grateful that they have a roof over their heads and that they are not starving. People should really go to India and see how some of the folks there are living. WHY do Singaporeans deserve better and to be able to retire and not wash dishes at the hawker centers when they grow old? Many Singaporeans, probably because of their hard work and/or good fortunate will live relatively comfortably till the reach their graves, but does that mean that EVERYONE deserves the same?

This brings us to the last problem and that's the cost of living and this problem is *REAL*. There's some truth in that Singapore has already done pretty well compared to many other major cities in the world, but I really don't think we did well enough.

The biggest problem is property. Property is not a "normal" good, or the sort that is easily described by the supply-demand curves in Economics 101. The demand is obviously somewhat inelastic because everyone needs a room over his/her head. Prices are however completely out of whack.

Does it make any sense? From the fact that there are very few people on the streets, we know that there is enough accommodation to give everyone a shelter. The problem is that the high property prices feeds into the high rental costs and also high mortgage payments that feeds the increasing costs of living. The problem is exacerbated by the fact that many of the young are impatient and do have understand financial planning and credit.

Personally, I don't think much of property. People just need a place to stay. A property sitting idle and not doing much shouldn't be allowed to generate extra-normal returns. When people are allowed to make a lot of money without creating value, we are creating a moral hazard for society. So it is with Wall Street.

Obviously, I think that the right thing is for the Government to exercise its policy tools to drastically bring down the property prices. Many people will probably agree, except that they probably don't understand that such a move would be v bloody all round and be political suicide. This further underlines the problem with politics. Sometimes what is beneficial for the greater good simply cannot be done because people need to get elected. >.<

So what's the moral of this *really long* story? :-) That is something I hope that the students will think about. Perhaps post some comments and we can discuss.

Thursday, October 6, 2011

On Excellence and Death

Steve Jobs once said:
We don’t get a chance to do that many things, and every one should be really excellent.
Because this is our life.
Life is brief, and then you die, you know?
And we’ve all chosen to do this with our lives.
So it better be damn good. It better be worth it.
Be a yardstick of quality.
Some people aren’t used to an environment where excellence is expected.
This comment was apparently made in 2008, when the man was almost certainly fully cognizant of his impending demise.

It is not my purpose to bury or to praise the man. I would just like to take this opportunity to discuss the topic of excellence.

Some folks think that excellence means starting a billion-dollar company or perhaps winning the Nobel Prize or something like that. I don't think so.

I actually agree with Steve. The brutal truth is that life is often nasty, brutish and short. Unlike a computer game, one doesn't have the luxury of reloading life from a saved game. We only get one shot at it.

In this light, it is my opinion that excellence is not so much a destination, but an attitude. We all have to decide what we want to do with our lives and give it our best.

When Steve says that "everyone should be excellent", he cannot mean that everyone can be excellent at anything.

Different people are different and it is in that diversity that mankind has successfully reached our current stage of modern civilization.

The trouble is that many are stuck trying to conform to what are society's norms and standards. Parents want their kids to become lawyers and doctors because they think that guarantees a good life. Many students want to join banks after graduation because they want to make a lot of money. Another girl I know is desperate to get married because her friends are getting engaged and are queueing for a flat.

My hope for my students is that they will find the courage in themselves to do something that they find meaningful and work towards becoming excellent at something. Anything.

Dr. Martin Luther King once said, “If life makes you a street sweeper, be the best street sweeper you can be” and there is a story about a janitor that makes this point in a very poignant way.

Finally, I really don't think a life needs to be long. No one gets to decide how long his/her life will be (unless he/she decides to end it prematurely) so it's not really worth fretting over. How many people live longer lives fretting over it?

We should just learn to be grateful for each day we get and do things according to our good conscience (and be mindful of our mortality).

I am grateful for what I have. I have a lovely wife and two beautiful daughters and get to decide what to do each day that will make a small difference. I count my blessings every day. :-)

Monday, September 12, 2011

On Sales

While CS3216 is not a marketing class, one of the key points that I would like students to take away from the course is the importance of sales.

While the hope that is that good engineers will be able to build insanely great products that will eventually "sell themselves", the road to success is hard and often times all we have are not a real product, but a dream.

To get to the actual product, we might first have to sell that dream.

First, come the idea and then comes the execution. Sales is part of that execution.

I would like to put on record my gratitude to Yanjie for taking time off to teach a Presentation workshop last Saturday. Sadly, attendance wasn't that good.

I would like to take this opportunity to highlight two classic TED talks that I think all the students should watch and understand:

In addition, Yanjie highlighted the following clips during the workshop:

I hope that the students who missed the workshop will check out these video clips.

This Friday evening, we will be holding our customary Final Project pitching party. The party serves as an opportunity for the class to come together to celebrate the completion of half the course and also to come together to share their ideas on what they think would make for a good Final Project.

This pitching session is also about community. Many ex-students of the course will also come back and hang out. To listen to what the new batch of students have to say, to share their two cents or perhaps just for some free food and fellowship on a Friday evening.

Finally, I would like to take this opportunity to thank my trusty TA Kok Wee and the tutors Eldwin, Zhao Cong and Haocong for the work that they have put in thus far to keep the course running like clockwork. Another 7 more weeks and we'd be done with yet another offering of CS3216.

Time really flies. Hard to believe that this is already the fourth year.

Monday, September 5, 2011

On Ideas

I would like to congratulate my students on surviving the first 25% of the course with the completion of the Facebook application assignment and also the FB/iPad Application Seminar.

CS3216 follows a tried and tested formula: the first six weeks is about honing technical skills and developing ideas.

Clearly the two programming assignments, Facebook and Mobile-Cloud applications, are designed to help students pick up technical skills (both programming and design) in a hurry and I think we have done well with the FB/iPad app assignment.

At the same time, the students are also expected to apply their technical skills to explore some new ideas and hopefully, the feedback that they will be getting will be helpful to them.

I personally think that most ideas are not *completely* original. Most ideas are inspired by other ideas. Hence, it is also important for students to look around to see what's already available. Obviously, the FB/iPad app seminar was designed to do this.

Tonight, we will have having another activity that is designed to achieve the same goals. We have invited external folks to come pitch possible Final Projects to the students. In this way, the students will get a sense of what the "market" cares about.

Ideas also need "timeliness". Sometimes having an idea is not good enough. Obviously, coming up with an idea too late is bad ('cos someone would have done it), but some ideas fail because they are "too early".

Also, it is my view that engineers should build stuff and for CS3216, instead of merely building assignments that will be graded and then thrown away, I hope that the students will take the opportunity to build something real that people actually care about.

In this light, the students are welcome to work with external partners on real problems (if they want).

Obviously, there are limits on what could realistically be accomplished in a 7-week Final Project. Still, because CS3216 students are technically capable, it is not unlikely that they would be able to put together a reasonably good proof-of-concept prototype.

Hopefully, the Final Projects wouldn't just end when the course ends. Realistically, most times, they will. But I am confident that it is certainly plausible that we might see a working product that started in CS3216 someday if we try this enough times.

To conclude, I would like to say that I think it's good to share ideas. I think most people overrate their ideas. The probability that someone will come up with a completely original idea that no one else in the world has ever come up with is very low.

And in practice, coming up with an idea is the easy part. It's the execution that is really difficult and where most fail. That said, there are also some circumstances under which some stealth is a good idea. It just turns out that it's unlikely that in CS3216, these circumstances will arise.

I hope that for the duration of the course (which only has 9 weeks left really) that the students will share and generate ideas liberally.

Monday, August 29, 2011

On Peer Teaching/Learning

Since we are having the FB/iPad application seminar this evening, it seems fitting that I take some time to explain what we are trying to do with this exercise.

This is the 4th year that we're teaching CS3216 and also the 4th time that we're doing this seminar.

Obviously, I didn't quite get it right the first year and the seminar in its current manifestation is the result of several iterations.

It turns out that the seminar is not random assignment, but it is a specially designed component for CS3216 to promote peer learning.

First, since students are learning how to develop apps in CS3216, it is natural to study existing apps in order to learn the good, the bad and the ugly.

While it is easy for me to come up with a set of lecture slides articulating what is good, bad and ugly (and I did exactly that in my first year teaching CS3216), it quickly occurred to me that such an approach made little to no sense. That list is pretty common sense. Students would listen to me lecture, agree with me and I suspect would hardly remember a thing or be able to apply what they heard.

The FB seminar is the chance for students to come together to do a case study of an existing application to figure out what is good or bad about it. We hope that the very act of coming together to discuss would promote what's called "peer learning."

Thereafter, the act of presenting what each group had figure out further promotes peer learning and also helps students practise their presentation skills. It turns out that CS3216 typically have good presentation skills which is something that is helpful to learn through demonstration.

One of the mistakes I made for the first 2 years was not to control the duration of the presentations, and students then tended to ramble on and on. The seminar ran over time and learning was not optimal.

Since last year, we introduced Pecha Kucha, and the groups were "forced" to keep their talk to just 7 minutes. It turns out that this time limit has two advantages: (i) helped to ensure that class ended on time; and (ii) students are forced to think harder about what's important. :-)

Rambling is easy. Getting to the crux of what's important is hard and promotes learning.

Finally, the students are forced to focus on all the presentations because they are required to write a critique about one of the presentations (but not their own). This final act of "forced" reflection would hopefully encourage reflection and deeper learning. Students are also required to engage each other in the blogs for a week to promote further discussion.

We have no illusions that not every student would necessary learn what they are supposed to be learning in this process, but we try. While we ideally teaching to be highly uniform, information transfer is not the same as education. The efficient transfer of information is completely useless if students cannot actually apply what they learnt.

It is much more effective if students learn less but are able to apply, and more importantly, LEARN HOW TO LEARN in the process. The following lecture by a famous Harvard prof Eric Mazur probably explains what I'm trying to say in a more articulate way (for those who have the time and patience to watch the full lecture).