Monday, August 30, 2010

The Start Menu

Don't you hate it when you download some application on your computer and it installs itself under some obscure company name in the Windows start menu?

You visit a website and decided to download something - Video Editor 8.1. But since the default behavior of most installer creators is to put the shortcut under a folder with the company's name you find yourself scouring the start menu from top to bottom until you find Video Editor 8.1 hiding under Blue Fish Studios... jeez, I can't count how many time that happened to me.

People, if you're writing an installer for your application, unless you're either Microsoft, Google, Oracle or Adobe I don't remember your company's name, and I'll hate your program before I even start using because you've hidden it from me!



Tuesday, August 03, 2010

Estimates vs. Commitments

The best way to make sure you never again get an honest effort estimate from the people in your team is to hold them to whatever estimate they gave you last time.

Estimates are deceptively similar to prices, in that they represent the cost of getting something done. But there's an essential difference between prices and estimates - you can't haggle over an estimate. And you shouldn't want to. That's like haggling with your cake on how long it should stay in the oven. It's just not helpful.

There is always (by definition) an amount of uncertainty built into every estimate. That is, after all, what makes it an estimate. You can chip away at this uncertainty by planning ahead in greater detail, or by confronting risks as early as possible, but you can't eliminate it altogether. There's always that essential gap between estimation and knowledge that's unbridgeable. What's left is intuition based on the experiences of past performance. Any reasonable estimate always incorporates that remaining gap as some inexplicable buffer that does not lend itself to further analysis. Accept it. You want this buffer there, and you want it to reflect as honestly as possible the amount of remaining uncertainty in the project.

When you hold people to their estimates you're giving them all the incentive in the world to artificially inflate them (and they will do so, even subconsciously). Past estimates need to be treated as what they are - historical answers to questions about uncertain matters. All you can do is learn from them and move on by trying to predict better in the future.

Getting estimates right relies on the interests of both sides - the receiver and the estimator - being completely aligned. Haggling destroys that alignment. Some people believe that haggling - purposefully lowering an estimate and holding people to it - can get people to work extra hard. That's like thinking you can get your plumber to finish his job quicker by paying him less. That's not how you conjure up motivation.

If there is inefficiency or procrastination in your team - those are problems to be handled on their own and you shouldn't sacrifice your ability to estimate in an attempt to combat them. People procrastinate when they dislike doing what they need to do - solve that problem by designing a work environment in which people actually like their work. People hesitate to begin working on a challenging task when they don't quite know how to tackle it; the uncertainty makes it very easy to rationalize doing it later. Solve that problem by cultivating an atmosphere that allows people to start with the hardest part of the job; that tolerates experimentation; that makes it painless for people to admit when they don't yet know how to do something and gives them enough time to learn. These are all tough, real problems that cannot be dealt with by just demanding they go away. You can't fight inefficiency simply by not allocating time for it. All you'll get is the same degree of inefficiency over a shorter time span with less actual work.

An estimate isn't a contract. Its relation to the world is "read-only". As such it has no influence on the price of work. People who are interested in good, honest estimates should start by divorcing them from any form of commitment.