Software development is not engineering

russell, 8 June 1998

As a process, there is no direct analogy between the design and implementation of software and (physical) architecture or engineering.

Software, like mathematics, is much more like art than engineering or architecture. The primary difference between software and engineering is that with the most minimal of tools, a single individual, entirely self-taught, can design and implement any of the world's software. There will always be the 19 year old who sets the world on fire in art as in software; this never happens in engineering because it cannot be done.

An individual may read engineering texts, and understand building and bridge construction, but it is unlikely or impossible - that any single individual could ever build a skyscraper.

Software as an activity can be approached as engineering, particularly from the testing and release management perspectives. But from a pure technology point of view, the irony of an engineering approach is that the effort and discipline that goes into doing so can be obsoleted with advances made by those 19 year olds or startup companies in their basements. This is because software is about ideas, not hard labor. Any and all "hard" labor in software can - and will - be abstracted away.

This is a good thing, because it is all about individual empowerment. A single individual - even a college or high school student - could create any of the best selling commercial software applications on the market today. It is not a matter of money, it is not a matter of management, it is about passion. Passion counts for far more than money or tools when it comes to software.

Engineering is needed when passion is lacking.