This is a daily struggle of the developper nowadays : to give accurate estimates of the work we are doing, or we’ll have to do. When was the last time you succeeded to give an actually accurate estimate? You know, the one that perfectly fits the amount of work to do, in the exact time frame, with a clear vision of what you were meant to do? It’s been a while, isn’t it?
How can we do better?
There is several reasons of being asked to estimate a task, a story or even a project.
1) The task/story is allready defined, and the team has to make sure that its aim will fit nicely the team’s ambition (and commitment) by the end of the sprint.
This is a complicated situation, that implies you have both a fixed budget and a fixed scope. In this particular case, estimating tasks/stories is a pure waste of time. You’d better focus on the most critical part of the work, analyse it, design it, code it, but doing planning poker or similar exercises will not, for sure, delayed the deadline nor extend the budget.
2) Business/Management need to arbitrate the next priorities
In this case, the “guys over there” surely at best want to calculate the ROI. Nothing wrong with that, obvioulsy, but it indicates that they have limited budget. So, why do not ask for the budget directly, and try to build the best possible solution with them?
At worst, Buisness/Management are lacking of vision, so they try to select cheapest projects/features. Yes, you read it right. Some organisations are planning according to the cost instead of the value… If it happen in your company, don’t stay inactive, try to involve the product team, show them how a team of passionnate developers can help them to improve their results by incrementally shipping value to them (and yes, a Continuous Integration environment can help a lot, as a Continuous Delivery process). Invite them to some cooperation workshop (ever heard of EventStorming?) to prove that you are able to speak, and understand their “language”, their problem. Estimates won’t be necessary, because project’s stakeholders will be pleased to ask for change and see that they are part of the team that actually buid their product.
3) Management need to anticipate release dates, to coordinate with other departements / customers
That is, in my opinion, the best reason for a need of estimates. A media campaign to promote a new website has to be planned a long time before its actual launch, for example, and the launch of the website has to be as close as possible to it. But in this case, the scope cannot be fixed. Developement is an exploratory process. The only way to provide an extremely accurate estimate of a project is basically to break each feature in set of very tiny tasks. But to achieve this, you’ll have to explore your domain, and understand how to organise the software. That is impossible to do without coding it…
So, next time someone ask you for estimates, ask them why they need it. By understanding their needs like your understand their business domain, you’ll build a trust-based relationship.