August 19th, 2024

Software estimates have never worked and never will

David Heinemeier Hansson argues that software estimation has failed for medium to large projects due to unclear requirements, advocating for a budget-based approach that allows flexibility and adaptability in development.

Read original articleLink Icon
Software estimates have never worked and never will

David Heinemeier Hansson argues that software estimation has consistently failed since the inception of computing, particularly for medium to large projects. He contends that as software development becomes routine, it transitions into products or services that can be purchased rather than built. The challenge lies in the nature of novel work, where the exact requirements are often unclear until development begins. Past attempts to specify these requirements upfront have led to unsatisfactory outcomes, as they fail to address real problems that only become apparent during the development process. Hansson advocates for abandoning traditional estimation methods in favor of a budget-based approach, as outlined in his Shape Up methodology. He asserts that programmers can deliver quality software on time when the scope remains flexible during development. This approach allows for necessary trade-offs and adjustments, ultimately leading to better products. Hansson emphasizes that successful software development is about adapting to human nature and understanding that initial requests may not accurately reflect the final product needed.

- Software estimation has historically failed for medium and large projects.

- Novel software development often lacks clear initial requirements.

- Traditional upfront specifications frequently lead to unsatisfactory results.

- A budget-based approach allows for flexibility and better outcomes.

- Successful software development relies on trade-offs and adaptability.

Link Icon 2 comments
By @sgbeal - 3 months
To clarify a distinction which DHH doesn't explicitly make in that post: we collectively suck at project-level estimates, but most developers eventually become fairly reliable at feature-level estimates, provided they're familiar with the code base in question.