Red Squirrel Reflections
Dave Hoover explores the psychology of software development


[Previous entry: "Assume it is Your Fault"] [Main Index] [Next entry: "Accuracy and Precision"]

Mind Your Metaphor
Thursday, October 16, 2003

I recently finished reading Steve McConnell's excellent Code Complete and found that a lot of his thinking supports Extreme Programming. I am now in the thick of his subsequent book, Rapid Development, and I'm again finding an overlap with XP. I highly recommend Steve's books to anyone who is serious about software development.

Yet, there is one piece of Steve's writing that I find myself continually questioning. In both of his books, Steve relates software development to building a house:

"Just as it makes sense to create a set of blueprints before you begin building a house, it makes sense to create an architecture and design before you begin building a software system." (Rapid Development, 62)

While there is certainly some insight that can be gained from this metaphor, I think it could potentially do more harm than good. By relating software development to the construction of rigid, stationary, real-world objects, aren't we sealing our own fate? Won't this metaphor lead us into developing software that is difficult to change? I'm not sure...Ken and Roy think it might:

"When you use a process meant for building inflexible things like bridges to build flexible things like software, it shouldn't shock you that later change costs more." (Extreme Programming Applied, xl)

On the other hand, maybe we simply need to learn more about construction in the real world. Mary Poppendieck attended a course in construction planning at the Lean Construction Institute. When she was asked by her classmates why she, a software consultant, was in a classroom full of construction foremen, superintendents, and project managers, she told them:

"'In software development, we are told we should manage our projects like construction projects, where a building is designed at the start, cost and schedule are predictable, and customers get what they expect.'

Silence. 'You’re kidding, right?'  'No, honest, that’s what we’re told.'

Incredulity turns to laughter.  The idea that programmers would want to manage projects like the construction industry strikes my classmates as ludicrous."

Mary's article goes on to describe how both software development and building construction can be informed by the methods of Lean Construction. This reminds me of something that Steve wrote in Code Complete:

"By comparing a topic you understand poorly to something similar you understand better, you can come up with insights that result in a better understanding of the less-familiar topic." (7)

I don't know the first thing about building a house, so a metaphor that compares house building with software development is not going to provide me with many insights. As an ex-football player, though, I found this huddle metaphor useful. What past experiences in your life can serve as metaphors for the intellectual challenges you are facing today?

Update: Steve points out a limitation to the house-building metaphor on page 172 of Rapid Development..."Unlike building a home, in software the only way to refine the product concept...is to actually build the software."

Posted by Dave

Replies: 3 comments

If you look at McConnell's latest book "Professional Software Development" he makes the case for all developers to have the equivalent of a professional engineering certification, and to undergo continuing professional education to maintain skills levels. He seems keen on structured professional development, and process frameworks - not typically found in XP projects. This pov might be used to support Darrel Norton's view that XP requires skilled developers. Steve has a whitepaper on his site tho' that states his views on XP more clearly than I can.

Regards
Richard

Posted by Richard Lee on 10/21/2003

I agree that XP requires skilled developers, but I do not think that certification is the way to do it. It only stands to benefit the people that sell certification materials. Did you notice that the study materials list includes almost all of Steve McConnell's books? For one of the most coherent reviews on why *not* to certify, see Tom DeMarco's (of Peopleware fame) article at http://www.systemsguild.com/GuildSite/TDM/certification.html.

Posted by Darrell on 10/23/2003

By the way, I'm just starting to read the Poppendiecks' book ("Lean Software Development") and it looks very promising so far. In essence, it looks at the example of lean manufacturing and (in particular) lean product development as practiced by Japanese companies and applies the ideas to software development.

Guess what, Toyota and Honda don't "create an architecture and design" before they develop a new car. They don't try to get everything right up front. Instead they treat development as a highly decentralized learning process.

If the Poppendiecks are right, most software development is a lot like new product development in the manufacturing sector. If so, I think it's exciting that we can learn lessons that the manufacturers have learned, especially the Japanese car manufacturers who completely changed the industry in the eighties and nineties.

Posted by Christian Murphy on 10/23/2003

Powered by Greymatter