Introduction: A Look at Agile
You’ve probably been hearing more about the Agile Method of software development or velocity in Agile. A growing number of organizations are leveraging the framework to enhance and speed up development processes at a time when quality and agility are likely to be key market differentiators.
The Agile Method is an approach to project management that is designed to help development teams effectively address the moving targets and uncertainties that characterize the creation of new software applications. One of the hallmarks of Agile is that it uses incremental, iterative sequences of work that are commonly referred to as “sprints.”
A sprint is the time allotted for a specific phase of a development project, and it’s considered to be complete when the time period set for the phase expires. Work on that phase of the project ends, even if some team members think more effort is needed. The next phase of the project begins and runs through its designated time frame, and so on until all the phases of the project are complete.
Many of the ideas behind Agile emerged in the 1970s as alternatives to traditional approaches to project development. But the term “Agile” in the context of software development was first popularized by the “Manifesto for Agile Software Development,” created in 2001 by a group of experienced software developers who came to realize that they were practicing software development in a different manner from the classic waterfall methodology.
The manifesto documented their shared beliefs about how modern software development processes should operate, and the values and principles outlined in the manifesto were derived from and support a range of development models, such as Scrum and Kanban.
Four central tenets make up the Agile Manifesto: 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.
While there is value in processes and tools, comprehensive documentation, contract negotiation, and following a plan, the manifesto states, there is greater value in individuals and interactions, working software, customer collaboration, and responding to change.
The manifesto includes 12 principles:
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity – the art of maximizing the amount of work not done—is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile Development Models
The two main development models underpinning the Agile Method are Scrum and Kanban. There’s a general misconception in the market that the Agile Method and Scrum are the same thing, so it’s important to understand that Scrum is actually a way of doing work within Agile.
Scrum is one of the most popular software testing methodologies, but it’s actually a framework for managing work with an emphasis on software development.
Coordinating the work of multiple scrum teams within larger enterprises is achieved through approaches including Large-scale Scrum (LeSS), Scaled Agile Framework (SAFe), scrum of scrums, and Scrum@Scale.
Scrum supports a flexible product development strategy in which development teams work as individual units to reach a common goal. It enables teams to self-organize by encouraging physical proximity or online collaboration of all team members, and daily face-to-face communication among all team members.
A key component of the methodology is the acknowledgement that customers will change their minds about what they want or need regarding software, and that there will be unpredictable challenges during the development process for which predictive or planned approaches are not suited.
Because of this, Scrum features an evidence-based empirical approach that accepts the idea that problems can’t be fully understood or defined upfront. It instead focuses on how to maximize a team’s ability to deliver software quickly, respond to emerging requirements, and adapt to evolving changes.
The methodology differs from the Waterfall approach in that the older method includes several testing and bug fixing cycles before a product is released. Scrum is much more collaborative and iterative, and Waterfall requires lots of documentation early in the process.