In his great collection of essays
Why Does Software Cost So Much?,
Tom DeMarco makes the interesting point that the software industry
had grown from zero to $300 billion dollars (in 1993). This
indicates that the market had at least $300B worth of demand for
software, even while complaining continuously about the
cost and quality of the very same software. It seems to me that the
demand for software production, together with the time and cost
pressures, has only increased dramatically since then.
(DeMarco enlightens us that the perennial question, “Why does
software cost so much?” is not really a question at all, but rather
a goad or a negotiation. Also very true.)
Fundamentally, the demand for software production far outstrips
our industry’s ability to supply it. In fact, I believe that we can
classify most software methods and techniques by their relation and
response to the problem of surplus demand. Some try to optimize for
least-cost production, others for highest quality, still others for
shortest cycle time.
In the spirit of six-word memoirs, here are the sometimes dubious responses that
various technology and development methods’ offer to the
overwhelming demand for software production.
Waterfall: Nevermind backlog, requirements were
RAD: Build prototypes faster than discarding
Offshore outsourcing: Army of cheap developers
Onshore outsourcing: Same
junk, but with expensive developers.
Agile: Avoid featuritis; outrun pesky business
Domain-specific languages: Compress every
problem into one-liners.
CMMi: Enough Process means nothing’s ever
Relational Databases: Code? Who cares? Data
Model-driven architecture: Jackson Pollack’s
models into inscrutable code.
Web Services: Terrorize XML until maximum reuse
FORTH: backward writing IF punctuation time
SOA: Iron-fisted governance ensures total
Intentional programming: Parallelize
programming… make programmers of everyone.
Google as IDE: It’s been done, probably in
Open-source: Bury the world in abandoned
Mashups: Parasitize others’ apps, then APIs
LISP: With enough macros, one uberprogrammer
perl: Too busy coding to
same problems, mysterious solutions.
Ocaml: No, try
Groovy: Faster Java
coding, runs like C-64.
Don’t write your own, rent ours.
Programmers would go faster without administrators.