Your customers expect continuous mobile app improvements with new features, meaningful updates to the user experience (UX), and support for the latest iPhone and Android devices.
But releasing apps frequently is difficult. App development time and testing often influences when features can be launched for a mobile strategy, rather than marketing or digital’s desire for new functionality.
How can app release schedules be accelerated to support a desired feature roadmap?
remove development bottlenecks
The development process has a large influence on how frequently developers can release. Two of the largest process bottlenecks are when teams merge code together and how teams coordinate releases when some features are only partially completed.
Code integration becomes a bottleneck when development teams are combining their code right before a release. This process is often fraught with bugs and frustrations as errors are difficult to track down and assign to teams. Alleviate this issue by forcing code merges more frequently. Trunk-based development (TBD) is a practice where developers are forced to merge small changes to the same code base every few days, rather than working on separate features that are combined weeks or months later. Combined with good automated testing practices, TBD allows release management to be less cumbersome by assuming that any app code is ready for release.
Decouple Feature Development
But many features cannot be completed in a few days. Decouple feature development from feature release to remove another bottleneck. Feature flags (aka feature toggles) can be integrated into code to allow a developed feature to be toggled on or off. This allows teams to integrate partially developed features into an app in an “off” state. Teams can then develop ahead of a planned release cycle without fear that their feature will be prematurely released or need to be removed.
When a feature is completed, tested, and ready to be released it can be toggled on from an external tool or configuration. Releases of app code are now decoupled from larger feature releases. And if a released feature is not performing as expected, it can be toggled off instead of having to revert portions of code and risking other bugs.
invest in automated testing
Speeding up the development process is only useful if this also reduces bugs and errors. Quality of a release can be measured through test reports and code coverage. Invest in automated testing, reporting, and building to ensure app release quality and support a faster development cycle.
Utilize Continuous Testing
Like most software, automated tests must be built into new feature development. And the tests should be run early and frequently to fully vet the quality of new features. Continuous testing reports help align business analysts (BAs), quality engineers (QEs), and developers on the overall code quality and build trust in app releases.
Focus Your Testing on Your User
The scope of devices that need to be tested differentiates mobile testing from other software development. New phone hardware and operating system updates are released every month, and testing every configuration is not feasible.
First, gather analytics to assess what devices and operating systems your users have, and focus device testing on these configurations. Then, utilize cloud device services like AWS Device Farm and Microsoft App Center to improve your device testing reach and allow for quick reaction to hardware or operating system updates. The amount of testing on these device farms should be sized for the hardware and testing time. Purchase just enough devices or usage slots to allow your tests to run on a continuous schedule.
re-examine your app platform
Cross-platform frameworks like React Native may help accelerate small teams by standardizing technical skills. Quality assurance may also improve with a cross-platform strategy when the same core technology is being tested. But cross-platform solutions often have bugs that are difficult to track down against single devices or configurations, so the test automation needs to be in place to support these issues.
While cross-platform solutions can help, in some cases it’s preferable to develop multiple native applications targeting the platforms you need. Apps that have a customized look-and-feel for each platform or require cutting-edge hardware or software updates are better suited for native development.
Version for Backward Compatibility
No matter what underlying technology you develop your apps with, reduce coupling between your app releases and your mobile solution platform. Design your mobile solutions platform and apps with backward compatibility in mind. Forcing your users to update the app due to platform and API can be painful. In order to limit frustration and the likelihood of user attrition, forced upgrades should be avoided as much as possible. Ensure your app's APIs are versioned for as much backward compatibility as you're willing to support.
Use Server-Side Configurations
Similarly, use server-side configurations to allow flexibility with certain parameters. These types of configurations could control what servers the app connects to, basic copy within an app, and general configurations for app UX. Having these configurations externalized allow apps to be updated without requiring new releases.
Internal enterprise apps have many of the same recommendations as above. But they have some additional considerations around managing devices and releases.
Deliver Tests to Users
Mobile device management (MDM) solutions are used to manage the devices of your internal employees, their security and access, and internal app stores. Some companies issue their own devices, which greatly reduces the pool of test configurations. Other companies offer a bring-your-own-device (BYOD) solution that allow for corporate apps to be installed and maintained. Either solution provides a way to deliver apps internally to users or testers, often with less overhead than going to a public app store.
Leverage the Right MDM Solution
Some MDM solutions, like Microsoft App Center, allow admins to regenerate device and app access instantly. This allows for quick onboarding of devices and improves the frequency of releases to new testers. These platforms can also force update apps on registered devices, which eases some backward compatibility support.
Deciding what process and technologies to use for your mobile application ecosystem requires a holistic approach. Need help finding the most efficient way to build, test, and deliver your app(s) to all your users? Reach out to firstname.lastname@example.org.
Thanks for following along with our series on mobile strategy! If you missed our earlier blog posts, please check them out here: