Why is this hard?

My experience is that most people ask for estimates because they are trying to line up when work can be started on the next feature or phase of the project, or when they can announce a release date. But that is not how software works. We’re not building bridges, we’re building dynamic ever-changing systems. Even an experienced developer who may have been working on the project since day one doesn’t have the information required to come up with a number that will be suitable for planning when the job will be finished. The best we can do is try something and see what we get, then reassess.

I’m thinking that instead people need to have the concept of investing in a software project in stages. We’re exploring it together. It might turn out that we decide to stop the project and you have to write off the costs so far given the information learned, or adjust the priority or scope of this or other features. Sort of like hiring someone to come up with a blueprint, except the blueprint is also a functioning system. The system can be refined/expanded from there. That’s better than pretending the job will be complete in a certain time period but then running into all the problems when it is not.

2 Likes