November 29th, 2004
Bosworth on simplicity and complexity
Adam Bosworth’s talk at ICSOC04 (International Conference on Service Oriented Computing) has generated interesting and compelling conversation about the virtues of simplicity versus complexity in building software foundations:
"It is an ironic truth that those who seek to create systems which most assume the perfectibility of humans end up building the systems which are most soul destroying and most rigid, systems that rot from within until like great creaking rotten oak trees they collapse on top of themselves leaving a sour smell and decay. We saw it happen in 1989 with the astonishing fall of the USSR. Conversely, those systems which best take into account the complex, frail, brilliance of human nature and build in flexibility, checks and balances, and tolerance tend to survive beyond all hopes."*
>
o it goes with software. That software which is flexible, simple, sloppy, tolerant, and altogether forgiving of human foibles and weaknesses turns out to be actually the most steel cored, able to survive and grow while that software which is demanding, abstract, rich but systematized, turns out to collapse in on itself in a slow and grim implosion."
"Consider the spreadsheet. It is a protean, sloppy, plastic, flexible medium that is, ironically, the despair of all accountants and auditors because it is virtually impossible to reliably understand a truly complex and rich spreadsheet. Lotus corporation (now IBM), filled with Harvard MBA’s and PhD’s in CS from MIT, built Improv. Improv set out "to fix all this’. It was an auditors dream. It provided rarified heights of abstraction, formalisms for rows and columns, and in short was truly comprehensible. It failed utterly, not because it failed in its ambitions but because it succeeded."
Pito Salas, who headed up Improv development, seems to agree with Bosworth:
"In the end it didn’t go anywhere, probably because in setting out to improve on spreadsheets, Improv lost the essence of a spreadsheet and in doing so lost the market."
Bosworth goes on to give examples of simplicity winning, such as search (free text strings rather than complex Boolean queries rule) and HTML, XML, RSS 2.0 and PHP versus more formal and complex languages and protocols such C++ and Web services protocols like WS_Addressing or XML schemas.
James Snell, a blogger who works in IBM’s Emerging Technologies Group, comments:
"The idea [in Bosworth's ICSOCO4 speech] that is resonating most with me is the idea that sloppy software has traditionally been more successful than "Well Architected" software. HTML has become the Koine of the Internet because it is sloppy rather than in spite of its sloppiness. It’s kind of like the English language. Yes, you can be very formal with it; yes there are very strict rules for its formal use; but hell, who in their right mind actually follows those rules when they’re trying to do simple things that do not require such formalisms? One should never misunderestimate the power of sloppy tools that can be used in sloppy ways to solve real world problems. And yes, I used the Bushism "misunderestimate" on purpose to illustrate the point. HTML is powerful because you can totally screw it up and still do useful stuff with it. XML is useful because you can make it describe whatever you want however you want as long as you follow a few simple rules. The design of your elements and attributes can be thrown together sloppily as long as it gets the job done. At the same time, however, it is equally as important to have a tool that lets you do the more complex formal things. XML Schema, for instance, is rigid. RDF is rigid (extensible yes, but still rigid). The best tools are the tools that will allow people to achieve whatever degree of sloppiness they want and still solve the problem."
Ultimately, what’s important isn’t whether you use PHP or C++–it’s the information and, in Bosworth’s universe, it’s the ability for content to be "effortlessly aggregated, evaluated, filtered, and enhanced."
"Think of the radio. When it was a novelty, the real value was in the radio itself. There was relatively little content, but lots of people wanted the radio. At a certain point, however, radios got good enough and transmission got good enough and the value ineluctably swung to the content. This is why the DRM fights are so bitter, why PodCasting is so revolutionary, why Howard Stern was paid so much to play on a private radio model. That’s where the value is. We have arrived at the same point for computing. The value is neither in the computers nor in the software that runs on them. It is in the content and the software’s ability to find and filter content and in the software’s ability to enable people to collaborate and communicate about content (and each other). Who here really cares if Excel adds a new menu item unless it is one that lets you more easily discover information on the web, possibly update and interact with it or with others about it."
Bosworth’s notion that simplicity in the long run wins is an implicit oversimplification. There is constant tug of war between simple and complex, structured and unstructured, rigid and pliable that eventually finds temporary stasis. PHP, for example, is less rigid that other languages, but it still enforces a structural framework. Simplicity is in part the art of reducing and hiding complexity, generating less friction (wasted time, bloated code, mental aggravation, etc), but achieving an ambitious result. As Einstein said, "Everything should be made as simple as possible, but not simpler."











