The Idea Dude


Friday, January 15, 2010

Unscrambling the egg

I can't believe I haven't blogged this year. It has been crazy. There's definitely a new sense of optimism in the city and with our clients. Feels like everyone woke up on 1 Jan and realized they are a year behind. In just two weeks, we've hit some great milestones in our consulting work, found some long lost friends and made a couple of new ones. Not to mention some new opportunities on the horizon.

But that has nothing to with unscrambling the egg. The title probably should have been something like "Software development is a non-linear activity". But that would be boring.

I read a book about magicians a long time ago. Every year, they would gather for a contest to see who had the neatest trick. One particular one did the most simple thing, he scrambled an egg and proceed to unscramble it, drawing gasps of amazement from his peers.

The story has always stuck with me. Unscrambling the egg is the holy grail. Whoever can figure it out will unlock the secrets of the universe.

I digress once again. Looking back at the last few months, it is interesting to see even with years of software development experience we still get it wrong when it comes to estimation. Most of the time, we get it right to within days. Usually the pragmatic estimate is the average guess of Tony and myself. He tends to be more conservative and me, well let's just say I've often said "how hard can it be?".

But there is always that one feature that looks like an iceberg. Looks pretty simple but in reality as you get close you realize 90% of the work lies hidden. Which leads to the maxim, if you going in at a fix price, charge as much as the client will bear otherwise, your effective earnings will be one sixth of what you thought it will be. A better way is build a relationship with your client and bill on a hourly basis with an estimate of the final outcome. That way, you don't end up cutting corners to save time and the client pays a fair price. End of the day it is a win-win, you get to earn a fair wage and the client gets a quality product. The thing I learnt over the years, is to be open with the client and share the issues. You'll be amazed that they are actually quite understanding if they feel like they are part of the problem. What they don't like is surprises, especially nasty ones.

But software development is sometimes like scrambling and unscrambling an egg. The 80/20 rule is often more like 90/10. You get 90% of the feature in 10% of the time and then hit the wall. This is when you're unscrambling the egg, i.e. it takes a lot lochrome://intouchlink/content/buttons/itl-second-home.pngnger, and sometimes not possible. That last 10% could be a simple change to the way the user interface works or restoring a saved state in a multi-input wizard.

I remember the time a team of 40 developers stood around for a couple days while one developer had to fix a particulachrome://intouchlink/content/buttons/itl-second-home.pngr nasty Windows related bug. The problem is it is not linear and proportional to the time you took to do the first 90%. The last mile is often the killer. Ask any marathon runner...

So next time you hit a wall in whatever you do, remember how easy it was to unscramble an egg but it is difficult if not impossible to unscramble one.

A belated Happy New Year!


Post a Comment

<< Home