The black art of software estimation

A while back I watched a TV show starring a magician known as Criss Angel.  During this show, I learned about the secret art of software estimation…  Lie.  Okay, well maybe it’s not about lying.  It’s actually more about understanding a few truths.

In the show, Criss was going to be covered in chains, locked up into a coffin, which had explosives placed around it and then it was placed in the middle of the road.  He had n-seconds to get out of the coffin or it exploded.  If the explosion didn’t kill him, there was also a car coming at him at full speed once a buzzer was sounded!

Sound like work sometimes?  Feels like the cards are stacked against you? Criss was also kind enough in this episode to reveal the most important thing about his trick.  Perception is just as important as reality (sometimes).  In reality, Criss finished that trick well before anything bad could have happened.  He trained himself to be sure of that fact, diligently.  He was confident he could do it in fractions of seconds.  Right before the trick started he said to the camera, “The secret is that when you hear the buzzer ring to launch the car, you think I start taking the chains off.  In reality, the second they close the lid I start to do my job… by the time the car starts, I am almost done.”  So, although the world appeared to be coming at him fast, it didn’t really matter.  He knew exactly how long it took to do a job and started doing it the second he could.

However, he also knew that showing you how fast he could take off chains and get out of a box isn’t exciting.  If he popped out before the car even started that would be anti-climatic.  So he made sure to find the happy medium.  Quietly finish the major work early, do the minor work after that, and pop up exactly at the right moment.

If you started to solve issues in your code before anyone else even knew about them… how much more could you accomplish? If you practiced various tasks at home, how much easier would it be for you do it at work?  If you were done before someone pressed “go”, how much would that free you up to do other things?  If you gave yourself a healthy buffer of time, how much would unplanned things bother you?

Don’t forget to manage the expectations.  If you tell your boss 2 weeks to do a job and show up the next day code complete… that is bad.  However, if you are done with the majority of the work by the end of the week… spend 1/2 the next week with the incidentals… and then deliver your project early, your boss will cheer.

Hooray software!

Final aside… If bad things happen outside of your control, make sure you communicate that.  If it’s simply not possible to do it, don’t.  I am sure, even though Criss didn’t say so, that he had lots of safety nets and would have stopped everything had he failed to get out in time.  Make sure you know when to call things off.

Post a comment or leave a trackback: Trackback URL.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: