There are unknown unknown in projects, people won&#x27;t pay you for a full analysis and there is always the option that one library you rely on has a nasty bug you cannot foresee.<p>One doesn&#x27;t have to go very far and look for psychological issues when a major source of indeterminism comes from directly the imperfect tooling itself we use.<p>Sometimes software is compared to construction, except you don&#x27;t get to start with a perfectly detailed environment to build your software on. Until we have this major source of indeterminism in the tools themselves, pretending to fix issues on the estimation process alone is a fool errand.<p>I believe a as-400 project can be estimated fairly well now based on previous experiences. But how would you go estimating a project relying on, say, local browser storage? The only way is to go and build it and identify all the pitfalls yourself, and then the browser landscape changes and you get set back all over again.<p>Just following Safari rules on IOS to obtain a full screen mode sets us back a week on almost every releases. We started before they started messing with stuff, now we include a week of fixes in the schedule for every major IOS update, but we had no chance to predict this when the project started.