Test Driven
One of the biggest factors in making Tinderbox possible, and practical, has been the development of test driven development.
Professionals don't like to talk much about the practice of programming. It used to be fashionable to say that you were an analyst or an architect or whatnot, not just a programmer; I remember with Ian Ritchie won the Turing Award and started his acceptance speech by saying, "I am a programmer", and this triggered a sudden outburst of surprised applause.
Times change. Tim Bray has a nice discussion of test-driven development and its potential to change programming from a craft to a discipline. He's right: test-driven development a simple change, it's not intellectually or mathematically complicated, and it's transformed the way I build software and -- more importantly -- the sorts of things we can make software do. In the past, new systems were malleable and exciting but, as they matured and stabilized, they became progressively harder to change and improve. Eventually, they were what they were; you could make small fixes but you couldn't do anything radical without courting disaster. It looks like test-driven development may change that.
Bray thinks this may move software development from an artisan craft to an engineering profession. I'm skeptical:
- We've been talking about making software more like civil engineering for a quarter of a century. It hasn't happened. It's not for want of trying, or lack of economic incentive.
- An important skill in the craft of software design is to listen to the code; if something is consistently hard or painful or unreasonably expensive to implement, it's a good idea to listen to what the code is trying to tell you. Twenty five years of failing to discipline the craft might be trying to tell us something.
- The information revolution is facilitating a return of craft-like customization and work practice to all sorts of industries, from clothing to cars. While we're talking about software factories, everyone else is mothballing the factory and building workshops instead.
- Attempts to professionalize software development -- to establish credentials and gatekeepers like the bar exams -- keep failing because the people who want to hand out credentials turn out to be eons behind the times. The gatekeepers end up on the wrong side of the gate, and we end up with mere credentialism.
Arts and Crafts is a growth meme for the new decade.