I'm fascinated by the history of iOS. Not because it has had so much impact on modern computing, the mobile industry and the Web (although that's quite fascinating in its own right), but because I think it took a lot of courage, a strong creative vision and bold decision making to ship it.
Even judging by the 2007 standards, iOS 1.0 was missing many features which were thought to be indispensable for a phone at the time. The Verge's recent feature on the history of iOS reads like a B-movie script:
Although it may be difficult to imagine now, when the original iPhone was introduced, it was actually well behind the competition when it came to a strict feature-by-feature comparison. Windows Mobile, Palm OS, Symbian, and even BlackBerry were all established systems in 2007, with a wide and deep array of features. Comparatively, the iPhone didn't support 3G, it didn't support multitasking, it didn't support 3rd party apps, you couldn't copy or paste text, you couldn't attach arbitrary files to emails, it didn't support MMS, it didn't support Exchange push email, it didn't have a customizable home screen, it didn't support tethering, it hid the filesystem from users, it didn't support editing Office documents, it didn't support voice dialing, and it was almost entirely locked down to hackers and developers.
You might be inclined to think, what did it support?! and that would indeed be an excellent question. Apple focused on a few key aspects of the iPhone's experience: speed, consistency between apps, accuracy of the on-screen keyboard. They managed to get the core experience just right (even if not perfect), and eclipsed everything that was available on the market.
Deciding what to ship and what to leave out must have been one of the toughest challenges leading up to the release. It was unimaginable to ship an operating system with no copy-and-paste functionality, and yet Apple did the unimaginable. (Cut, copy and paste were added two years later in iOS 3.0.)
Similarly, the mobile app space being such a omnipresent part of today's life, it is easy to forget that iOS 1.0 shipped without support for third-party apps! Installation of third-party apps was added one year after the 1.0, in iOS 2.0.
And it wasn't until June 2010 and iOS 4.0 that such seemingly must-have features as multitasking or folders on the homescreen were added.
Working on software, I'm constantly reminded of the 90-90 rule:
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.
—Tom Cargill, Bell Labs
The humorist 180% of the development time implied by the quote has come to be the bane of the existence of many projects, open- and closed-source alike. Admittedly, for closed-source projects the consequences might be radical: even a 99% complete product is as good as 0% as long as it hasn't shipped to users.
When the original Doom was released in 1993, some features—like persistent bullet holes previously promised by the press releases—were missing. According to John Carmack, shipping the final product obeys the laws of diminishing marginal utility:
You never, ever run out of things to implement… at some point, you have to make the judgment call that the time lost by working longer is more important than the additional things you could bring to the game. I think we called it pretty good with Doom.
Perhaps a more optimistic view is the one offered by Derek Yu, an indie game developer most renowned for creating Spelunky, a beautiful and addictive game which punishes players' mistakes by restarting from the first level. The decisions that make a 1.0 product are all part of the creative process. But Derek goes even further: it's due to the existence of constraints that we can unleash true creativity. Shipping the final product is the ultimate act of art.
The fact is, if we all had unlimited resources and unlimited time, we’d all make the same crappy, meandering everything game and there’d be no reason to play at all. It’s our limited resources and time that forces us to make tight games that feel like they have a purpose.
Had iOS 1.0 shipped with multitasking, with third-party apps support and with copy & paste, but in 2009 instead of 2007, would there still be iOS 7 coming out tomorrow?