I recently came across a talk on YouTube titled History of Software Engineering, given by Paolo Perrotta. Normally I find online videos to have a low information-to-time ratio, but this one was excellent. It’s not too long, with plenty of humour, and makes many serious points that resonated with me.
Comparing building software to building bridges
This is something I often do — the two bridges that enter San Francisco are world-famous. Why can’t software engineering be like civil engineering? Paolo takes this head on. He explains it’s a false comparison, and that most civil engineering projects are the same, and can be repeated over and over again. But that in reality civil engineering actually has its own unique projects, with schedule delays, cost overruns, and unique problems — just like software projects.
Design and Build
Conventional wisdom dictates, according to Paolo, that the the design phase of a software project is that done by a software architect, and results in the diagrams, the system design, the flowcharts. The build phase is when the humble programmers implement the design. Now all professional programmers know this is bunk — to put it nicely — and Paolo concisely explains why. It’s because the design phase includes coding, it’s an integral part of the design. The build phase — compilation — is so cheap, almost free in fact, that no-one really notices it.
The economics of software are completely different to that in other industries. In other industries the build phase is the most expensive part, but in software the design phase is almost the entire cost. And this is a key reason why existing engineering practices are often difficult to apply to software development.
The talk is compelling — you can check out the video below.