Agile methodology is an iterative approach to project management that relies on continual changes and feedback to arrive at the final solution. Typically used in software development cycles, Agile methodology has been adapted to other business functions.
How Agile Methodology Works?
Agile methodology relies on continuous interaction between the client and the coding team. It also relies on cross-functional teams to make a product that meets the market expectations. For instance, the coding team might include a marketing manager to get a better sense of how end-users will interact with the product.
A complex project is broken down into smaller, simpler parts. Typically, features of a product are prioritized, the most important ones going in the first working prototype. The prototype undergoes continual changes, based on feedback from the client and/or the market, to reach the final shape. Unlike traditional project management models, such as the Waterfall model, testing and development are concurrent processes in agile methodology.
What is the Need for Agile Methodology?
In large, complex projects that can run for a fair length of time, requirements can evolve as time passes. For instance, new technology might emerge in the time that the project is in the development stage. Waterfall model and other traditional project management models do not allow for much flexibility to adapt to such changes. Development and testing are two separate processes, and once a product is in the testing stage, it is, often, too expensive and time-consuming to go back to the development stage. Agile methodology gives a more flexible approach of project management. Since critical processes run concurrent to each other, and the focus is on delivering quick, working iterations, it allows development teams to adapt to changing requirements.
Values of Agile Methodology
Agile methodology rests on 4 key values, which are:
- Focus should be on users and interactions, instead of processes and tools.
- Working software is given priority over documentation.
- Collaboration with the client is key, as opposed to contract negotiation.
- Adaptability is more important that following a set plan.
- Principles of Agile Methodology
In 2001, 17 leaders from the software development community gathered to design the Agile Manifesto, which listed 12 key principles of the Agile approach to software development. These are:
- Customer satisfaction through continuous interaction and fast deliveries.
- Adapting to changing requirements during the development process.
- Frequently delivering working software that's incrementally iterative.
- Collaboration between client and developers throughout the lifecycle of a project.
- Emphasis on self-organizing teams and motivating individuals by giving them the right work environment.
- Enable face-to-face interactions between various teams to promote better communication.
- Working software is the yardstick for measuring progress of a project.
- A steady development pace instead of a last-minute dash that might compromise quality.
- Consistent attention to good design and technical excellence.
- Keeping it simple, such as, by getting rid of functionality that does not add value for the end-user.
- Organized teams to promote high-quality architecture.
- Periodic introspection to find ways to be more effective.
What is Agile Scrum Methodology?
Scrum is a framework of Agile methodology. While Agile is a set of beliefs and values, a framework defines the rules based on those ideals. Scrum is, arguably, the most popular framework of Agile methodology. A key component of Scrum is sprints, which are short development cycles that run for 2-4 weeks. It relies on small, closely-knit teams to deliver incremental iterations of a project at a fast pace.
In addition to Scrum, some other commonly used frameworks of Agile methodology are:
Kanban: It relies on visualization for project management. Visualization of workflows helps in identification of potential bottlenecks.
Extreme Programming (XP): This framework relies on engineering practices, such as collective ownership, refactoring, and testing taken to an extreme to deliver a high-quality product.
Dynamic Systems Development Method (DSDM): It uses workshops and time boxing to achieve more control over the iterative process of project management.
Feature Driven Development (FDD): This is a lightweight framework where work phases, which are very short, are defined by required features in the product.