Yesterday when I blogged about simplicity I forgot to mention Clayton Christensen’s take on simple technology. Clayton’s ground-breaking book was entitled "The Innovator’s Dilemma" and is a must-read for any developer who wants to understand the business dynamics between market incumbency and innovative uses of technology.
From his extensive research Christensen states in The Innovator’s Dilemma that disruptive innovations are almost never the result of technological breakthroughs but are instead recombinations of existing and often inexpensive technology in forms the former market leaders don’t pursue. He states the driving reason for the market leaders ignoring disruptive innovations the people in their sales organizations fight against pursuing them because they don’t see big enough market opportunities and/or they can’t make large enough margins compared to their incumbent business. That is, until it’s too late.
Christensen defines disruptive innovations as those "innovations1 that allow small companies to topple once strong, market leading companies and establish themselves as market leaders. His first example was 8" disk drives manufacturers who put out of business all 14" disk drive manufacturers. The latter sold to mainframe vendors at 60% margins, and their customers were interested in larger capacity and faster drives, not in more expensive slower smaller drives with less capacity (which had to be sold at only 40% margins!) But mini-computer manufacturers purchased the 8" disk drives and over time the 8" disk drive manufacturers improved their products to the point of being good enough (key phrase) that mainframe vendors decided to buy from them rather the pay for the increasingly feature rich and increasingly expensive 14" disk drives. At that point, with cost structures requiring 60% margins, the 14" disk drive manufacturers couldn’t maneuver and they all failed.
Examples of recent disruptive innovations with which you might be familiar are:
- Open-source ASP.NET apps and .NET developer tools such as DotNetNuke in the content management space, and NUnit and related for testing tools. Both of these started out much more simple than commercial alternatives, but are evolving.
- Simpler .NET components. Five years ago most components vendors were US-based. Today, the Internet has empowered many vendors outside the US to compete on price alone for the simpler components. One only need look at the number of the vast number of Internet Email Components for .NET to see this trend for what it is.
- Small-project Outsourcing. Another trend near and not-so-dear to many developer’s hearts - outsourcing - is all about being able to offer development services for less. Look at places like RentACoder where you can have small projects developed for literally a tiny fraction of what it would cost to hire a developer in the US to do the same work (smart and entrepreneurial developers should see this as an opportunity rather than a problem…) Today RentACoder’s projects are simple and inexpensive; tomorrow, who knows?
- RSS vs. incredibly fragmented and expensive alternatives to content syndication; RSS is simply XML, after all.
- Wikis, "The simplest thing that could possibly work" according to the Wiki’s inventor Ward Cummingham have edged out many commerical collaboration solutions, and most people say they do it better than what came before.
- MySQL started out as a simple and basic alternative to Oracle, SQL Server, and DB2. When you look at all the people who deployed early versions of MySQL because of its price (optionally free) instead of going with one of the big three, you realized that good enough really was an important concept at play. Now MySQL v5.0 is out and has stored procedures, triggers, views, and more. And if MySQL ever becomes good enough for everybody, Oracle, Microsoft, and IBM can’t compete at their margins.
I could go on, but those should be enough to help you understand the concept if my abstract description wasn’t enough.
Actually, if you think of another example, it would be cool if you would make a comment here and let me and my readers know about it!
1 - Also note that Christensen defined the term "innovation" to encompass a broader scope than just what we think of as technologies. He included business models as innovations too.
What’s the next big thing? AJAX? Ruby on Rails? PC Virtualization? Open-Source Software? Data Security? Open Office File Formats? Windows Vista? Windows Live? Apple’s iWhatever? Yeah, all those things will get lots of hype, but the next big thing is something we’ve had access to all along:
Simplicity
Are my thoughts revolutionary? Nah, I’ve been reading about it at places like Information Week and the other usual suspects. Even Bill Gates at Microsoft gets it, through Ozzie at least (though execution will be the key.) But unlike all that gets hyped, simplicity as a concept that is for real.
Let’s look at two of the best known examples:
- Simple Mail Transfer Protocol.
- Really Simple Syndication.
Over the years, the world’s Internet email infrastructure evolved from that simple little mail transfer protocol (spam and all!) And RSS exploded as a method to syndicate blog posts in a very short order instead of one of the many complex content syndication concepts most of us never even heard of.
To most people the Internet came out of nowhere ten (10) years ago yet it evolved for at least twenty (20) years prior. The Internet’s foundation protocol TCP/IP isn’t exactly simple, but once the simple protocols HTTP and HTML were layered on top, Internet use exploded because implementing websites was simple (by comparison.)
But it’s not just simple technologies, its also simple to install and simple to use applications: ASCII text editors (i.e. Notepad), web browsers, email clients (w/apps like Outlook Express), instant messenger clients, wikis, blogging apps, online forum apps, and QuickBooks (simple is relative; accounting is required yet QuickBooks doesn’t really require accounting expertise.)
And to many people this simplicity makes sense. Scott Cook (founder of Intuit) got it. The founders of the original Instant Messenger (ICQ) got it. Pierre Omidyar (founder of eBay) got it. Google gets it. The original author of PHP Ramus Lerdorf gets it. And a lesser known group also gets it; the developers of Basecamp (although 37 Signals could also be the poster child for when a group elevates a concept to an ideology, and like all ideologists, becomes blind and misinterprets the concept. But I digress…)
Okay this is all obvious, and well, it’s simple. So what’s the big deal? People recognize that simple is important but without a simple roadmap, most don’t know how (pun intended.) I don’t know that I can provide that roadmap, but at least I can get you started.
First, just for grins, let’s look at some counter examples:
- MS-Access – Have you ever tried to develop an app is MS-Access? Yeah right.Access it pretty easy in where it allows you as a user to point and click, but once you hit its brick wall of end user functionality, you’ve got to be an Access guru to do anything more with it.
- VB.NET – Thank god for the My namespace in VB 2005, albeit five years late, but VB.NET is still too damn difficult to use productively without weeks of learning.Don’t get me wrong, I love the power of VB.NET language, but it has very little transitionality.
- ASP.NET – I know its blasphemy, but let’s be real: VIEWSTATE, __doPostBack(), Server Controls, @Register, @Import, WebForms, DataGrid, etc. etc. There’s so much complexity there, where does one start? It’s no wonder so many people still use ASP & VBScript.
- Exchange Server – Oh my god! How complex a beast can you get? Most POP3/SMTP servers use files and directories; Exchange using some bastardization of an Access/Jet database that corrupts whenever the power fluctuates. And have you ever tried implementing server events?
- SharePoint – I can’t even figure out SharePoint as a user, let alone as a developer. What was Microsoft thinking?
- Active Directory – Need I say more?!?
I’ve bashed on Microsoft thus far, but let me not give them all the credit:
- XML, though itself simple, has been complicated with namespaces which I’ve studying for literally years I but still can’t figure out how to use.
- SOAP – Okay, Microsoft was heavily involved here. But why did they have to make web services so hard?I mean, what was wrong with HTTP POST?
- J2EE – There’s a reason J2EE developers get paid the really big bucks.
- Oracle – Have you ever tried to tune an Oracle database application?
- Content Management Systems – Is there anything out that can pass for simple? I’ve been using DotNetNuke on one of my sites for a while and I can tell you, it isn’t.
This brings me to my key point. Aside from being intuitively obvious, what’s so great about simple?
The Benefits of "simple" are, quite simply:
- For the User: Productivity
- For the Platform Provider: Rapid and Widespread Adoption
But you say that all of my counter examples have widespread adoption?
Do not underestimate the institutional will of large organizations to implement tremendously complex technology, because they can.
On the other hand, departmental users, users in small businesses, college students, home users and more can’t deal with complex technology. If it’s too difficult, they don’t or can’t use it. And there are many, many more of them than there are large organizations. What’s more, large organizations are effectively made up of these small groups and individuals. Simple technologies benefit all.
Microsoft, with its Windows monopoly has been able to get away with complexity and consequent low user productivity and low platform adoption with many of its products for a long time. But with the new challenges from Google, SalesForce, et. al. they better get pragmatic religion, and they better get it fast.
And that roadmap to which I referred? To quote Albert Einstein:
As simple as possible, but not simpler
:-)