Sunday, January 07, 2007

The code is the design

It has always been sitting there at the back of my mind. And now, having someone else write it with clarity and force, I can see it is true.

of course I am nearly 2 decades behind the times, but better late than never.
Jack Reeves in 1992 published an essay (1) and followed up 13 years later with a commentary. (2)

Go read them.

No - you cheated. Go read them.

Ok _ I'll give you the precis.

Source code is the final design for a software project. The spec is not it, the screenshots, the careful word processed documents are not the design. The source code is the design, the blueprints, the final defintion.

Well, the actual building of a piece of software is compiling - often called the build process by a happy coincidence. Nowoften people comapre software engineering process to physical engineering. The actual physical manufacturing of, say, a house, is long and hard but it is based on detailed architectural plans that should (in theory) be followed to the letter and all will be well. In theory we could replace the builders, brickies and carpenters with robots, and save a fortune.

So we could imagine a future world where nanotechnology is the technology of the age, where tiny robots can build bridges and houses from the very elements surrounding them, if only we could program them to do so in the correct order.

And suddenly the physical engineering world becomes like the software world - harder to understand. We want a bridge built here. Get me nanobots !
Ok, build steel cables across the water. Oh hang on, how do we support steel thats only halfway across? Ok, pilings. From mud, But mud is less dense than concrete, so I need more elements for the pilings than exists in the mud where the pilings will be so first build channels to the mud from somewhere else and calculate the size of channel by, density of mud divided by lenght, oh damn - all of this before we build a bridge. Damn this design stuff takes a while - its a lot of upfront work.

And that is how we really compare software engineering with physical engineering.


Update
http://www.timesonline.co.uk/newspaper/0,,176-2546574,00.html
Well, here it is, not nanotechnology but "inkjet" printing of concrete. And I happily predict that the architects will have to become programmers. It will be harder and harder to design a house, but cheaper to build. The world is becoming software.






(1)http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm
(2) http://www.developerdotstar.com/printable/mag/articles/reeves_13yearslater.html

0 Comments:

Post a Comment

<< Home