We are witnessing a transformation in application development tools and techniques that is changing how enterprise software is being constructed and deployed. This transformation is the broadening of mobile application development approaches initially instigated by the mobile revolution (yes, the iPhone changed everything) to embrace initiatives for back-end Internet of Things architectures and even employee apps.
While the consumer app economy embraced these new tools and techniques rapidly in the last few years, enterprises have moved much more slowly. In the last couple of years however, enterprises have begun to get on the bandwagon.
(Related: Some app development myths to avoid)
To be sure, most enterprises will be running, maintaining, even enhancing old applications for a long time to come. IDC research over the years consistently shows that some 75% to 85% of development resources are used in maintaining existing applications. But for new projects and initiatives, it is becoming clear that we are in a different era, and enterprises are now mobilizing to leverage this new method of application development.
Here are 12 attributes that characterize the new mode of application development beginning to make inroads in enterprises:
- Mobile: Supporting touch interaction and adaptability to a large range of screen sizes and pixel densities. Factoring application functions into simpler, shorter workflows. Factoring applications into many apps. Factoring systems into APIs and apps.
- Cloud-Backed: Project assets stored in the cloud catalyze collaboration between stakeholders. Using cloud resources for testing. Using MBaaS services such as authentication and notification. Avoiding hardware provisioning. Adopting more abstract and machine-independent application models for back ends in the form of PaaS.
- Agile: Incremental, frequent releases. Rapid response to change. Teams working in an integrated fashion. Collaboration with social tools, and integration of users into the development process, including frequent user validation.
- Continuously Integrated and Delivered: Applications must be integrated to run daily. Heavy reliance on automated testing. Integration of testing into the development cycle, and frequent and incremental changes to application users, potentially while preserving a managed degree of generational compatibility.
- DevOps-Enabled: Developers own deployment or work seamlessly with Ops staff to release, test, refine and rerelease applications to users. Using self-service portals to enable many stakeholders to participate and have accountability for the application. A view of the application life cycle that integrates its performance through delivery to the end user.
- App Store Delivered and Extended: The app is delivered in an app store and/or uses modules or off-the-shelf components and services. Components and extensions are surfaced in module or app directories where they can be discovered and integrated.
- Analytics Infused: Developers get rich intelligence on application usage. Data on app modules and screen elements are used. Fielding experiments and tests with automation and quick turnaround (e.g. A/B testing of planned features).
- User Experience-Centric: Focusing on the design and appearance of the application that brings the front-end designer and/or application programmer into the enterprise development process more fully than ever before.
- Socially Oriented: Integrating of user-interface patterns borrowed from social networks, such as timelines, event streams, social graphs and other social metadata. Data is updated using event-based push-oriented patterns. Integrated search functionality. Seamless support for content elements such as images and video. Integration with consumer or enterprise social networks.
- API Factored and Surfaced: The move to APIs involves a comprehensive movement to componentize and granularize back-end software in order to achieve composable and easy-to-evolve back-end platforms. Today’s API architectures use standardized, loosely coupled and lightweight REST call formats to reduce complexity and maximize accessibility.
- Lightweight: Less complex software that is less time-consuming to install, learn and use. Software that uses a smaller resource footprint—including on disk, memory and CPU—and enjoys quick startup and recycling times. The trend toward lightweight can be witnessed in both the tools sphere, such as the increased use of editors or online IDEs, and in deployment architectures, such as the use of Web Servers in place of App servers, the use of NoSQL in place of relational databases, and the use of containers (e.g. Docker) in place of virtual machines.
- Model-Driven: Rich use of visual tools to support abstraction in the development toolset such as for relations in a data model, business logic flows, and process flows. Some tools rely entirely on such approaches to construct applications, while others use them selectively in domain-specific ways for building various parts of the application such as the user interface or process workflow.
These changes in the aggregate are as influential in evolving the state of enterprise applications as object orientation or distributed computing. While not all projects have all 12 ingredients, enterprises that can ascribe four or five of them to their new application efforts are definitely engaging in modern application development. IDC believes that some 60% to 80% of new application development initiatives support at least four of these characteristics.