Table of Contents
Agile software development is a set of practices designed to enable software to be developed in short iterations. This can be contrasted with waterfall development where software is created over a long-time span, built infrequently and made available to users even less so. In waterfall, there are regular but infrequent releases of new major versions, with bug-fixes released as minor versions.
Agile methodology emphasises the importance of making small, well-defined changes in a strict time box termed a sprint. Self-organised, cross-functional teams, or scrums, frequently analyse circumstances and user needs to adapt projects by refining the backlog. Scrum teams constantly strive to improve practices, minimise technical debt, and achieve user satisfaction, regularly holding demonstrations and retrospectives.
The Agile Alliance wrote its twelve principles, perhaps four illustrate Agile development best:
- Individuals and interactions over processes and tools;
- Working software over comprehensive documentation;
- Customer collaboration over contract negotiation; and
- Responding to change over following a plan.
Agile is enabled by the CI/CD pipeline. The CI/CD pipeline is critical to integrating often. CI/CD also influences software deliverables. Applications must always be buildable and deployable. Agile requires that deployment issues and technical debt are mitigated, and this can be enforced through an effective CI/CD pipeline. Agile working is much better suited to microservice architecture than monolithic products.