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 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 even 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 whole bunch of system components, some stable, some not, and some abandoned.
Of course, Apple’s platforms are inherently pretty robust, but the impact on the company’s testing procedures appears to have been to make it rather difficult for the testers to fully comprehend the actual state of the software they were testing.
This means that bugs crept into the operating system without being recognized as such, the report suggests – and the company has changed its approach for iOS 14 (“Azul”) development.
These changes have also been applied to the way it develops all its other platforms.
Actions have consequences
The impact of Apple’s previous development procedure on end 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 September 19, 2019 – but this means customers have needed to install new software on more or less a weekly basis.
This also impacts third party software developers who may have needed to upgrade their apps at the same time. That’s annoying to customers and developers, and has a cost significance for Apple’s enterprise users.
Of course, the truth of the matter is that 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 observing that iOS 13.1 patched 24 bugs on its release.
How Apple has changed its approach
The company is adopting a different approach in iOS 14 development — and this approach is being adopted across all its operating systems.
Incomplete software features will not longer be distributed in the same way. They will still be inside those daily builds, but will be switched off by default. Testers need to autonomously enable new features through a configuration panel, called Flags.
The intention is that by doing this, 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.
That’s the plan, at any rate.
The significance of this is that Apple’s customers should end up with a better user experience and encounter fewer software bugs in future – even if 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 at present, 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 I guess why information of the change in its development practises has leaked.
Are there any lessons?
There are always lessons. One of the biggest is scale.
Apple serves around a 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 knuckles down on stability when it releases software; while the scale of the audience it needs to address means that 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 practises 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.
Though hopefully with bug-free dancing shoes.