<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx</link><description>My favorite conundrum, the difficulty of being simple , pops up everywhere I look these days. OpenXML document format vs the Open Document Format Point: OpenXML is so complex no one else can implement it . Counterpoint: Its complexity is due to the existing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1256523</link><pubDate>Mon, 11 Dec 2006 09:31:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1256523</guid><dc:creator>Michi Henning</dc:creator><description>&lt;p&gt;Thanks for an interesting article! I agree with much of what you say. In particular, it is not reasonable to expect complex features from a simple system. Beyond a certain point, to do complex things, the system providing the functionality has to be complex too. (The space shuttle is complex because it has to be, not because the designers like complexity.)&lt;/p&gt;
&lt;p&gt;In my opinion, the iPod is so successful because it provides the appearance of being simple: the case design is so minimalistic that a consumer definitely does not feel threatened. Moreover, even though an iPod is actually not that simple, the designers did a brilliant job at following the &amp;quot;You don't pay for what you don't use&amp;quot; principle. Those things that people commonly want to do with an iPod (skip a song, find a song, set the volume) are indeed simple. The complexity comes through only once I navigate to the more advanced menus. (But many people won't ever navigate there or, if they do, won't find it surprising that advanced features require a little more complexity.) So, the iPod has the *appearance* of simplicity and, in addition, the most frequently used functions *are* simple. The iPod embodies what many people (including Donald Norman, I suspect) would call good design.&lt;/p&gt;
&lt;p&gt;However, I believe that the analogy you present is inappropriate:&lt;/p&gt;
&lt;p&gt;&amp;gt; Those who dismiss various XML technologies, or XML itself, because of ugly complexities or&lt;/p&gt;
&lt;p&gt;&amp;gt; unpleasant constraints may someday look as prescient as the folks in the auto industry who&lt;/p&gt;
&lt;p&gt;&amp;gt; killed off the electric car [...] only to be humbled by the engineers who made the hybrid&lt;/p&gt;
&lt;p&gt;&amp;gt; system practical a few years later.&lt;/p&gt;
&lt;p&gt;There are two problems with that analogy. For one, implies that XML needs be as complex as it is and it implies that there will be a pay-off in the future for all that complexity. Both implications are unproven and untested conjecture. Second, the analogy then wields the stick: &amp;quot;only to be humbled...&amp;quot; In other words, we had better heed the warning, otherwise it might be XML users who will be humbled? So, I find that paragraph both inappropriate and manipulative.&lt;/p&gt;
&lt;p&gt;The complexity problem in general, and for XML and web services in particular, is not about complexity per se, but about *needless* complexity. And few people would disagree that XML and WS-* have long ago eclipsed everything that has come before it in terms of complexity, including CORBA, DCOM, and DCE. And yet, web services have not come even close to achieving the kind of show-case applications that CORBA can boast about. In other words, despite about seven years of hype and standardization, web services have not yet reached the level of usefulness reached by CORBA. That's a rather damning track record, in my opinion. And, by all accountes, the entire WS-* story gets more complex as time goes on.&lt;/p&gt;
&lt;p&gt;Much has been written about needless complexity, including by myself (&lt;a rel="nofollow" target="_new" href="http://www.acmqueue.org/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=396"&gt;http://www.acmqueue.org/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=396&lt;/a&gt;) and Jim Waldo (&lt;a rel="nofollow" target="_new" href="http://www.artima.com/weblogs/viewpost.jsp?thread=4840"&gt;http://www.artima.com/weblogs/viewpost.jsp?thread=4840&lt;/a&gt;, &lt;a rel="nofollow" target="_new" href="http://www.artima.com/weblogs/viewpost.jsp?thread=4892"&gt;http://www.artima.com/weblogs/viewpost.jsp?thread=4892&lt;/a&gt;). Standards bodies, as long as they don't commit to standardizing *only* existing best practice, will continue to produce technology that is far more complex than necessary. And, in doing so, they ensure the technology's demise: eventually, someone bothers to sit down and solve the same problem properly, without all the needless complexity, and that's the end of the standardized technology.&lt;/p&gt;
&lt;p&gt;Technical excellence (which includes simplicity) is not a sufficient prerequisite for success but, long term, it is a *necessary* prerequisite. XML and WS-* are too far from being technically excellent to be a long-term success, in my opinion.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Michi.&lt;/p&gt;</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1258354</link><pubDate>Mon, 11 Dec 2006 12:31:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1258354</guid><dc:creator>bryan rasmussen</dc:creator><description>&lt;p&gt;&amp;quot; Those who build infrastructures and applications on top of them are challenged to do good engineering to make their purported features actually work and to appear simple to the ultimate consumers. &amp;quot;&lt;/p&gt;
&lt;p&gt;Well, what do you mean by that? Do you mean that people who build XML Schema validators are challenged to do good engineering or that the users of XML Schema to describe their data structures are challenged to do Good Engineering? I suppose that the both is of course true, but surely one &amp;nbsp;example of really good engineering would be not using XML Schema to describe ones data structures given the well known incompatibilities between validators in a number of areas.&lt;/p&gt;
&lt;p&gt;If I am starting out on a project shouldn't one of the primary considerations be choosing tools that are stable?&lt;/p&gt;
&lt;p&gt;The same applies to WS-*&lt;/p&gt;</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1259766</link><pubDate>Mon, 11 Dec 2006 18:54:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1259766</guid><dc:creator>mikechampion</dc:creator><description>&lt;p&gt;Bryan, I meant that the developers of the schema validators, databinding tools, etc. are going to have a hard (but hopefully manageable) challenge to present the necessary raw functionality in a way that looks easy to the users. &amp;nbsp;If the users do have to be good engineers to use it (like drivers had to be mechanics to use a Model T), then XSD is indeed doomed. &amp;nbsp; And NONE of these tools is stable enough for non-mechanics to use at the moment, the question is which can best evolve be hidden away under the proverbial hood.&lt;/p&gt;
&lt;p&gt;Michi, &amp;quot;may&amp;quot; was the operative word in the sentence you're challenging. &amp;nbsp;I personally suspect that XML does have a lot of needless complexity that will get refactored out before it can be hidden away under the hood. &amp;nbsp;The interesting question for me is whether XML can strip off cruft faster than JSON, YAML, or whatever can add functionality and gain credibility. I don't know. &amp;nbsp;I do think the the core XML community should be more worried about this than they seem to be, for the very reason you cite: If standards bodies don't clean up after themselves, somebody else will, and they will perform the overdue surgery with an axe rather than a scalpel. &lt;/p&gt;
</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1259826</link><pubDate>Mon, 11 Dec 2006 19:17:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1259826</guid><dc:creator>Anthony Cowley</dc:creator><description>&lt;p&gt;This argument sounds a bit forced to me. Part of your argument seems to be &amp;lt;i&amp;gt;it is a poor artist who blames his tools&amp;lt;/i&amp;gt;. You suggest that it is your users (developers) who must make the effort to make the system beautiful, but it sounds a bit too much like a tool-maker griping. If it is indeed true that these complex tools are not only capable of being used to create beautiful systems, but actually &amp;lt;b&amp;gt;required&amp;lt;/b&amp;gt;, then the proof will come with the applications. No amount of talk will convince anyone. The backyard mechanics were not silenced by reasoned arguments, they were (for the most part) silenced by the newer cars themselves and how the public embraced them.&lt;/p&gt;
&lt;p&gt;What I think is important to remember is that there is tension between complexity and simplicity at various scales. You address the fact that users want complex systems that appear simple. But it is also the case that developers want to use simple tools to build complex systems that appear simple to users. This is not unreasonable.&lt;/p&gt;
&lt;p&gt;Our entire industry is predicated on the power of abstraction: the encapsulation of complex functionality in simple interfaces. The only way to build more complicated layers of technology is to simplify the way the previous layer is used. You can't just push the burden of abstraction up to the next level.&lt;/p&gt;
&lt;p&gt;I don't think any inherent complexity of WS-* or XML is really problematic. What is problematic is much more mundane: incompatible implementations and a difficult debugging story for WS-*, and verbosity for XML. If the complex functionality enabled by these technologies was simple to use, I don't think you'd see the same complaints about complexity. Instead, we are surrounded by working examples that force us to ask what we stand to gain from these more unwieldy tools. Consider the Ruby language: even the most partisan user of the language would agree that the internals of the runtime are frighteningly inelegant, yet the language itself is heralded as a shining example of a simple-yet-powerful tool for developers.&lt;/p&gt;
&lt;p&gt;While you may see this as an issue of developers resisting the new capabilities of these technologies, your post could also be characterized a claim that &amp;quot;hard to use&amp;quot; is positively correlated with &amp;quot;more capable.&amp;quot;&lt;/p&gt;</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1259830</link><pubDate>Mon, 11 Dec 2006 19:20:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1259830</guid><dc:creator>Gunnar</dc:creator><description>&lt;p&gt;Good stuff. I think the most important thing is to understand what tradeoffs you are making and why. From a security perspective this is called risk management. From a security design standpoint, yes a vanilla REST implementation looks a lot simpler than SOAP and WS-Security, but what happens if you figure out that SSL is terminated about 6 hops away from your app? Then you realize that message level security actually is important, and bolting it onto the side of your REST app may actually make something that is less secure (less proven) and more complex. Bad tradeoff. This is just one example, YMMV even in a Prius.&lt;/p&gt;</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1260187</link><pubDate>Mon, 11 Dec 2006 20:07:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1260187</guid><dc:creator>mikechampion</dc:creator><description>&lt;p&gt;Anthony, yes the argument by analogy is a bit forced, as are all arguments by analogy :-) &amp;nbsp;The whole thing is just a meditation on my epiphany that the hybrid car architecture mind numbingly complex ... but I don't care. (Assuming it continues to work for the expected lifetime of the car ... obviously that's a risk I'm taking as a relatively early adopter).&lt;/p&gt;
&lt;p&gt;That's an interesting point that &amp;quot;you can't push the burden of abstraction up to the next level&amp;quot;. &amp;nbsp;I'll have to think about that -- whether I agree, and what it implies for XML-ish stuff. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'm certainly not claiming that hard to use == more capable. &amp;nbsp;I'm claiming that complexity per se is not a showstopper, contrary to the implications of numerous sneers against WS-* or XSD. &amp;quot;Hard to use&amp;quot; is a showstopper at the user level, so the question is whether the more complex stuff can be more easily wrapped up in a simple interface than the simple stuff. &amp;nbsp;Developers should be resisting XSD now because it's too hard. &amp;nbsp;Is the way forward to hide it behind databinding / mapping / code generation tools, or ask people to learn something &amp;quot;simpler&amp;quot; but still not what they are asking for? I don't think there's an obvious answer. &lt;/p&gt;
</description></item><item><title>re: The Model T and the Prius: Simplicity vs Complexity, yet again</title><link>http://blogs.msdn.com/mikechampion/archive/2006/12/10/the-model-t-and-the-prius-simplicity-vs-complexity-yet-again.aspx#1260434</link><pubDate>Mon, 11 Dec 2006 21:21:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1260434</guid><dc:creator>Anthony Cowley</dc:creator><description>&lt;p&gt;Mike, I completely agree with you that complexity is not a show stopper. The way I phrase this problem to myself when I'm grappling with it is that, on the one hand, we always try to avoid complexity because we know that the system will tend towards chaos despite our best efforts at order. Therefore, we must do everything in our power to not speed up the movement towards chaos (I'm cribbing a lot from Brooks here). &lt;/p&gt;
&lt;p&gt;On the other hand, many wonderful things are enabled specifically because someone was able to seemingly hop off the continuous, monotonically increasing curve towards complexity, and wrap up a complex system in a surprisingly simple package that &amp;quot;just works.&amp;quot; To wit, those wonderful feats of &amp;quot;simple&amp;quot; engineering often bring with them a sense of surprise along with pleasure. I think this is because they come about in an environment dominated by a steady trend of new features bringing proportionally more complexity for the user before someone figured out how to buck the trend. &lt;/p&gt;
&lt;p&gt;This suggests that perhaps there is an element of inspiration in simple engineering that may not even be attainable by the kinds of committees that we employ to form our standards. A team, or even an individual, with a purpose seems far more capable of engineering the simple than a consortium trying to reach a quorum.&lt;/p&gt;
&lt;p&gt;I think (pure opinion here) that the way forward will be someone offering something simpler that is not what everyone asked for, but that most people realize they can make do with (e.g. HTTP).&lt;/p&gt;</description></item></channel></rss>