Agile Software Development Trends
As the needs of businesses change rapidly, often without planning or warning, internal software developers struggle to keep up. Increasingly, companies find that some kind of Agile methodology best suits their needs.
What is Agile? It’s an umbrella term for a number of iterative and incremental software methodologies, such as extreme programming, scrum and crystal. Unlike other software development approaches, Agile focuses all stakeholders (programmers, testers, customers, management and executives) on delivering working, tested software in short, frequent stages.
To discover some of the trends shaping the future of Agile, we spoke to David Thomas, a technologist at Rally Software. Thomas sees two major trends: “More focus on scaling agility outside of development, and growing interest in continuous delivery.”
Trend No. 1: Scaling Outside of Development
“Many of our enterprise customers want to dramatically improve their time to market by scaling Agile methods outside of development,” says Thomas. “Over the last year, we collaborated with our largest customers to define a new product for keeping development aligned with their portfolio decisions.”
Rally’s new product, codenamed Project Stratus, focuses on the project management office (PMO) level by keeping development aligned with strategic business priorities, visualizing and managing projects and large features across the entire value stream, analyzing the roadmap to optimize delivery of value while minimizing risk, and strengthening feedback loops between the PMO and development teams.Trend No. 2: Continuous Delivery
The basic idea behind continuous delivery is this: Automate the build, deployment and testing process; improve collaboration between developers, testers and operations; and delivery teams can generate a continuous stream of software updates, regardless of the size of a project or the complexity of its code.
“Continuous delivery is about achieving flow,” says Thomas. “It is an aspect of lean software development that seeks to minimize waste and maximize efficiency and throughput. At its core, achieving flow means not designing more than you can develop, not developing more than you can test, and not testing more than you can deploy.”
Photo Credit: @iStockphoto.com/angelhell