The development of agility is part of the changing infrastructure of IT in general, in which entrenched monolithic views of information processing give way to a vision of multiple users, multiple developers, and multiple devices interacting to form something greater than the sum of its parts. Like complex adaptive mechanisms, the new infrastructure is responsive at the cellular level, whether that is the app, the device, the developer, or the user. It becomes more akin to a nervous system than to a department and extends across both business and personal life through the use of BYOD and BYOA, social media, and dwindling boundaries between personal and work time.
The agile movement has introduced a number of base concepts to development that can easily be seen to favor the needs of small app creation on limited budgets for heterogeneous devices. These concepts include the following:
- Rapid availability and deployment of trusted code
- Delivery of business value based on real needs
- Rapid demonstration of value
- Efficient use of resources
- Capability to change at any time during a project
- Constant testing
- Feature selection by product owners
- Small project development (within a larger plan)
- Emphasis on collaboration
These agile concepts are of particular relevance to software development for mobile devices.
Devops, an offshoot of agility, is also particularly favorable to mobile development. In devops, development and operations are brought together to provide a frequent release/continual testing environment in which data from operations is fed directly back to development. This extends the logic of agile continual test and release cycles and is highly suited to development of mobile applications, which are naturally small, frequently updated, and embedded in environments that aid feedback.
Characteristics of use and deployment for mobile apps favor an agile development approach as users demand immediate access to a narrow range of specific functions that can be used to improve performance. Since apps typically access the cloud for data and for processing, cloud development and integration (typically also favoring agile development) also support this approach.
Some of the specific intersections between agile practices and mobility are:
- Mobile apps naturally lend themselves to an experimental, multirelease devops environment in which operations are continually providing feedback to continuous release deployment. This parallels agile concepts of frequent release and testing.
- Agile sprint releases are a natural fit with the immediate demands and relative small sizes of mobile apps, and app stores easily support mechanisms for continuous updating. Tendencies to limit app functionality to a set of related processes that can be released quickly support this functionality.
- Mobility emphasizes ease of use and reliability, which are particular strengths of agile development. Users tend to be more selective in the use of mobile apps because they are accustomed to numerous choices.
- Mobile apps need to accommodate rapid changes in technology as well as maintain compatibility across existing and emerging platforms. This requires support from rapid release cycles and continual testing enabled by agile development and devops. It also supports a cloud-centered approach, which is naturally aligned to both agile development and overall enterprise agility.
- Agile development favors rollout of extended functionality in multiple releases of small programs. Necessary functionality can be provided by a range of smaller applications rather than by one large system.
- Mobile devices are laser-focused on user requirements and user experience, and this is a central tenet of agile development.
There are other areas in which mobility and agility intersect as the developing next-generation infrastructure becomes more apparent. Many companies are moving toward multiple device deployment, creating a need for HTML5 coding from the cloud and for use of multiple version tools such as PhoneGap. This creates further pressure to support cloud deployment and SOA enablement, both of which can favor agility. The need to manage and deploy apps is becoming an important issue through development of mobile enterprise application platforms, which are increasingly supportive of an agile devops approach.
Companies are increasingly recognizing the connection between agility and mobility. One example is SAP’s Mobility Design Center, which explicitly endorses an agile approach. SAP uses agile development as a selling point in creating a “quick and agile customer feedback system that starts with collecting user experience data, translates it into envisioned solution, and uses it for end-user validation.”
The agile/mobile connection has an additional benefit, which lies in the fact that agile teams already in place for other corporate development will more readily adapt to mobile development. This makes it easier to move forward with projects supporting mobile devices, whether they are developed for internal consumption or are to be released as a product component.
[Editor's Note: This post is part of the annual "Cutter Predicts ..." series.]