Agile Methodology: An Overview
The art of iterative and incremental software development
Those who work in or near the industry are aware that the art of software development is unique and distinct from other types of engineering projects. It requires the care and attention of a team who are adaptable and flexible. Software development also needs a team that’s willing to respond quickly to changes, and won’t bat so much as an eyelid at a client’s overnight demands. This is what the Agile development methodology is all about.
According to Verison One’s State of Agile Report in 2020, Agile is here to stay. The principles and practices of Agile methodology have scaled cross-team and globally. Key takeaways from the report are:
- “95% of respondents report their organizations practice Agile development methods.”
- “81% of respondents said their organization has Agile teams where the members of the same team do not all work in the same location (i.e. not co-located).”
- “71% of respondents said their organization practices Agile with multiple co-located teams collaborating across geographic boundaries.”
Agile Methodology Definition
What is Agile methodology? Agile methodology is a project management process that is primarily used in software development. It’s used where demands and solutions emerge through the collaborative effort of self-organizing and cross-functional teams and their customers.
The Agile methodology is a collection of principles that value adaptability and flexibility. Agile aims to provide better responsiveness to changing business needs and therefore focuses on enabling teams to deliver in workable increments.
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 updated. 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.
Agile vs Waterfall Methodology
The agile vs waterfall methodology debate demonstrates that the two project management methodologies are polar opposites. The use of Agile and waterfall methodology largely depends on the project expectations, deliverables, and project owner vision.
The agile methodology in software development, for example, is extremely adaptable. Teams can respond quickly to project changes and customer needs. The structure of the Waterfall methodology, on the other hand, is more rigid.
Agile is ideal for software development as a project can take years to complete. As such, technology will often evolve rapidly during this time. Therefore, Agile methodology is a useful project management method due to allowing for changes in direction to be incorporated even late in the process. This flexibility also benefits the software development team by accounting for continuous stakeholder feedback.
In addition, in Agile, the team will work on project phases concurrently, frequently with tight deadlines. The team, rather than a project manager, determines the project’s direction. While this can motivate and boost overall productivity, it does require the team to be more self-directed.
Waterfall methodology, on the other hand, is a linear form of project management. It’s best suited for projects where the end result is clear from the start. The project’s expectations and deliverables for each stage should be clearly defined. This is because they are required to move on to the next phase. Waterfall methodology, for example, is a good system to follow if a project owner has a clear and specific vision of an app that will not change during project development.
Meanwhile, Agile allows for a lot of flexibility in adapting and changing course as the project progresses. It is better suited for projects where the outcome may need additional research or testing.
The budget for projects using Waterfall methodologies is also less flexible because the project is planned from the start. Because Agile allows for more flexibility in project direction as it progresses, the budget is also subject to change. Similarly, the Waterfall timeline is fixed from the start, whereas the Agile timeline is more flexible and dependent on how the project develops.
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 time, 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, a group of industry practitioners gathered to discuss industry practices. Though the meeting was set up with a primary focus on the discussion of development cycles, some participants 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 of 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:
Agile Manifesto Values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile Manifesto Principles:
- 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 the Agile development life cycle practices.
What is 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.
Agile Methodology Steps
These are the deliverables found in agile project management:
- 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 for 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. Each framework highlights a specific approach and focuses on a determined outcome. Depending on the requested outcome, the particular approach of Agile is chosen and applied. 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 is the most popular Agile framework used in companies. Created by Jeff Sutherland and Ken Schwaber (who were also part of the 13 individuals who cemented the Agile Manifesto), it comprises 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, and with which it operates. 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: In Scrum, a sprint is a brief period of time during which a development team works to complete specific tasks, milestones, or deliverables. Sprints in agile methodology, also known as “iterations,” essentially divide the project schedule into digestible time blocks during which smaller goals can be achieved. 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 presents their Increment to the stakeholders and discusses feedback.
- Sprint retrospective: A meeting where the Scrum team reflects on the proceedings of the previous Sprint and establishes 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.
Kanban agile methodology has six general practices:
- 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 (a whiteboard, sticky notes, and markers) or virtual (like Zenkit’s online project management tool), 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.
What Is Lean Agile Methodology?
The lean agile methodology is a development method that assists teams in identifying waste and refining processes. It’s a way of thinking that promotes efficiency, effectiveness, and continuous improvement.
Lean agile, also known as lean software development, is based on lean manufacturing principles. Instead of relying solely on increased sales, the concept was introduced into manufacturing to improve profits by lowering costs. A company can save money by eliminating waste and becoming more efficient, which increases overall profits.
The Benefits of Lean Agile
- Less time is wasted
- Reduced costs
- Improved quality of work
Lean Agile Principles
Lean agile methodology has 5 core principles:
- Identify Value
- Map the Value Stream
- Create Flow
- Establish a Pull System
- Seek Perfection
Other Agile Development Life Cycle Approaches
Below you can find other important types of agile methodology that can easily be overlooked. Other agile methodology examples include:
Extreme Programming (XP)
XP is based on the five values of communication, simplicity, feedback, courage, and respect. XP is a framework that aims to produce a higher quality of life for the development team, as well as a higher quality product, through a collection of engineering practices. These practices are:
- The Planning Game
- Small Releases
- Simple Design
- Pair Programming
- Collective Ownership
- Continuous Integration
- 40-hour week
- On-site Customer
- Coding Standard
Crystal comprises a family of Agile methodologies that include Crystal Clear, Crystal Yellow, and Crystal Orange. Their unique characteristics are guided by factors such as team size, system criticality, and project priorities. Key components include teamwork, communication, and simplicity, as well as reflection to regularly adjust and improve the development process. This Agile framework points out how each project may require a tailored set of policies, practices, and processes to meet the project’s specific characteristics.
Dynamic Systems Development Method (DSDM)
DSDM is an Agile methodology example that focuses on the full project lifecycle. It was created in 1994 after users of the Rapid Application Development (RAD) wanted more governance and discipline in this iterative way of working. Based on eight principles, its philosophy is ‘that any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business.’
It promotes the use of the following practices so that it can offer best practice guidance for on-time, on-budget delivery of projects:
- Facilitated Workshops
- Modeling and Iterative Development
- MoSCoW Prioritisation
DSDM is designed to be independent of and can be implemented in conjunction with, other iterative methodologies.
Feature-Driven Development (FDD)
FDD is a lightweight iterative and incremental software development process. With an objective to deliver tangible, working software in a timely manner, it is an Agile methodology that entails specific, very short phases of work, which are to be accomplished separately per feature.
Its development process is established on a set of best practices with a client-value aim. The eight best practices are:
- Domain Object Modeling
- Developing by Feature
- Component/Class Ownership
- Feature Teams
- Configuration Management
- Regular Builds
- Visibility of progress and results
Agile Methodology Best Practices
It’s always handy to know how to do things best. Here are seven things you and your team should be doing when implementing any type of Agile methodology:
Customer collaboration is a vital part of Agile methodology one of the core values stated in the Agile Manifesto. Through consistent communication with the development team, the customer should always be aware of the progress, and the combined effort will result in a higher-quality product.
A tool used to explain a software feature from an end-user perspective, the purpose of a User Story is to create a simplified description of a requirement. It helps to picture the type of user of the product, what they want, and the reason(s) for it. A common User Story format that is used is:
As a [role], I want [feature], because [reason].
Continuous Integration (CI) involves keeping the code up to date by producing a clean build of the system a few times per day. With a rule stating that programmers never leave anything unintegrated at the end of the day, it enables the delivery of a product version suitable for release at any moment. What CI seeks to do is to minimize the time and effort required by each integration.
Performing automated tests keeps the team informed about which of the code changes are acceptable, and whether or not a function is working as planned. Regression tests are run automatically before work starts.
Programming in pairs aims to enhance better designs, fewer bugs, and a sharing of knowledge across the development team. One of the least-embraced Agile programmer practices, involves one programmer ‘driving’ (operating the keyboard), while the other ‘navigates’ (watches, learns, provides feedback). The roles can be rotated.
Test-Driven Development (TDD)
TDD aims to foster simple designs and inspire confidence. Instead of a process where software is added, that is not proven to meet requirements, it is a method based on the repetition of a very short development cycle where requirements are turned into test cases, and then the software is improved to pass the new tests.
A burndown chart is a graphical representation of the work that is left to do versus the time you have to do it. Using one as part of your Agile project management plan enables you to forecast when all the work will be completed. A detailed burndown chart will also include the number of User Stories per unit of time.
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 in 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!