For years, everyone was talking about the convergence of interfaces. The Web, and as a result, the browser, were "clearly" about to take over as the major platforms and cloud computing emerged. Then, in March 2008, Steve Jobs unleashed the iOS followed by the mobile apps revolution. What seems to have happened next is maybe one of the most intriguing transitions in software history.
While many companies are still stuck with the idea that "the browser is the ultimate interface", lately, there's a growing number of leading cloud computing companies that actually don't have a Web interface or that focus heavily on client software running on multiple devices.
Why does this happen?
Indeed, client software has been around for a while. It actually predates the Web. Why would Web companies return to leveraging client software now?
There are four underlying fundamental changes that are contributing to this renaissance:
- The Internet: The Internet made client software significantly better. With the Internet as the universal backend, most of the processing, heavy lifting and storage can happen in the cloud, leaving client software as a thin interface. That in turn makes client software easier to build and maintain.
- The device revolution: The iPhone, and subsequently the iPad and all the Android powered devices, are taking over the world. Suddenly we have all these computers with us all day long. These devices are better at running client applications that take advantage of the native device capabilities and user interface.
- Increased computing power: Not only we have more computers around us, but these computers are now much more powerful. The iPhone is more powerful than an average PC from 2002. The Wii is more powerful than the computers that powered the Apollo mission. Combined with the fact that client software becomes lightweight and effective, we can now run more applications concurrently.
- Distribution, discovery and installation: The app store model made finding and installing client software a breeze. The model works perfectly on mobile devices and with the release of the Mac App Store, we have the same experience on our laptops and desktops. Windows 8 will include a similar app store and this will put client software discovery and one click installation on every computer on earth.
I'm writing this post on Evernote's client app for the Mac while listening to Spotify, both of which are OSX client applications. Let's think about this for a moment. Their CEO Phil Libin mentioned in a keynote that 95% of the usage of Evernote is happening in client applications running on various devices.
Spotify doesn't even have a Web interface. And there's more. With Spartan, Facebook is making a huge dive into mobile. Marco Arment wrote Instapaper to be accessible from as many devices as possible. While Instapaper has a good Web interface, I'm wondering how many people ever use it. If that's not a new paradigm, then I don't know what is.
What does this mean for cloud computing?
If you are building an Internet company, here are the five things you should do to stay relevant:
- Build a service-oriented architecture: Jeff Bezos once said that when you load a product page on Amazon, you are calling 200 different services. This type of architecture, with a clear, externalized, and easy to use API, allows you to quickly build native client apps that serve as thin interfaces to your application.
- Start with the best interface for your application: Don't assume that a Web interface is the first interface you have to build. The best guide on what interface to build first will be the context of use for your application. Depending on what you do, you might for example consider starting with a mobile interface.
- Go with native clients on all market share leading devices: Building native applications has many advantages. One of the main advantages is the ease of discovery through app stores. The other advantage is the quality of the native user experience. You can start by targeting the market share leading devices (iOS and Android in the case of mobile) and expand to other platforms later.
- Treat your Web application as YAI (yet another interface): Write the Web interface as a thin and "stupid" client that is totally separable from the application layer. By doing so, you will guarantee that the other devices will have a good API to use.
- Remember the users: As with anything you do, remember that there are people using your applications at the other end of the device. Focus on delivering a phenomenal user experience and determine the right context and best way to put your product in people's hands.
One thing is clear. The device explosion is not going away. On the contrary, devices will continue to diverge and new interfaces will emerge. Think TV, car systems, more gaming consoles, household electronics, voice based interfaces (Siri style) and the list goes on. Embrace and prepare.