The last few months have seen two significant waves of activity around major developer platforms from Windows to Android to iOS and OS X. The summer brought reveals of new versions of these while the fall has brought the introduction of a number of new devices from Apple, Google, Microsoft, and others to take advantage of those platforms and, in some cases, go further. There are new opportunities for developers everywhere but, at the same time, I’m becoming increasingly worried about the burden of keeping up being placed on developers – especially smaller ones – by all this activity.
New operating systems
Each of these three companies has introduced a new version of its major operating system in the past few months. But some of them have also introduced entire new operating systems. With each of these introductions come new features developers can take advantage of to improve their apps. But the challenge for developers is that, as users become aware of these features, there’s pressure for them to support them in order to remain competitive and compelling and to stand out in increasingly crowded app stores. This is especially true when app stores highlight those app that support the latest features.
Among the new functionality developers may feel they have to support now are:
- App linking/deep linking and search – exposing the content of apps to universal search functions in Android and iOS and creating link structures that allow external URLs to jump deep into apps for specific content
- Multitasking in iOS – on iPads, iOS 9 now supports multitasking in several different flavors – slide-over, side-by-side, and picture-in-picture modes
- WatchOS 2 introduced a completely new way to build Watch apps, so existing developers will need to re-write apps written just a few months ago to optimize for the new functionality
- App thinning – another iOS innovation which changes the way optimized apps use and cache data, requiring rewrites to certain apps
- Universal apps and Continuum in Windows 10 – requiring developers to create apps that work, not just on one form factor, but on several within the same app, sometimes even when only installed on one device, such as a phone running Windows 10 and the Continuum feature.
In addition to these new operating systems, these companies have also introduced new devices, some of which use those existing operating systems, while others require entirely new operating systems. Apple has been the most active in this space over the past year, introducing several new hardware products. The Watch was introduced just a year ago to developers, so it’s still relatively new. Many developers are struggling to build Watch apps to complement their iOS apps (WatchOS has been available to developers for a year now, but there are still under 20,000 apps for it). Secondly, Apple has introduced a new generation of Apple TV which runs a new operating system, tvOS. Even content partners who already had apps on previous generations of Apple TV now have to re-write them for the new OS, while other developers who hadn’t had apps on the device will have to think about whether to support it. Apple also introduced the iPad Pro this fall which has two accessories that require developer support to work in an optimized fashion – the Pencil and the Smart Keyboard. Then there’s the iPhone 6S line with its support for 3D Touch and the new developer functionality that enables.
Again, all these things allow developers to create more compelling applications and – in theory at least – expand their addressable markets to new devices and new customers. But supporting both the new software and hardware and, in some cases, entirely new operating systems, places a significant burden on developers. As a small developer with limited resources, I’m forced to choose now how to spend my time — between creating an Apple Watch app, optimizing my iOS app for the iPad Pro and its accessories, supporting multitasking, adding 3D Touch Quick Actions, and so on. And that’s just my iOS app. Many developers create apps for iOS and Android and, in some cases, Windows. Microsoft, too, has been announcing new devices, including the HoloLens, an entirely new category of device. If you’re a game developer, you might well be interested in creating apps for both the new Apple TV and for HoloLens (or even for devices from new vendors such as Oculus). But can you afford to do both?
How many devices can developers support?
Almost exactly a year ago, I wrote a piece titled How Many Computers Do We Need? In it, I talked about the fact that, as consumers, we’re faced with an increasing array of computers in different shapes and sizes, from laptops to tablets to phones to smartwatches. These devices are capable of performing many of the same functions, yet most of us are limited by financial and practical concerns in our ability to purchase and make use of all of them. Leaving us with choices that may pit unexpected devices against each other as quasi-competitors. With this explosion in new software and hardware functionality, developers are faced with, to some extent, the same quandary: how many computers can they support? In some ways, this concern will begin to replace the age-old question of how many platforms to support, as more and more developers become single platform or single ecosystem shops but still find themselves supporting multiple devices within that ecosystem. One of the ways to resolve this quandary was always to support each at a minimal viable level, not optimizing apps for any one platform, but using cross-platform development tools to create lowest-common-denominator apps that never felt completely at home on any of the platforms. I worry some developers will take the same approach to multi-device support, supporting all the available devices in principle, but doing so in a less than optimized way in practice.
Questions for ecosystem vendors
All of this leads to some challenging questions for ecosystem vendors:
- Are you asking developers to do too much?
- Are you opening up new revenue opportunities that will compensate developers for the additional work required to support new devices and software features?
- Do you risk fostering a culture in which apps are no longer truly optimized for your platform or devices but rather, check a minimum set of features?
- Do you risk driving developers to other platforms with simpler sets of requirements and devices to support?
All the major ecosystem vendors should be thinking long and hard about these questions and the implications for their relationships with developers. Though it can be tempting to think great new features for users and great new opportunities for developers go hand in hand, there’s a risk the burdens associated with supporting all these new features outweigh the opportunities and that may have some significant adverse effects.