In order to scale mobile app development to support a growing product development organization, we are migrating to a decentralized development model, with multiple feature (vertical) teams supported by a cross-functional platform (horizontal) team.
In planning this new model we researched as much as possible the best practices learned from organizations that have adopted a similar approach to their mobile app development.
Companies we looked at included Facebook, Google, Uber, Spotify, and Soundcloud. Some of the best practices they share include:
- Cross-functional teams have end-to-end responsibility for individual features.
- Maintain a regular, frequent release cycle using ‘release trains’.
- Extensive use of feature flags and feature targeting to control feature releases.
- Improve understanding of the full delivery process through close integration between product & release teams.
- Extensive use of employee testing or ‘dogfooding’ (e.g., Facebook ‘shake to report’ feature).
- Automation at every step of the delivery process including automated UI and unit testing; automated bug reporting and assignment.
- Automated risk-management features such as automatically detecting regressions and disabling the associated feature, restarting the app in a form of ‘safe mode’ following a crash.
- Detailed performance measurement of new features during the release phase.
I found the following videos to be especially useful in learning how to make this decentralized development model successful.
Spotify Engineering Culture (1 of 2)
Spotify Engineering Culture (2 of 2)
Facebook: Shipping mobile apps smart and fast at scale
Scaling iOS @ Google
6 lessons learned scaling mobile at SoundCloud
Blazing fast: Scaling iOS at Uber
How Spotify Transitioned to a Consistent, Thin & ‘Dumb’ iOS App
Lastly, this article from Xing is a very useful read: Scaling Mobile at XING: Platform, Framework and Domain Teams.