I just finished with Neal Ford’s keynote, and am waiting for Jeff Blankenburg to start his talk in lieu of Jesse Liberty on Silverlight. I have to say I disagree with Neal about his choice of metaphors for software engineering. Having worked in a RUP shop before, I’d liken the blueprints of traditional engineering with the UML diagrams popular in the RUP methodology. Neal was saying that the actual code we write is the equivalent of a blueprint, and that the compiler is the manufacturing phase, but had to admit that the metaphor doesn’t fit exactly because in traditional engineering, the manufacturing part is the most expensive and time consuming phase. Well obviously the writing of the actual code is the most time consuming, expensive part of software engineering. The compiler is more like the tools that the laborers use to DO the manufacturing.
Agile practices eliminate the UML dependency of traditional RUP practices, and so the metaphor starts to break down from that side as well, but there’s not much we can do about that. I suppose in our agile development practices, it’s closer to having the engineers do the actual construction, sometimes with the assistance and guidance of a "senior" engineer with whom they must discuss all design decisions before committing them to concrete.
I totally agree with most of the rest of the talk, though. Except maybe that last part about the type safety… I loves me some type safety… it’s my thing. Sorry.