- Assemble small, focused development teams. The largest development teams we found had fewer than 10 people. When teams grew larger, they were subdivided into platform-specific teams (i.e. the Android team or the iOS team). Small teams can move fast and keep impedance to a minimum but also require substantial changes in how they perform design and testing.
- Favour simple development tools over complex ALM processes. The need for speed that characterised the development processes we found means that most traditional ALM tools hurt more than they help. Gone are formal, text-based requirements documents and heavyweight SCM systems.
Smaller code bases with less branching mean tools like Git shine. But it's not all airy castles - testing creates a real headache, so we're seeing lots of experimentation with device emulators, simulators, and even basic tricks like deploying graphic mock-ups to devices to get early user feedback.
- Adapt Agile principles to the realities of mobile development. Teams that build top-rated apps release many times in a 12 month period. As a result, they all use Agile techniques like continuous build, and many use Scrum-style sprints. But we're also seeing mobile teams adapt and extend a standard Agile cycle with advanced design techniques, lean startup concepts, and organic release schedules. It's a very different development culture, one that we think traditional shops will struggle to adapt to.
- Balance release speed with a focus on quality. Teams that have honed their skills deploying in a web-centric world are in for a bit of a shock as they move to building mobile apps. In their web world, a focus on automation and an attention to DevOps principles lower the impact of introducing regressions into a working system: you can always "roll forward" or redirect traffic from your blue environment back to the green one. It's not as easy with Apple, Microsoft, and Amazon standing between you and your customers with app store approval processes. The cost of failure and the time to recover from it put renewed emphasis on quality processes.
- Prioritise gathering user feedback and forming a rapid response to it. Most of the changes we see with top-performing app development teams are based on a central premise - reducing the "time to feedback." But it's also important to monitor the (very public) customer feedback and organise the dev team to triage and respond in real time.
A response might be customer outreach, a request to rate an app, or restructuring the app backlog to prioritise a feature request. The public nature of the feedback process will throw many traditional development teams for a loop.
Also in slideshows :