Estimating Software Development

Why do good developers suck at estimating time and how do you fix it?

Markus Pope

In my experience, software development projects are notoriously difficult to estimate. That's one of the reasons, I think, we have invented a slew of processes to try and reign in out of control projects. Agile processes like SCRUM and SAFe were invented to break down software projects into manageable chunks and make them predictable. Still, predictability in software development is a complex beast to tame.

vincent-coding.webp

I've developed for and managed many waterfall software development projects over the past 30 years. The typical development cycle for major upgrades to software suites (large solutions) always seems to be about eighteen months. While we didn't often miss the mark when it comes to requirements, eighteen months is too long for marketing to wait on product. A year and a half is eighteen months of lost opportunity.

Of course, there are products that justifiably take years to build, due to their complexity. Predictability is still a very important factor when trying to sync up your marketing with your MVP. Coordinating an effective product launch requires notifying users with increasingly detailed teasers and maybe even presales. At the same time you're working on marketing, you're trying to manage funding, and development. Three things you don't want when launching new products:

  1. Wasting money on marketing too early in the process.
  2. People losing interest because your product is late.
  3. Running out of funding before your MVP is complete.

For these reasons, I favor Agile processes over waterfall even when you release on a "waterfall" timeline; however, using Agile processes doesn't magically fix your predictability. That's because great developers suck at estimating time. Good developers are great at estimating complexity, though. So, when managing a project, I push the developers to estimate their work based on how hard it will be.

By breaking work into two week sprints, executing a few sprints, and ensuring sprints end in completed work, you can calculate how long it takes to complete tasks with varying complexities. That, my friends, leads to predictability...at least...it leads to more accurate predictions when compared to waterfall.

Your developers predict complexity and you translate complexity into timelines.

Some things to note:

After your team has estimated complexity, and you have truly completed some tasks of varying difficulty, you can calculate the team's "velocity." You can then use velocity to predict timelines and sychronize with your marketing.

ℹ️
If you have an out-of-control software project, please feel free to reach out. We'll be happy to analyze your processes, and your team, to see if we can help!
Share Article
Comments
More Posts