Agile methodology: an overview- By Agile Cockpit
Responding to change is Agile; Being Proactive is Agile; Being prepared is Agile; Being Flexible is Agile; Being Assertive and Open to say No is Agile; Agile enables you to get things done.
Agile methodology definition:
Agile methodology is a type of project management process, mainly used for software development, where demands and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customers.
Stemming from the values and principles of the Agile Manifesto, it was created as a response to the inadequacies of traditional development methods such as the Waterfall method. The software industry is a highly competitive market due to the fact that software is something that can be continuously upgraded. This means that developers need to constantly improve and innovate their products to keep on top of the game — and the linear, sequential approach of the Waterfall method just wasn’t cutting it.
A brief history of Agile software development
In the 1990s, software development faced a bit of a crisis. Referred to as ‘the application development crisis’ or ‘application delivery lag’, the industry realized that it couldn’t move fast enough to meet customer demands and requirements — the estimated time between a business need and actual application was about three years. See, traditional development models were based on a timeline approach, where development happened sequentially and the final product wasn’t revealed to customers until the very final step. This left little room for flexibility when it came to progress reviews and changes. So, by the time an actual application was finished, it was highly likely that the requirements and systems of the project’s original objectives had changed.
With money and efforts wasted, and even some projects canceled halfway through, professional leaders of the software community thought it was time for a new, refreshed approach. Then in 2001, in a snowy, ski lodge in Utah, gathered 13 individuals. Some of whom were already entertaining the idea of a new software development method. They all yearned to cement a process that legitimized what was being practiced, and so, came the creation of the Agile Manifesto.
What is the Agile Manifesto?
The Agile Manifesto is a declaration of the values and principles expressed in Agile methodology. Made up for four foundational values and 12 key principles, it aims to help uncover better ways of developing software by providing a clear and measurable structure that promotes iterative development, team collaboration, and change recognition.
The values and principles of the ‘Manifesto for Agile Software Development’ 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
- Customer satisfaction through early and continuous software delivery
- Accommodate changing requirements throughout the development process
- Frequent delivery of working software
- Collaboration between the business stakeholders and developers throughout the project
- Support, trust, and motivate the people involved
- Enable face-to-face interactions
- Working software is the primary measure of progress
- Agile processes to support a consistent development pace
- Attention to technical detail and design enhances agility
- Self-organizing teams encourage great architectures, requirements, and designs
- Regular reflections on how to become more effective
Those who apply any type of Agile methodology adhere to these values and principles. The manifesto offers a good overview of what is expected when it comes to Agile development life cycle practices.
What is an Agile project management?
Agile project management is a methodology that is commonly used to deliver complex projects due to its adaptiveness. It emphasizes collaboration, flexibility, continuous improvement, and high-quality results. It aims to be clear and measurable by using six main “deliverables” to track progress and create the product.
- Product vision statement: A summary that articulates the goals for the product.
- Product roadmap: The high-level view of the requirements needed to achieve the product vision.
- Product backlog: Ordered by priority, this is the full list of what is needed to be done to complete your project.
- Release plan: A timetable for the release of a working product.
- Sprint backlog: The user stories (requirements), goals, and tasks linked to the current sprint.
- Increment: The working product functionality that is presented to the stakeholders at the end of the sprint, and could potentially be given to the customer.
There are various frameworks within Agile project management that can be used to develop and deliver a product or service. While they each have their own set of characteristics and terminology, they share common principles and practices.
Two of the most popular ones that support the Agile development life cycle are Scrum and Kanban.
Agile Scrum methodology
Scrum is an Agile framework that is used to implement the ideas behind Agile software development. It’s comprised of five values: commitment, courage, focus, openness, and respect. Its goal is to develop, deliver, and sustain complex products through collaboration, accountability, and iterative progress.
What distinguishes Scrum from other Agile methodologies are the roles, events, and artifacts that it is made up of, with which it uses to operate. Here’s what they are:
Scrum team roles
- Product owner: Product expert who represents the stakeholders, and is the voice of the customer.
- Development team: Group of professionals who deliver the product (developers, programmers, designers).
- Scrum master: Organized servant-leader who ensures the understanding and execution of Scrum is followed.
- Sprint: Iterative time boxes where a goal is accomplished. The time frame does not exceed one calendar month and is consistent throughout the development process.
- Sprint planning: Where the entire Scrum team gets together — at the beginning of every Sprint — to plan the upcoming sprint.
- Daily Scrum: 15-minute time-boxed meeting held at the same time, every day of the Sprint, where the previous day’s achievements are discussed, as well as the expectations for the following one.
- Sprint review: An informal meeting held at the end of every Sprint where the Scrum team present their Increment to the stakeholders and discuss feedback.
- Sprint retrospective: A meeting where the Scrum team reflect on the proceedings of the previous Sprint and establish improvements for the next Sprint.
- Product backlog: Managed by the Product Owner, it’s where all the requirements needed for a viable product are listed in order of priority. Includes features, functions, requirements, enhancements, and fixes that authorize any changes to be made to the product in future releases.
- Sprint backlog: A list of the tasks and requirements that need to be accomplished during the next Sprint. Sometimes accompanied by a Scrum task board, which is used to visualize the progress of the tasks in the current Sprint, and any changes that are made in a ‘To Do, Doing, and Done’ format.
Kanban is a highly visual method popularly used within Agile project management. It paints a picture of the workflow process, with an aim to identify any bottlenecks early on in the process so that a higher quality product or service is delivered.
Its six general practices are:
- Limiting work in progress
- Flow management
- Making policies explicit
- Using feedback loops
- Collaborative or experimental evolution
A concept that was developed in the production line of Toyota factories in the 1940s, Kanban achieves efficiency through visual cues to signal certain stages of the development process. The said cues are a Kanban board, Kanban cards, and sometimes even Kanban swimlanes.
- Kanban board: A visual management tool used to visualize the development process. It can be either physical and can be used for personal productivity, as well as professional use.
- Kanban cards: Cards that depict a work item/task in the work process. Used to communicate progress with your team, it represents information such as status, cycle time, and impending deadlines.
- Kanban swimlanes: A visual element on the board that allows you to further distinguish tasks/items by categorizing them. Flowing horizontally, it offers distinction and provides a better overview of the workflow.
Agile methodology is an effective process for teams looking for a flexible approach to product development. No longer exclusive to the software industry, it can be implemented to any business venture that requires a non-linear plan of attack that also needs to value customer collaboration, effective teamwork, responsive changes, and of course, quality results.
How has Agile methodology improved your team’s way of working? Don’t forget to share your tips with us!