Grady Booch on Software Complexity

ziggy on 2005-03-18T16:12:26

Slides from Grady Booch's keynote at AOSD are now online. His talk is a pretty complete summary of the complexities we face in software design today.

The graphic he references on slide #7 is especially clear and insightful. Management complexity and technical complexity are broken out on two perpendicular axes to make a standard 4-quadrant management diagram. Interestingly, the lower righthand quadrant (low technical complexity, low management complexity) is where a great deal of the effort in software is placed. Funny, that.

This presentation, and in particular this diagram, highlights why so many of us talk past each other when discussing tools. Perl, for example, isn't a good fit on the top half of the diagram, where projects like embedded software and air traffic control systems are found. That's fine, because there isn't a lot of "developer mass" on that side of the divide. If you want to really increase productivity and reduce developer pain, focus on the more common kinds of projects where you find more people writing software.

At the same time, this breakdown also describes why Perl programmers (and Python, and PHP, and ...) have such an allergy to heavyweight processes, and tools like UML. Sure, they have the potential to make software projects more predicatable and produce more robust artifacts. But beneath a certain critical mass of (technical|management) complexity, these tools are more trouble than they're worth. A page of code can express more than a week's worth of clouds and arrows on a whiteboard.

All in all, this is a more complete view of the world of software, and goes far beyond Joel's Five Worlds essay. There is some really good material in this keynote, with analogies back to the worlds of physics, architecture, engineering and biology. I hope this speech pops up in MP3 someday.