"It takes too much time."
"They're not useful."
"They'll be wrong."
Estimates are not going to be perfect, but that does not mean that it's pointless to estimate tasks in a software project. Estimating not only helps a team to communicate, but estimates encourage an agile process.
Estimates Provide an Important Signal
Not estimating means the team will miss an important signal: the variation of the estimates.
When a team of developers reads a story, they form independent conclusions of the effort and complexity involved. Sometimes those ideas are close together and sometimes those ideas are very far apart. Both happen, both are to be expected, and both are important clues for planning.
When the estimates are far apart it signals that the team understands the problem differently. A developer with a low estimate may know of a library or a tool that can speed things up. A developer with a high estimate may know of a pitfall that others have forgotten. Sometimes a designer may add time for user testing or quality assurance for automated testing.
Close estimates can act as a barometer for the team. When the entire team estimates that a story is large, that signals complex feature. That could be a clue to break up the story in to smaller ones or that more research is needed. Estimates that are close and small help signal that the problem is well understood by the team. These stories are particularly well suited to for new team members being onboarded.
Estimation Allows for Failing Early
A key tenant of agile development is failing early. This allows the team to adjust, course correct, and get features and their product to the market more quickly.
Making estimates provides a baseline. It's not possible to know a team is running in to unexpected complication without first establishing what is expected.
When those unexpected complications happen, and they will happen, the team can work together to figure out how to adjust. There are a lot of options: adjusting the scope of the features, expanding the budget to buy new tools or services, expanding the team, or expanding the timeline.
Estimates Help Manage Uncertainty
Having estimates is agile in another way: it helps manage uncertanity. All estimates have an inherent amount of uncertainty. It's a lot easier to know what can get done next week than it is to know what will get done next quarter.
At Mutually Human we acknowledge this and have developed tools around it. One that we'll talk about later is the 50-90 estimation method. Using story points or time, this method helps quantify the uncertainty around a project or milestone. This can help guide budgets, team assignments, and story selection.
Estimates Help a Team Talk About the Plan
IT might need to provision hardware or prepare for a larger cloud bill. Announcements might need to be crafted to let users know about the new feature. Other teams may need an API that is being developed. Projects worth doing have a lot of stakeholders.
Just as estimates are a useful for creating a plan, they are useful for talking about a plan. Knowing the relative complexity of stories can help stakeholders plan their dependent work. The estimates can be used to project budgets and plan for when dependent projects should be started.
Estimates Help Adjust the Plan
Estimation helps manage complex projects in another way: they provide a framework for a conversation about the planned work.
Engineering is largely about tradeoffs. Sometimes a large story really is the most critical thing to do next; it might be required by another team or for a large set of features. Other times it can be postponed in favor of several quick wins. Knowing the relative size of stories or the relative lengths of time that they will take can help inform those decisions.
Other times a critical component is buried in a large story. Here product owners may be willing to scale back the larger story for one piece. It has been my experience that these scoping conversations happen organically in estimation meetings.
Don't Let the Perfect Be the Enemy of the Good
These are just a few of the benefits of properly run estimation conversations. The great thing is that these benefits do not depend on the estimation method used. A conversation around story points can work just as well as one based on time. It's up to the team to experiment and find what works for them.
It's a mistake to use estimates to develop a perfect, never changing project plan. Agile plans should change. Estimates can guide those changes and inform tradeoffs. It's worth estimating regularly.
A Guide to Estimation and Velocity
If you are feeling the pressure of hitting a deadline or accurately estimating your budget, this free guide can help you.Get Your Estimation Guide