day 84
![]()
digital darwinism 6: american swiss cheese
Yesterday we examined the Swiss Army Knife as a model of robust design architecture.
Now, compare the stability of a Swiss Army
Knife design with the sloppiness of the design
of most software products. According to most
software engineering textbooks, product
development is an orderly process that
progresses from requirements capture,
preliminary design, detailed design,
development, and testing -- all carefully
carried out per the SEI CMM. When completely
mastered, software engineering is like churning
out Swiss Army knives. Everything is nice and
tidy, predictable, scalable, and controllable.
Central to the software engineering myth is the
idea of a software architecture, e.g., a
collection of clean interfaces and rules for
using them. In the business, these interfaces
manifest themselves as APIs (Application
Programming Interfaces - pronounced
"apes"). Every good software product starts
with a good solid architecture. Every good
programmer knows his or her APIs.
This model could not be further from
reality. In truth, most software products are
designed on the back of envelopes that are lost
or thrown away, the designers leave the company
half-way through the project, or the
competition upsets best-laid plans, causing
product re-vectoring in midstream. And this
happens on every day of the product development
cycle. As a consequence, few products have what
might be called an architecture. APIs are a
moving target. The concept of an architecture
is a fantasy.
digital darwinism 1
2
3
4
5
Daily Dose Index