Scaling can mean a lot of things, the way companies address it and make trade-off decisions have a large impact on the user experience. In these days of dwindling attention span, users expect snappy experience regardless of the amount of data or people interacting on any platform. I am tempted to think that Apple may have made many software trade-off decisions by sacrificing service scalability, and that is a bad idea for Internet services.
Here are some examples of what I mean:
- Safari Reading List feature: it works well when you have just a few of items bookmarked. Since it’s easy to use, my reading list grew quite fast and this is causing Safari to become less responsive whenever I try to view the list from one of my devices.
- iTunes Match: this is quite handy, all your music on iCloud and you can listen to them on up to 5 iOS device. However, if you have a large music library and that your Internet connection quality fluctuates, you quickly get an non responsive music playing experience. So, it appears that the Music App isn’t able to gracefully degrade iTunes Match service.
- Using documents from iCloud: this works well with a good Internet connection, but Pages or Numbers tend to get stuck whenever something isn’t smooth in the network connection. Furthermore, iCloud documents created with a Mac are not fully supported by iOS versions, it converts them or duplicate them, it’s a pity that it works that way.
- I can’t directly share my purchased books and PDFs between iBooks on iPhone and iPad, these need to be manually copied around and sync’ed with iTunes.
- Apple’s App Store is getting slower and slower all the time. In the early days, it used to be fast. But nowadays, with everybody putting up App Stores, Apple AppStore service or its client applications don’t appear to be coping very well.
- Server Manager is now a stand alone app that can be installed on Mountain Lion on any Mac and turn it into a server. That’s great, but I discovered a couple of annoying issues with it. First, if you ever touch the embedded RubyGems package then you could be in for a ride. When you dig deep into it, you see that Server Manager ships with its own PostgeSQL and Ruby on Rails distributions, so why not completely sandbox these? The second issue I found is that, as I move my laptop around it gets assigned new IP addresses that cause problems with the embedded DNS Service. Sleep/wake cause Server Manager to start up really slowly and become non-responsive for a while. I know how to work around these but not before hitting a problem.
These are different types of shortcomings that all relate to scaling trade-offs, sometimes the volume of data is causing problems, other times it’s just the way of sharing objects that doesn’t scale out across devices. If a service has an upper-bound scaling threshold, why not either advertise it or adapt the user experience to reflect that? None of the examples above could have escaped Apple’s legendary experience design and iterative refinement crafting. These have to be happening because someone thought them good trade-offs, but I can’t find a good justification for trading these off for anything else. The use cases that are covered in my examples are all too simple, predictable if not obvious for a large scale product usage.
Apple talks a lot about creating the best possible user experience, and it is mostly believable when you use their devices and also judging by their success so far: haven’t they been at the forefront if the current consumerisation? However, several Apple Internet based services just don’t seem to scale up to good user experience. This is surprising to me, because it’s impossible to imagine Apple not knowing the consequences of the trade-offs they made in this area. Yes sure, it’s hard to excel everywhere, but with Apple’s clout and the abundant supply of talent for a company like that, I don’t understand why they’re still not plugging gaps in these Internet services. That was the reasoning behind my tweet around mid-October, where I speculated that an acqui-hire was in order for Apple.
I am basing my examples here on Apple, because I experience many of their products every day. But, in fact, these observations apply to any organisation putting out Internet based services. For Internet services, designing for Scale isn’t luxury, it certainly must not be a second thought, it is fundamental to any ambitious endeavour.
Scalability is difficult to get right. Inexperienced teams would typically cry foul, the catch phrase “premature optimisation” is bandied about by people who are not sure how to go about it. That’s fair, if you don’t know how to address scaling it’s best not to try. But large companies that ship products to hundreds of millions of people cannot trade-off scalability without paying a heavy price for it. Competition is heating up, Microsoft and Google are getting better at responding to Apple’s dominance, and this will force all three to ship products that scale smoothly.