Software development is often viewed as a pipeline, and making the pipeline responsive to business needs is the goal of Agile development. But, to many organizations, Agile development has too many moving parts. Is there a simple approach, a minimum toolkit? If so, what does it look like?
A complete Agile development strategy has three pieces, so a minimal approach picks a full-featured tool in each of the three areas: software project management, developer coding and code management, and deployment.
The first of these areas is what's usually classified as Agile development, but without the other two areas, you can end up with efficient management of something that's inherently inefficient.
Looking at Agile development as a pure project management process is at best inefficient and at worst doomed to failure. That's critical when considering how you'd create a minimum viable toolkit for your Agile development plans. You need to know your design and coding work before you worry too much about managing the process and linking it to the rest of your business.
Consider Agile development to be the combination of project management and CI/CD. If we imagine the CI/CD pipeline running left to right, the Agile development tools form a shed above, ahead and behind that pipeline. They provide the linkage between the CI/CD pipeline and other related processes and personnel, including line organizations responsible for introducing requirements and validating results.
Building a workable Agile pipeline
Most development organizations have some form of CI/CD in place. To align what's there with an Agile development strategy, the key requirement is a repository to hold the code. Generally, a pull development model is preferred by organizations doing Agile development because it's more responsive to business requests and supports smooth application progress through the pipeline.
On the deployment side, an organization that's decided to adopt containers can plan for a common Git repository to support infrastructure parameterization and configuration -- what's known as GitOps. Containers and GitOps are the preferred approach where possible because a single source of truth regarding the pipeline processes reduces complications and accelerates development. Where containers are not used, DevOps tools -- perhaps combined with infrastructure-as-code tools -- are the best approach. It's important to get the CI/CD pipeline completed and optimized before looking at the Agile development tools to administer the process overall.
The most critical question to address in the Agile development tool selection process is the mechanism for managing the total Agile development flow, including the visualization of the pipeline and progress through it. Scrum and Kanban are two common ways to do this.
Generally, Scrum is essential for complex projects because it frames tasks within a specific time window and facilitates the visualization of complex, interrelated activities. Kanban is simpler to use, and for projects with limited complexity, it's the preferred approach. It's essential that any Agile development tool supports your selection here; most popular tools support both. If your use of Agile development is evolving, that's the kind of tool you want to pick.
Adding pipeline features
In assessing the minimum toolkit, you want the ability to support requirements injection, problem tracking, bug tracking and visualization of the pipeline -- from the perspective of both a project (as a combination of tasks) and from the perspective of tasks along the pipeline (to spot congestion points). A realistic minimum tool has these capabilities, but many organizations add the ability to integrate with the elements of the CI/CD pipeline directly to facilitate the monitoring of the pipeline and progress through it.
If you've picked Scrum as your centerpiece tool because of project complexity, these additional pipeline features are essential. Otherwise, complex projects overwhelm you. If you picked Kanban, it may be possible to use that tool alone because project flows are more obvious and require less explicit visualization.
Managing the management burdens
The final step in selecting the minimum toolkit is addressing any management reporting requirements. This is a bit different from the monitoring or visualization processes described above; that element of Agile development is about project-level and process-level tracking. Management reporting is aimed at improving the efficiency of the toolkit itself and the way it is used. This portion of the process often also includes document management. Documentation is usually an output that management uses to measure process effectiveness.
Additional collaborative and project management tools could be added to the toolkit where there's likely to be a lot of projects active at once, a lot of code being changed and a lot of software staff involved. These tools are often overkill, with some organizations grousing that they spend more time managing their projects than working on them.
Be careful in adding tools that are aimed at refined project and personnel management because they may tie up developers too much on administration. They belong less to Agile development than to team management and communication at a higher level.
The more software is involved and the faster the pace of changes, the more important it is to flesh out the CI/CD pipeline itself first and then the Agile development management shed that encloses it. For most organizations, a combination of Scrum, a flexible Agile development tool and an optimized CI/CD pipeline is the minimum requirement.
Tom Nolle is founder and principal analyst at Andover Intel, a consulting and analysis firm that looks at evolving technologies and applications first from the perspective of the buyer and the buyer's needs. By background, Nolle is a programmer, software architect, and manager of software and network products, and he has provided consulting services and technology analysis for decades.