Is programming like manufacturing, or like physics?
We sometimes hear of enormous software projects that are
canceled after running years behind schedule.
On the other hand, there are software engineering methodologies
(inspired by similar methodologies in manufacturing)
that claim (or hint at) objective estimation
of project complexity and development schedules.
With objective schedule estimates, projects should never run late.
Are these failed software projects not using proper
software engineering, or is there a deeper problem?"
Read on for one man's well-argued answer, which casts doubt on most software-delivery predictions, and hits on a few of the famous latecomers.
"A recent academic paper
Large Limits to Software Estimation
(ACM Software Engineering Notes, 26, no.4 2001)
shows how software estimation can be interpreted in
algorithmic (Kolmogorov) complexity terms.
An algorithmic complexity variant of mathematical (Godel)
incompleteness can then easily be interpreted as
showing that all claims of purely objective estimation of project
complexity, development time, and programmer productivity are
incorrect. Software development is like physics: there
is no objective way to know how long a program will take to develop."
Lewis also provides a link to this "introduction to incompleteness (a fun subject in itself)
and other background material for the paper."