"In reality, most projects worth doing are not repetitions of previous things."
Thank you for that.
If it has been done before -- same problem -- same technology -- then we should be able to clone that solution and avoid creating a software development project. If there's something novel -- new problem -- new technology -- then we can't easily predict the whole sweep of software development effort.
The whole Estimation Charade is an artifact of the way accountants exercise control over the finances. They require (with the force of law) that budgets be written in advance. Often in advance of the requirements being known. When we sit down to fabricate next year's budget, we're dooming some fraction next year's projects to a scramble for funding leading to cancellation and failure.
Accountants further require that software development be arbitrarily partitioned into "capital" and "expense". There's no rational distinction between the phases. The nature and scope of the work don't change at all.
Somehow, the accountants are happy because some capital budget has been spent (as planned 18 months ago) and now we're spending expense budget. From an accounting perspective, some kind of capital asset has been created.
Think of it. Some lines of code are a capital asset. Other lines of code are an expense.
Someday, I'll have to ask some accountants to explain how I can tell which was which.