For decades now, the dominant metaphor for software development, at least
in academia and in the trade literature, has been to treat it like an industrial
engineering problem. Thus we call what we do “software engineering,” we
attempt to define and compartmentalize its processes, we institute
measurements and quality control cycles, and we treat the whole thing more
or less like an assembly line.
It is a useful metaphor, to an extent. The problem is that the metaphor is so
ingrained that we tend to forget that that’s all it is, that knowledge work is
not industrial work and that coding is not manufacturing. We convince
ourselves that what we do actually is industrial engineering and then we wail
in desperation when we see that we’re not up to the standards of other
engineering disciplines.
via
PragPub, issue #7, January 2010.