Editorials

Be Honest

Another practice of professionalism Uncle Bob Martin spoke of was Being Honest. He spoke of honesty on two levels, at least that was the way I heard it said.

First, be honest to yourself. Never commit code to the application before it is completed. Don’t fool yourself into thinking you are speed things up by checking in un-tested code. Be honest with the quality of the code you are submitting. Is it your best work?

A second level of honesty is the most difficult for me. When asked for estimates, be honest in your degree of uncertainty. When asked if you can deliver something by a certain date, that is really not the question. The real question is, how long do you think it will really take to complete something, and what are the degrees of uncertainty. It is more valuable to present an estimate of two days plus or minus one day of unknown.

Uncle Bob brought out the point that you will often be asked the question if you will try to meet a deadline. His point is, “Why would you not be trying already?” It really doesn’t change your estimate one way or another if you promise to try. That is simply not being honest, and conceding their desire for you to meet their deadline, not the deadline you have already promised to complete.

Let’s face it…estimation is the hardest thing in the world, and, while necessary, completely unreliable. For that reason, Agile methods don’t create estimates in the form of hours. The estimates are based on comparisons to how long it took to solve similar problems in the past. Comparisons are much more reliable than hours.

Another way we are not honest is reporting the time it really took to do something. Sometimes, through pride or some other emotion, we put in a lot of extra effort to make a deadline, but we keep it to ourselves. Hiding extra effort increases the expectations of those around us as to how much we can really accomplish. I’m not saying we can put in extra effort. Just don’t keep it to yourself. Make sure the actual work needed is known to benefit future estimates.

A final point about honesty is one I have experienced when outsourcing a project. When asking how things are going, the answer is that things are on schedule. Then, near the end of the project, nothing has been delivered, and the code base is a shambles. Be honest when you are over your head and need support. There will always come a deadline when all your false promises will be found out. Air it early. There are development practices that keep you from this experience altogether…something for another post..

Here’s to honesty. Thanks for the reminder, Uncle Bob.

Cheers,

Ben