Some say the mantra for agile development is to be sufficiently resolute to move fast and break things. But as enterprises grow, the consequences of doing so become unsustainable – as Apple appears to have learned with iOS 13.
A Bloomberg report claims Apple has changed the way its development teams work in response to a variety of bugs that crept into iOS 13.
It seems that Apple’s engineers have tended to push features into daily builds of the operating systems before they were fully tested. The effect of this was to make test hardware unstable as the OS would end up running a variety of system components, some stable, some not, and some abandoned.
Apple’s platforms are inherently pretty robust, but the impact on the company’s testing procedures appears to have made it rather difficult for the testers to fully comprehend the actual state of the software they were testing. That's apparently allowed bugs to creep into the operating system without being recognized as such – and the company changed its approach for iOS 14 (“Azul”) development.
These changes have also been applied to the way Apple develops for all its other platforms.
Actions have consequences
The impact of Apple’s previous development process on users meant we saw multiple reports of things like disappearing email, app instability and sketchy network coverage once iOS 13 shipped. To its credit, Apple moved swiftly to address problems as it found them, but the operating system has now seen 10 versions since Sept. 19. And customers have needed to install new software on more or less a weekly basis.
This also impacts third-party software developers who may have had to upgrade their apps at the same time. That’s annoying to customers and developers, and has a cost significance for enterprise users.
[ Related: Wireless chargers for Apple's iPhone X ]
Of course, regular software upgrades and an efficient distribution system are also platform strengths, but I believe Apple strives to deliver feature enhancements in its releases – it doesn’t want to be fixing bugs.
At the same time, Bloomberg claims its developers were aware of problems with iOS 13 even before June’s WWDC event, choosing to focus on building a less buggy iOS 13.1 version rather than attempting to optimize iOS 13.
It is worth noting that iOS 13.1 patched 24 bugs on its release.
Apple's new approach
The company is adopting a different approach in iOS 14 development. Incomplete software features will no longer be distributed in the same way. They will still be included in daily builds, but will be switched off by default. Testers need to autonomously enable new features through a configuration panel, called Flags.
The goal is that Apple gains better visibility into how software components are performing, what works and what doesn’t, and will hopefully more easily identify features that just aren’t yet ready to ship.
The significance is that Apple’s customers should end up with a better user experience and fewer software bugs in the future – even when they are running public beta versions.
This is important because one of the jewels in Apple’s crown is that its customers upgrade their devices rapidly. It's important as it provides developers with a stable platform for their apps, and provides security benefits to end users.
Apple has said that 50% of all devices use a version of iOS 13, but the rate of adoption does seem a little slower than it was at this stage of previous release cycles. It’s not a huge difference – Apple’s platform advantage remains – but it is not a trajectory the company will want to encourage.
Which is likely why information about the change in its development practices has leaked.
There are always lessons. One of the biggest involves scale.
Apple serves around 1 billion customers with iOS. Unlike the customer base of other more fragmented mobile platforms, nearly all these people are using a version of the OS that’s at most around a year old.
This is a strength, as it means developers can focus their effort on the current and most recent versions of the company’s operating systems. However, ensuring this advantage requires that the company knuckle down on stability when it releases software; given the size of the user base, even a slight imperfection can become a colossal problem.
It’s the classic problem in any form of success:
On the way up, most organizations can be agile and flexible to change, unconstrained by reputation or legacy. However, at some point on the journey, most organizations grow to a point at which significant resources must be spent on simply standing still, and may need to slow expansion and development in order to maintain the quality of what they provide already.
Most mature businesses end up there. Apple’s teams do a pretty good job as a veteran company at maintaining agility while also maintaining existing products. But the move to adopt new development practices reflects a similar challenge.
Some may argue that taking this step suggests Apple is becoming slightly less agile, but I don't believe for a second this means it has forgotten how to dance – and with early rumors suggesting iOS 14 will be packed with new features (with some held back for iOS 15), I’ve a feeling it will still show others how well it commands the floor.