Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
A simplified version:
- higher weight means more raw materials means more materials cost and time to assemble.
- higher weight means fewer cranes will be competing for the lifting operations, again driving up cost.
- and tangentially: higher weight of equipment also drives higher weight of supporting structures.
Which means if you can save a ton in equipment it can make a huge difference.
AFAIK and IIRC experienced engineers who work with calculations will have worked through decades of projects (either as part of the teams at the time or by reviewing budgets and bools afterwards) to compile cost calculations, but roughly if you tell those guys the type of the construction and the weight they already have a fair idea of the cost.
...which is a very misleading comparison. Measuring the build by weight is a rough but not terrible metric, and it applies to cars as well.
It also implies that there's such thing as reaching 100%, which is very wrong for software: most poorly written software uses 10x or 100x SLOC than what is required.