If a team needs hard deadlines to work towards a goal there are bigger problems that demanding commitment cannot solve. It is often pointed out that software engineering is really quite different from anything we have seen before.

The demands on the speed of change and the capability to change fast means software is an evolving system. It's like building a house and then demanding another house with minor changes be built the next day.

If one day that capability exists we will be facing the same situation. Yes we can build houses pretty quickly, but we really cannot provide long estimates because changes most likely is contextual and never been done before - every house is different. It is even worse if good practices are not in place to allow quick and safe iterations. Some companies will be able to detect risk earlier and faster because the house was designed with maintainability and testability in mind. Others will be crippled because the effects of change are unknown and undetectable.

Software is not making cars on a factory line. It is evolving the car on a factory line. Lean says what's the point of estimating when will Car V1 become Car V2? It's waste. Nobody can know. Why don't we just see what is the most valuable increment, just proceed to make Car V1.01. The result wouldn't have changed whether we estimated or not.

Software Engineer

Software Engineer