You Can't Handle the Truth!
"You can't handle the truth!" is an all time favorite movie line by Colonel Jessup, played by Jack Nicholson, in the movie A Few Good Men. In the movie Lieutenant Kaffee, played by Tom Cruise, is trying to get Colonel Jessup to admit ordering a "Code Red". Kaffee is demanding the truth to which Jack Nicholson's character replies "You can't handle the truth". Col Jessup goes on to explain that he is the one that has to make the difficult daily choices to protect the very freedom that Lt. Kaffee enjoys but chooses to question the method on. Life is like that sometimes. We are afraid to tell the truth; to be honest. For many different reasons we refrain from being honest. This apprehension is necessary in many cases to avoid being rude or unpleasant. Yet other times, it may be necessary to be unpleasant because the truth is not only important but necessary and obligatory. Providing estimates and level of efforts in software development is one such case.
In software development the fate of the delivery depends on the programmer. It's the programmer that must provide working software. If the software has defects, the programmer will need to fix them at the eleventh hour. Level of effort is normally provided by the programmer. Much of the program's estimates and resources are gathered and allocated based on the programmer's estimates. That's a great deal of responsibility for the programmer.
The programmer, being an overachiever by nature, wants to shine and deliver the product correctly and quickly. Or maybe, it's because the programmer is naive that he underestimates the effort. For those reasons programmers tend to provide underestimated levels of effort. Sometimes it is not even and underestimation but simply that the programmer wants to provide a pleasant answer. Providing the project or program manager with one day level of effort is a more comfortable message to deliver than a two week estimate. Telling the customer that the server will require 30 minutes of downtime is more pleasant than telling them that it will take four hours.
As comfortable as it may be to provide pleasant estimates, it is better to provide the realistic estimates. Or if you really don't know it's better to say let me look into it and get you an estimate. The true level of effort will reveal itself sooner or later. It is better to reveal it sooner rather than later. Not only can managers and customers handle the truth, they deserve it. As much as they hate to hear the unpleasant truth, they subconsciously demand it. The manager deserves to know the true estimate so they can make the appropriate decisions, raise the red flags, acquire the additional resources. These decisions adjustments are easier to implement sooner rather than later. Time is money and the longer you delay revealing the true estimate, the more that the solution is going to cost.
Programmers must stop self imposing short deadlines in favor of pleasant responses. In either case you will deliver the bad news. If you self impose a tighter deadline you will eventually have to deliver the bad news that you underestimated the level of effort. Then, how pleasant will be when you tell your manager that you have not completed your task because you underestimated the level of effort or even worse how pleasant will it be when the project fails?