What Apple Can Teach You About Releasing Software

Kody O'Connell
4 min readJan 9, 2020

--

Depending on your recent experience with Apple, as a consumer using Apple products or as a developer working with iOS, you may have noticed some bugs in the latest software. Of course, you wouldn’t be alone. Apple has for years been plagued by buggy software launches.

To be fair, their installed user base has skyrocketed in the past decade. Delivering new features with quality control at global scale is a difficult problem that even Apple has trouble with.

In a recent article Bloomberg reports Apple’s struggle to launch their latest feature-packed operating system, iOS 13.

“Test software got so crammed with changes at different stages of development that the devices often became difficult to use. Because of this, some ‘testers would go days without a livable build, so they wouldn’t really have a handle on what’s working and not working,’ the person said. This defeated the main goal of the testing process as Apple engineers struggled to check how the operating system was reacting to many of the new features, leading to some of iOS 13’s problems.”

Enter: Feature Management

As software complexity grows, it becomes harder to ensure components interact and function correctly. Predicting downstream effects of a new feature when there are many teams releasing their own features simultaneously is basically impossible.

To finally address this problem, Apple is turning to a relatively new, but industry tested and verified, practice: “Feature Management”. Feature Management is a code release practice adopted by progressive companies looking to improve their continuous delivery methods and their reputation with customers who demand more features and fewer bugs. Feature Management enables you to release new features into production but hide them behind a “feature flag”. In code you ask “is this feature enabled for this userId?” and only show the feature to userIds who are allowed to see it. You can then define remotely (not in your code) which users are allowed to see the new feature and test the feature in productionwithout the risk of exposing it to all your users immediately.

From the Bloomberg article:

“Testers will have the option to selectively enable features, via a new internal process and settings menu dubbed Flags, allowing them to isolate the impact of each individual addition on the system.”

This is great news! Now testers (and developers) will be able to toggle specific features allowing them to isolate a particular bug much easier. Also, Apple will have greater control over which features are shown to which users allowing them to “rollback” buggy features and quickly improve the user experience for millions of people.

“The testing shift will apply to all of Apple’s operating systems, including iPadOS, watchOS, macOS and tvOS. The latest Mac computer operating system, macOS Catalina, has also manifested bugs such as incompatibility with many apps and missing messages in Mail.“

Feature Management Options

Before considering feature management for your software delivery practice, it’s important to know your options.

DIY (Do it Yourself)

  • Typically the lowest effort and quickest implementation
  • Example: define flags and users who can access them in a .env
  • Not good for scale, remote access, or specificity
  • Free (not counting engineers building it)

Open Source

  • Medium to high effort customizing to your stack
  • Free (not counting engineers implementing and managing it)

Feature Management aaS (as a service)

  • Best for scale and enterprise
  • Allows non-technical teams to engage with feature deploys via UIs
  • Fully managed
  • Some are free!

Beyond Feature Management

After an organization implements feature management to release most of its new features, they may realize they want even more control over their feature launches. Instead of simply toggling a feature on or off for a user, they may want to tweak the parameters of a feature and test which version of a feature has the most desired effect. This incorporation of variables and tracking results with feature flags enables experimentation.

Conclusion

Like most new technologies, Apple waited to see the industry validate feature management before incorporating it (like it does with consumer tech). However, at it’s scale, Apple can no longer operate without feature management. There are clear benefits when using feature flags at any scale, as well as implementation options to suit your specific needs. So learn from Apple, and don’t wait until it’s too late to implement feature management.

p.s. If you’re looking for a good managed free solution to get started with, check out Optimizely.

--

--

Kody O'Connell

Developer Advocate @Optimizely . Ask me about experimenting across your entire stack with Optimizely Full Stack!