I have observed that the relationship between agile software development and infrastructure development requires mitigation strategies.Mitigation strategies range from applying the prime the pump agile principle to organizations creating a could environment.
The Agile Development Lifecycle is optimize for software projects. Consider the following definitions:
Agile is a cyclical process, iteration based, where each iteration is like a miniature waterfall process software project including all of the tasks (or phases) necessary to release the mini-increment of new functionality, i.e. planning, requirements analysis, design, coding/engineering, testing, documentation, releasing. While not always the case, an agile methodology used for a software project intends to be capable of releasing new software at the end of each iteration.
Scrum defines a project management framework in which development activities of requirements gathering, design and programming take place. The development period typically a two-week to one-month iteration called a Sprint. The framework has three components: pre-sprint, sprint, and post-sprint. The focal point is the iteration Sprint, in which working software gets developed.
Software needs infrastructure to exist;however building new infrastructure for an agile software project will face logistical issues. Changing requirements,not enough up front requirements or just in time practices goes against the stability mindset of an infrastructure team.
How can we mitigate the relationship between an agile team and an Infrastructure team ?
The Prime the pump agile principle requires that you look at the feature list of future iterations. This looking ahead will help lay the foundation for up coming iterations,so developers can hit the ground running when the actual iteration has started. Infrastructure teams can use the prime the pump to observe upcoming infrastructure implications and start planning. This principle also forces early and constant communication with between the the software team
In the blog post Placing Architecture Properly into Scrum Processes Nick Malik proposed the Pre-Sprint Story review:
This is a meeting that occurs one week prior to the start of a sprint. It is called by the product owner and he or she invites “senior chickens” (architects, user experience leads, development and test leads, and any other “non-team” members that want a say in the sprint).
In that week prior to sprint planning, those folks, working with the product owner, can improve the stories, add constraints, refine the description and acceptance criteria. And here’s where the architects get to play. Architects fulfilling the role of “Balancing” in the model above will have (or can create) an outline document describing the architecture of the software system, and can “link” that document to the SPECIFIC STORIES that are impacted by that design.
(Source: Nick Malik)
(Source: Nick Malik)
Infrastructure teams should also be part of the this Pre-Sprint story review to discuss infrastructure implications. Just like the prime the pump principle, infrastructure teams can make plans for infrastructure changes.
Organizations that have decided to pursue the agile software development path should consider a DevOps strategy. The goals of DevOps include:
- Improve the relationship between software and infrastructure teams
- Help an organization produce software products and services rapidly.
- Use of tools (e.g Chef and Puppet) to automate infrastructure tasks.
What I have observed is that agile software development teams sometimes do not have concrete infrastructure requirements,especially in the early stages of the project. Organizations should consider adopting a cloud environment model – the agile software team purchases the infrastructure they think they will need.