Software Developers and the Estimations
Recently I was having a conversion with one of my software developer friends and he was complaining about missing schedules on the delivery of his project. Maybe the estimate of projection completion time was not proper. A lot of things were discovered during project execution and things went awry. The result was an expenditure of currency you are already scarce in: time. I figured out from our conversation that the ways estimate was done was by a simple democratic process. Managers asked each developer how much time they 'll take to complete their project and they summed up whatever estimate developers gave for their individual efforts. I am sure there would have been some safety factor applied to the resulting some.
Since a lot has been said about the estimation of software subject and people spend probably years or months in figuring out what is the proper way of estimation of project, so I'll not spend a lot of time in discussing what is the best way to. Starting from waterfall model of spending full fledge phase on the estimate to agile way of relative estimates and story points we have already covered a long journey.
Here I wanted to share my observation on the estimates given by developers and why it often goes wrong. It is accepted fact in project management that developer’s estimates are aggressive and often missed. I did a quick google search on why developers estimate is aggressive, apparently, that is the best way in modern time to get most reliable, accurate and satisfactory information about almost anything(skip almost). But I didn’t find anything on first two search pages.
Thus, started having my own thoughts about why we developers are so bad at the estimate. And ultimately with my limited wisdom, I figured out an answer to this question in one word. It is called ego. It is probably true about even the humblest of us. I omit explanation for this from here but believe me it is true.
So when our supervisor asks for an estimate from us we take it as a challenge to judge our ability to finish a task in a given amount time. Now if that time is already given we work hard to do that i.e. finish task in given time. If the time is unspecified we try to minimize it as much as possible. After all, that is what we are trained for: Optimization. Now this optimization is applied considering smartest solution but what others expect is a feature-rich solution and not the one done using best of the techniques and creative skills. So often there is a mismatch between what we estimate and what we spend.
Another issue with developers providing estimate is again imposing a sort of self-guilt on ourselves to avoid the situation when our estimate looks too big. “how come you take 10 days when others can do it in 2”. Believe me, we are most afraid of species of those words. Thus we (try to) present you a date you cannot dispute, not because you are convinced with our estimate but because you see it as ridiculously low. And why won’t you believe it when someone who has implemented is giving estimate himself?
Now when we are faced with reality and developers estimates are found wrong this is the common questions, ‘you yourself gave that estimate now you are not able to do that ? “ or “who can estimate your task better than you? “ well those questions sound logical but they are not. Apart from the practical inability of developers giving a proper estimate of their own task, there is in general restriction imposed by nature on giving anything right about oneself by anyone. You may not believe me but I have not seen myself ever in the way you have seen me, I mean literally that not figuratively. I always need a mirror to see me, I can’t shake my own hand in the way you shake. I myself can’t judge the execution plan based on my own ability. Counterintuitive it may sound but it seems to be more natural explanation than out wishes and expectation that we have been able to do that better. We need to live with this acceptance that we are actually better judges of others and not of ourselves.
Since a lot has been said about the estimation of software subject and people spend probably years or months in figuring out what is the proper way of estimation of project, so I'll not spend a lot of time in discussing what is the best way to. Starting from waterfall model of spending full fledge phase on the estimate to agile way of relative estimates and story points we have already covered a long journey.
Here I wanted to share my observation on the estimates given by developers and why it often goes wrong. It is accepted fact in project management that developer’s estimates are aggressive and often missed. I did a quick google search on why developers estimate is aggressive, apparently, that is the best way in modern time to get most reliable, accurate and satisfactory information about almost anything(skip almost). But I didn’t find anything on first two search pages.
Thus, started having my own thoughts about why we developers are so bad at the estimate. And ultimately with my limited wisdom, I figured out an answer to this question in one word. It is called ego. It is probably true about even the humblest of us. I omit explanation for this from here but believe me it is true.
So when our supervisor asks for an estimate from us we take it as a challenge to judge our ability to finish a task in a given amount time. Now if that time is already given we work hard to do that i.e. finish task in given time. If the time is unspecified we try to minimize it as much as possible. After all, that is what we are trained for: Optimization. Now this optimization is applied considering smartest solution but what others expect is a feature-rich solution and not the one done using best of the techniques and creative skills. So often there is a mismatch between what we estimate and what we spend.
Another issue with developers providing estimate is again imposing a sort of self-guilt on ourselves to avoid the situation when our estimate looks too big. “how come you take 10 days when others can do it in 2”. Believe me, we are most afraid of species of those words. Thus we (try to) present you a date you cannot dispute, not because you are convinced with our estimate but because you see it as ridiculously low. And why won’t you believe it when someone who has implemented is giving estimate himself?
Now when we are faced with reality and developers estimates are found wrong this is the common questions, ‘you yourself gave that estimate now you are not able to do that ? “ or “who can estimate your task better than you? “ well those questions sound logical but they are not. Apart from the practical inability of developers giving a proper estimate of their own task, there is in general restriction imposed by nature on giving anything right about oneself by anyone. You may not believe me but I have not seen myself ever in the way you have seen me, I mean literally that not figuratively. I always need a mirror to see me, I can’t shake my own hand in the way you shake. I myself can’t judge the execution plan based on my own ability. Counterintuitive it may sound but it seems to be more natural explanation than out wishes and expectation that we have been able to do that better. We need to live with this acceptance that we are actually better judges of others and not of ourselves.
This comment has been removed by the author.
ReplyDelete