Sunday, September 28, 2008

Just Like Old Times

I'm getting the Sunday night dread of going to work tomorrow, a really juvenile feeling I don't think I've had since high school.

This job makes me feel young again, eh?

Friday, September 26, 2008

Leadership According to Bush

This is how he dealt with 9/11 and the current financial crisis, probably the two most significant events in his two terms:

1. Wait for things to become really bad.
2. Claim that nobody could've foreseen the problem.
3. Ask for a blank check to fix the problem
4. Reject any oversight or review. Just trust me.

Remember the tax cuts that were supposed to trickle down to the middle class? Something's trickling down all right. I love how the government that Republicans claimed could not be trusted to run a national health care system must somehow be trusted to fix Wall Street.

Thursday, September 25, 2008

Bailout

Thing is, I actually believe the government when they say that some financial institutions have gotten "too big to fail" and must be bailed out if we want our economy to survive.

Problem is, I'm not hearing much about how to prevent this from ever happening again. There are two obvious paths:

1. Prevent companies that are too big from ever failing. This requires effective and heavy-handed government regulation, which I'm not a fan of.

2. Prevent companies from getting too big. Break them up into smaller companies that can be allowed to fail, and let the market work as it should.

Otherwise, even US$700 billion is just a band-aid.

Friday, September 12, 2008

Small World

An old classmate from grade school just got moved into our bullpen. (A bullpen is a big cubicle where they try to cram more than one person in.)

It's bumping into each other again against this kind of odds (over two decades later, half a world away) that truly reminds me to try not to be too nasty to people.

Wednesday, September 10, 2008

oneConnect Ships

oneConnect is an instant messaging client and social network aggregator built around an address book, and we just shipped the iPhone version. It's available on the iTunes Apps Store.

You know you want it.

Saturday, September 6, 2008

Triaging Bugs

Towards the end of a software project, management's role becomes one primarily of triage. This is a delicate balance between schedule and features/fixes, and should not be undertaken with a one-dimensional analysis. For example, "it's just a small feature" is not justified. "There's still time" is also not justified. In fact, "this bug is really bad" is also not justified, much less "this will make the product better."

Take a look at the picture below:

Here I am evaluating a bug report on two axes: frequency and severity.

Starting from the top left corner, a bug that is severe but almost never happens is extremely expensive to fix. It will be hard to figure out what went wrong, and hard to figure out that the fix is the correct one. In fact, it's also entirely possible that introducing the fix for this extremely rare problem causes a more common problem to occur.

In the bottom right corner, we have bugs that almost always happen, but don't really bother anybody. Fixing them will make the product better for a lot of users, but they wouldn't be too angry if you didn't.

The top right corner is where you want to focus your engineers: the bugs that are really bad and occur frequently. "Really bad" usually means crashing, hanging (which is like crashing, as far as the user is concerned), or data loss.

The bottom left corner, of course, are bugs you don't really want to spend much time on. The bugs are not bothersome, and don't occur frequently.

Clearly, where to draw the curves are a matter of judgment and experience, but the important thing is to internalize that this decision must always consider more than one dimension. In fact, I left out an important third dimension: risk of fixing versus not fixing. Many fixes can end up as bad or worse as the bug it was trying to fix.