I posted a note yesterday that's been a long time coming. In doing the research for Forrester's mobile app development playbook, I've been talking with all sorts of companies that build mobile apps. Build Five-Star Mobile Apps is the first collection of those observations, but it won't be the last. The premise of the document was simple – find out how companies with top-rated apps in markets like the Apple App Store or the Google Play Store design, build, test, release, and maintain their mobile apps. While there's great diversity in approach, common factors fell out of my interviews, and these practices will help you organize your own efforts:
1. 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.
2. Favor simple development tools over complex ALM processes. The need for speed that characterized 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.
3. 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.
4. 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.
5. Prioritize 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 organize 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 prioritize a feature request. The public nature of the feedback process will throw many traditional development teams for a loop.
The note I referenced above goes into more detail about each of these practices and offers more-detailed tips and tricks to the aspiring mobile developer from the experts. You might also check out their apps if you get the chance: Banjo, SlideShark, runens, Penultimate, Hipmunk, Kayak, Audobon Birds, Path, and Untappd. They are quickly becoming some of my personal favorites.