Agile and ALM are two terms that you don’t often see side by side. To most developers, agile means team interaction, customer collaboration, dynamism, and responsiveness to change. In contrast, ALM seems to imply the opposite of agile, with echoes of rigid procedures, inflexibility, and top-down process control. But are the agile and ALM approaches as contradictory as they first appear to be? After all, both are a means to the same end: improving software development by enabling collaboration and information sharing. So is it a question of scale? Is agile more applicable to smaller teams, while ALM is better suited to larger organizations? Maybe. But the two are not mutually exclusive. ALM principles can apply to a five-man team just as well as a 500-man team, and agile approaches can be applied to large teams as effectively as small ones—especially with a little planning and forethought.
Let’s look at how the best elements of the agile and ALM approaches can be adopted to solve key development challenges in teams of any size.
Agile principles are aimed at dealing more efficiently with the complexity of software development, improve productivity, and shorten time to market. The principles acknowledge that requirements are not always known upfront, may change over time, and embrace short-term scheduling.
Companies applying agile principles typically use a common set of techniques, such as:
- Iteration and release planning
- Daily stand-up meetings
- Continuous integration
- Automated builds
- Unit testing
This list indicates the new challenges linked to the adoption of agile principles along the application lifecycle, as they go against the "traditional" development stages and roles of planning, analysis, development, and testing.
These challenges can be distilled into three main areas: dynamic planning and scheduling, effective collaboration, and performance implications of frequent delivery. What’s interesting is that these challenges apply both to small and large teams alike. The difference comes in how the challenges should be addressed according to team size. In this article, I go deeper into these three main challenge areas and propose solutions and appropriate tools for each.
Dynamic Planning and Scheduling
Agile puts more emphasis on short-term scheduling, where tasks can be moved from iteration to iteration or removed from a release due to changed priorities. This results in frequent schedule updates, which must be communicated to team members—and manual updates to different locations (or tools) quickly become impossible to handle. However, a product owner often wants to ensure that the team gets an idea of the "big picture." Focusing on the next iteration only bears the risk of getting lost in the short term. So what solutions are available?
Use a planning hierarchy to maximize business value
The first step is to use the business value of features to define their priorities. By linking features to change requests, project managers can provide direct feedback on achieved business value based on the features that are completed.
Project managers can also use products, releases, and iterations to determine the level of planning detail needed. When defining the next release or prioritizing a backlog, working with features is sufficient in most cases. It’s only when scheduling the next iteration that features need to be broken down into individual tasks. These tasks can be estimated, assigned, and completed by linking to the file changes.
Facilitate scheduling with an intuitive planning interface
Make sure that you can a) schedule easily, and b) cope with changes to schedules. This should be supported by your CM solution when working with iterations. Immediate information about task status, priority, and owner, as well as the ability to easily schedule tasks, reduces the time needed to plan the next iteration. Tight integration with your CM solution allows a seamless task-flow along the development lifecycle and facilitates parallel development.