Tuesday, March 08, 2005

Meta-engineering

If you haven't already, I recommend you read these essays by Jack Reeves: http://www.developerdotstar.com/mag/articles/reeves_design_main.html They're not long, and the first essay contains most of the points; the others merely re-inforce the viewpoint. Jack Reeves' central thesis, in my opinion, is that the compiler is the thing which builds software, and is the equivalent of the whole manufacturing process in industry. And if the compiler is the thing which builds, then the source code is the design for the thing to be built. That isn't to say that there is no need for any more design than just the source code, simply that software "engineering" is more design-intensive than probably any other industry, since building software is so cheap (compilers do all the gruntwork). If you accept this thesis, I think you're forced to question the commonly posited parallels between software engineering and real engineering. When people talk about bringing engineering discipline to software architecture, what does that really mean? What does it mean to engineer designing? To engineer engineering?

No comments: