The Artima Developer Community
Interviews | Discuss | Print | Email | First Page | Previous | Next
Sponsored Link

Entropy Reduction
A Conversation with Luke Hohmann, Part II
by Bill Venners
March 22, 2004

<<  Page 3 of 3


Programming is Choreography

Bill Venners: You write in your book, "An architecture is like a carefully designed garden, and needs care and feeding." Can you elaborate?

Luke Hohmann: I think many people think about software architecture the way they think about city streets. When you build city streets, you come, you pave, and you come back in six years, after a lot of heavy wear and tear, and you patch a few potholes. And after another four years of heavy wear and tear, you scrape it all and you repave. That very inorganic view of the world is not how I think of modern software architecture. Modern software architecture is much more akin to an English garden that you plan and you plant and you weed and you improve. Yes, there's an overall plan, but the result requires more tending. I think that tending is one of the things that frustrates executives. Why does software require tending? Things shift on you. Your database just upgraded, you have XML infrastructure to deal with, the customer wants a middleware option, and an operating system just changed. There's more shifting in software than people realize.

Now, we do actually repave city streets and fix potholes, but the city streets metaphor is more about mindset. To me, the mindset of the city street builder is, I'm going to pave it and I hope to God I don't have to come back for ten years, because that's my cost model. Whereas to me, my expectation is that you are tending and nurturing this software architecture that you have created.

I'm cautious about using Alexandrian style building architecture as a metaphor for software development, for a couple of reasons. One is that similar to city streets, building architecture is very static. But number two is that I think developers deal with space and time differently, especially time, than architects. I find that dance choreography is a much better analogy. Choreography is much more akin to what software people do, because dance has elements that move relative to each other in time and space. In building architecture, you design a structure and how things move inside it. In dance, the structure is amorphous. It's called a stage. Yes, it has sides and a back wall, but that's about it. And the choreographer has these elements, these objects and data structures, which are interacting with themselves, and themselves changeable. To me, that is a much closer analogy to what a software architect does than building architecture. I think the Alexandrian patterns are great and wonderful, but I don't want to take them too far. I am definitely a person who wants to bring the organic metaphors, the movement, the ability for things to interact, to software. I think those metaphors are more compelling and powerful, and more accurately describe what we do.

Next Week

Come back Monday, March 29 for the next installment of this conversation with Luke Hohmann. If you'd like to receive a brief weekly email announcing new articles at, please subscribe to the Artima Newsletter.

Talk Back!

Have an opinion about the design principles presented in this article? Discuss this article in the News & Ideas Forum topic, Entropy Reduction.


Luke Hohmann is author of Beyond Software Architecture: Creating and Sustaining Winning Solutions, which is available on at:

Luke Hohmann is the author of Journey of the Software Professional: The Sociology of Software Development, which is available on at:

The Pragmatic Programmer's home page:

A good place to start looking into Extreme Programming is:

<<  Page 3 of 3

Interviews | Discuss | Print | Email | First Page | Previous | Next

Sponsored Links

Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use