An iterative approach to software development.
What is Agile?
Agile is an approach to software development that encourages iterative and incremental design and development. Created in 2001, Agile contains values and principles to ensure development is regularly tested and improved upon until the software is released.
The four values of Agile are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The ‘Agile manifesto’ is based on 12 principles:
- Customer satisfaction by early and continuous delivery of valuable software
- Welcome changing requirements — even in late development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development — able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity — the art of maximizing the amount of work not done — is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective and adjusts accordingly
Why is Agile used?
Historically, development followed a ‘waterfall’ approach where software was designed upfront before development began. This resulted in a number of issues such as difficulty in starting projects, inefficient resource use, software not-fit-for purpose and escalating costs.
Many projects were afflicted by ‘analysis paralysis’ in that they found it difficult to move from the initial stages into development. Even when progress to development occurred, resource wastage was evident with comprehensive documents that were only occasionally reviewed or referenced.
Another common issue was the detection of flawed design towards the end of the project requiring costly rework. Iterative design tackles these issues by looping through the following steps:
- Design a prototype
- Build a prototype
- Test the prototype with stakeholders and / or users
- Loop back and use feedback from testing to improve the design
The benefit of this looping approach is the facilitation of early and continued stakeholder involvement and frequent user testing which leads to higher quality software.
How is Agile used in Learning?
A number of Agile inspired models have emerged in the learning & development field such as SAM. SAM follows an iterative learning development model seen as an alternative to the more ‘waterfall’ aligned ADDIE model.
Outside of the learning community, a popular implementation of AGILE is SCRUM, which includes stand-up (short) meetings every morning and development sprints.
Digital learning projects come in various complexity level, team size and team member locations and as such, the ideal approach is to select the most suitable components of the agile and waterfall approaches that suit your situation.
The agile approach is suited to projects that are ambiguous, less critical and have a small team located in the same physical place, while waterfall methods have greater analysis and design upfront.
Whatever approach you take, the most important element is the quality and timing of communication between the team, stakeholders and end users.
An iterative software design model focused on rapid prototyping and testing. “
Pros: Iterative development and user focused. Rapid build and testing permits fast feedback loops that influence the next iteration.
Cons: Not ideal for distributed teams.