Wednesday, March 18, 2009

Programmers tend to be optimistic

If you ask a software developer to estimate the amount of time that will be required for them to develop a piece of software (either large or small), they will almost always give an answer that is too short. If they estimate 40 hours, it may very well end up taking 80.

I believe that the reason for this is precisely because the developers enjoy what they do. When offered an opportunity to do something new, they tend to look with enthusiasm at the challenge but overlook the tedious aspects of developing the new code – things such as testing and bug fixes. The more enthusiastic that a particular programmer is about developing software the more optimistic that he or she will tend to be.

Some developers are capable of giving reliable or even conservative time estimates. Since it varies with the individual only experience working with a particular developer will let you know whether or not to adjust the estimate that you get from them. Often the functional manager of the software development team can offer some advice.

Having said all of that, it is always a good idea to get a time estimate from the programmer who will do the work (if that is possible). Because the productivity of software developers varies so much the programmer is probably the best judge of the amount of effort required to write a particular piece of code (once you’ve factored in their level of optimism). Possibly even more importantly, when the programmer provides the time estimate he or she is also providing an implicit commitment to get the software done within that estimated period of time. If you simply force a commitment on the programmer (“I expect you to get this code done in 40 hours”) some developers will react negatively (“I can’t get it done in that much time”). Since developers tend to be optimistic a more common dialog is one like this:

PM: How long will it take to write this code?

Developer: I would say it will take 40 hours.

PM: So, if I give you 60 hours, there shouldn’t be any problem, right?

Developer: Absolutely not!

Then, if the programmer has worked for 40 hours and sees that the software is not completed yet, they will incentivize themselves to work all that much harder on it.

It you can’t get an estimate directly from the programmer, a good secondary option is the programmer’s manager. In that case the manager is providing the commitment and the manager can provide “incentives” if the developer is not meeting the estimate.

Implications:

Always get a time estimate directly from the programmer or from the programmer’s manager. Unless you have experience with estimates from that individual, don’t trust the initial estimate that you get. Add some hours to it. A good factor for an estimate from a programmer with whom you have never worked before is 50%. That seems high, but it also seems to work.

No comments:

Post a Comment