At the airport in London this morning just before getting on my flight back, I read John Batelle’s epic complaint about his usability problems with Apple software. That got me thinking about my 30 years of experience with a wide variety of software systems. And there seems to be an ironclad pattern: successful new systems start out simple and easy to use. Just two cases in point: the early web and the early iPhone (note that I am not saying “beautiful” or “elegant,” as the early web was anything but). The simplicity and ease of use of the new systems fuels adoption and growth. With that come many requests for additional features and capabilities each of which make sense individually. But cumulatively they wind up slowly burying the initial simplicity and as a result both usability and stability begin to decline.
It’s a really hard organizational challenge to stay simple. The temptation to add just one more feature to support a particular use case better is always there. Taking an old feature that did not get widely adopted out for the sake of simplicity is something that very few companies manage to do. Even startups are often afraid that they will wind up with user defections if they do so. As the organization grows taking features out becomes even harder: features are now created by people who feel more ownership for “their” feature than for the overall product or company. Growth also creates problems if it results in a proliferation of product lines. Even if you have leadership with a really strong design sense, eventually there are simply too many products for them to stay on top of.
Apple may have reached the point where all of that is true. The number of product lines has grown a lot, especially when you include software (which you have to!). And the organization has grown a lot also with Apple’s success. And Steve Jobs is no longer around to enforce simplicity by virtue of founder status and strength of personality. With Apple’s tight control over the system it will be more damaging if a loss of simplicity results in usability and stability problems as it will be harder or impossible for users to work around the problems (or substitute alternative solutions altogether). It will be fascinating to watch how this plays itself out.