Are Estimates Killing Your Software Development?

Photo by Luke Peters on Unsplash

Are Estimates Killing Your Software Development?

Encouraging a shift from reliance on estimates to a more dynamic and responsive planning process in software development

Traditionally, software development has relied heavily on estimates. Clients ask for timelines, managers estimate project lifespans, and developers are pressured to meet those predetermined deadlines.

But a recent article by Dr. Picox (https://drpicox.medium.com/asking-for-estimates-the-telltale-sign-of-ineffective-software-development-practices-cd54a9d8c60d) argues that this focus on estimates can be a red flag for much deeper issues within your software development process.

There are several reasons why estimates can be detrimental to a project.

Firstly, estimates can incentivize rushed work. When a team is fixated on meeting a deadline, they may cut corners or sacrifice quality in order to get features completed on time.

Secondly, estimates can damage team cohesion. The pressure to deliver on an estimate can create a hostile divide between product and development teams, with each side feeling defensive or antagonistic towards the other.

Finally, estimates are inherently inflexible. The nature of software development is that requirements can change and unforeseen challenges can arise. Estimates don't account well for this reality, and clinging to them can make it difficult to adapt to a changing landscape.

So, if estimates are a bad idea, what should we do instead?

We have to focus on value and collaboration over deadlines and predictions. Instead of asking "How long will this take?", a better question might be "What's the next most important thing we can do?".

This approach prioritizes delivering the most impactful features first, ensuring that the project is constantly delivering value to the customer. This method also fosters better communication between product and development teams, as both sides work together to identify the most valuable path forward.

This shift away from estimates and towards a more dynamic approach is championed by Robert C. Martin, a renowned software developer and author of the influential book "Clean Craftsmanship" (https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/B09Y9XKBZR).

Martin emphasizes the importance of respecting the rights of both the customer and the development team. Customers have the right to changing priorities, and developers have the right to a sustainable workload that allows them to produce high-quality work. Focusing on delivering value ensures that these rights are upheld.

Of course, this doesn't mean that planning goes entirely out the window. Agile methodologies, which emphasize iterative development and continuous feedback, can provide a strong framework for planning without resorting to rigid estimates. By breaking down projects into smaller chunks and constantly reevaluating priorities, agile teams can stay responsive to change while still delivering value.

In conclusion, while estimates may seem like a necessary part of software development, they can hamper quality, hurt morale, and hinder your ability to adapt to changing needs. By prioritizing value and fostering collaboration, you can move away from a system built on estimates and towards a more dynamic and effective development process.