Mobile applications (apps) are downloaded, used and even discarded by users in ways that are different from how they interact with traditional applications. Agile development methodologies are a natural fit for mobile app development.
1. Agile development fits the experimentation and adaptation nature of mobile apps.
Mobile apps become successful after much experimentation and adaptation. The process of refining and getting to what users like occurs every day, as apps are in the hands of consumers who post comments and ratings on the app stores and apps themselves. Agile perfectly fits this necessary ingredient of iteration that is inherent in the development of mobile apps.
2. Agile increases reliability and leads to continued use of apps.
Mobile users of apps are less tolerant of errors and crashes in mobile apps than they are in the non-mobile application world. The first few times an app crashes, users just delete the app and move on. In app stores that have hundreds of other alternative apps, they just have too many choices. Agile development, with its multiple cycles of testing and quality assurance, enables app developers to build in more quality and reliability through repeated cycles of testing with each sprint.
3. Agile sprints extend naturally into the mobile app update model.
If there is a new version of an app, in most cases, it shows up as an update for that app in the app stores. In the initial stages of the development cycle, only a few test users may be able to download, install and use the app, but the download and install of the app is very similar to the way it will work once it is tested and released to all users. This makes it possible to form a nice rhythm of sprints and releases before and after a formal release to end users!
4. Agile enables mobile app development to be responsive to technology changes.
Mobile technology, especially the technology of mobile operating systems, changes, undergoes enhancements, and receives new feature updates at a faster pace than non-mobile operating systems. Agile sprints and frequent releases enable organizations to be responsive to these changes in technology, and new enhancements can be rolled out in updates without much pain, even every day or every other day, if needed. The only constraint is that users may hate updating an app too often.
5. Agile mobile development enables rapid accommodating of customer feedback.
When Agile sprints are combined with the software update model of most mobile apps, new features and enhancements suggested by customer feedback can be rolled out rapidly. In non-Agile, non-mobile applications, upgrading versions can be painful exercises in making sure that the application works with the older data. In Agile mobile development, there is a continuous, smooth process of updating the app that ensures the app updates are downwardly compatible with older data. If not, they will be debugged rapidly before a new update goes out during the sprints.
6. Agile mobile development enables thoughtful user experiences.
Mobile apps run in limited environments, and there are restrictions placed on the size of the app that can be downloaded initially or later on, in updates. If the app takes more than a couple of minutes to download, the user may delete the ongoing download and move on. There are also restrictions on how much application data can be downloaded ahead of time and stored locally. Agile development allows developers to experiment with these options in subsequent sprints and adjust the design and features of the app in such a way that the user experience is quick, smooth and seamless.
7. Agile mobile development enables phased roll out of feature sets.
Self-contained apps like single player games need to be compact, and usually do not communicate back and forth with any back-end server. However, many serious consumer-facing apps need this back-end server access periodically (weather-related apps, airline apps showing flight status, travel sites, etc.) They face the constraint of having enough meaningful features and not overloading any one app with too many features. Clever app designers spawn additional apps when one app gets too big with too many feature sets already. Agile mobile development helps organizations adjust their designs, and scale back on features, if necessary, with subsequent sprints.
Mobile apps are different from other applications in significant ways. They need to have a small footprint and download or update quickly and smoothly. They need to seamlessly interact with back-end servers when needed. This state can only be achieved with several changes and adjustments along with the way. The sprints, enhanced quality assurance and multiple test cycles of Agile development provide all of the necessary ingredients for mobile apps to get there.
About the author: Nari Kannan is currently the Chief Delivery Officer of V-Soft Consulting, Inc., a Louisville, Kentucky-based software consulting firm. Nari has 20 years of experience in information technology and started out as a senior software engineer at Digital Equipment Corp. He has since served variously as vice president of engineering or CTO of six Silicon Valley startup companies, working in the areas of business process improvement, IT consulting, automotive claims processing, human resources and logistics applications. He can be reached at firstname.lastname@example.org.
This was first published in September 2011