Agile development is an iterative software development methodology used by development and project teams.
That is a concise and relatively illustrative way to define what Agile is. Agile can also be defined differently.
An Agile approach is an incremental methodology used to manage projects and create software that helps teams deliver value to their customers faster with less headache.
It must be said that this definition is perhaps one of the most endearing and entertaining you will read in the literature on this methodology.
The humorous touch in the above definition may seem surprising, but it is also very accurate because one of the features of the Agile methodology is stress reduction, a more balanced approach to programming and design work.
The anti-stress effect of Agile is also achieved by the specific approach of this methodology to goals, results, activities, efficiency, and evaluation.
Agile isn't about the "wow effect" or the "big bang launch" but small, incremental successes.
The Agile approach focuses more on the process, evolutionary development, and increments. It's not about impressiveness but efficiency.
In Agile, requirements, plans, and results are constantly evaluated, allowing development, project, and research teams to respond to changes more naturally, quickly, and flexibly.
How September 11 affected the popularization and use of Agile
The story of Agile should begin with an event that helped popularize the Agile approach as a project management method.
This story was told to me by my Agile professor at Oxford University, who worked as a SCRUM Master at the defense corporation Lockheed Martin.
It turned out that the events of September 11, 2001, could have been prevented. This was the conclusion reached by the FBI, which investigated its own negligence.
It was revealed that the data on terrorists and their behavior was in the IT systems of the American special forces, which, unfortunately, was scattered and didn't have its own Data Hub.
Because of the inability to combine data and draw conclusions from it, the attack on the WTC was successful.
To prevent similar situations, the American government decided to create super software combining data from different systems and various government services.
As they said, they did. They wrote the IT project specification. They estimated the project and received funding from the US Congress of $400 million.
An important detail of this process is the fact that this super software was developed with the Waterfall (Cascade) model.
The software was created, and 400 million was spent; however, during testing, it turned out that it didn't work.
It was programmed according to the specification but didn't perform basic use cases.
Decision-makers who analyzed this failure and commissioned the software concluded that the problem was in the method of conducting the project.
The Waterfall method, the lack of iterations, the inability to make changes to the project, and the rigid adherence to a specification that wasn't perfect resulted in a total disconnect between team members within this large IT project. That's how they created software that didn't work.
The Agile method was suggested as a solution to this issue, whose manifesto was created in mid-February 2001.
The two events were linked by the year 2001, which changed the world not only politically and socially but also regarding design.
Agile Manifesto — What is Agile?
Date: The year 2001, February. Several months remained until September 11.
Place: A ski resort in Utah, USA, in which several programmers met unhindered by deadlines.
Goal: Change everything that doesn't work in IT projects.
Seventeen programmers met to share their experiences. And these weren't only positive. The sense of ineffectiveness, wastefulness, inadequacy, incomprehension, and severe inflexibility dominated.
Software development demanded the creation of a methodology more appropriate to the needs of current times.
The answer to this was and still is the Agile approach. Despite the passage of time, the Agile methodology is still very relevant and helpful. Its timelessness is its great strength.
The objective of signatories, originators, and creators of the Agile Manifesto was primarily to make the software development process more:
- Effective
- Flexible
- Efficient
- Harmonious
- Profound — based on values that would bring a certain depth to the software development process.
Simultaneously, they wanted to eliminate issues that affected the quality, effectiveness, and work atmosphere.
The creators of the Agile Manifesto wanted to exclude ineffective practices from this process to free it from activities that, while contributing little, caused a loss of efficiency, enthusiasm, and commitment.
The culprits were, for example, rigid rules and the need to create unnecessary documentation.
In their place, the Agile Manifesto introduced four core values that concisely summarized the attitude toward key areas and problems.
According to the Agile Manifesto, people and their interactions should always be more important than processes and tools.
The Agile methodology puts working software above even the most thorough documentation.
Cooperation with the customer over rigid adherence to the terms of the contract.
Flexible and quick reaction to changes over fulfilling the predetermined and rigid plans.
The Agile methodology was supposed to allow development teams to achieve agility to improve their ability to react effectively to changes.
The awareness of the immensity of wasted time, energy, and work required to manage changes (expectations, needs, goals, requirements, conditions) became the foundation for the need to develop better principles.
That's why, according to Page Laubheimer, the Agile methodology is focused on radical transparency and an honest acknowledgment that no development team knows all the problems, solutions, and answers at the beginning of a project.
What is the Agile methodology all about? Agile project management
The popularity of Agile in software development is the result of its effectiveness and other advantages, among which are the following:
- Flexibility that manifests in a much easier redirection of objectives
- Shorter time horizons
- Focus on the fast development of working software
- Prevention of errors and/or faster detection and fixing
- Going beyond limitations of the "Iron Triangle of Project Management" — scope, schedule, and quality.
Agile is an iterative methodology in which increment means continuous deployments based on customer, user, and stakeholder feedback (also on the broadly understood market, industry, economic and legal conditions).
The Agile approach improves the ability to adapt and organize. It's about creating software based on methods that are much more adequate to current contexts and conditions.
The Waterfall approach, often compared to Agile, is based on linear, rigid development and involves many limitations. For example, related to the speed and timing of reactions.
Where the Waterfall approach works based on strict criteria for progress, development, and change, Agile introduces a philosophy of small steps, small successes, and low costs of changing rules, goals, means, and tools. Agile is based on a feedback loop.
The Waterfall approach works best in the case of projects in which processes are predictable and repetitive.
In the case of industries where changes are a norm, this approach becomes pretty problematic.
Methodologies used to implement Agile
As soon as possible — this is the guiding principle that can be seen in Agile.
That's how development teams that work in line with the Agile methodology meet the new requirements of customers.
And these, thanks to face-to-face meetings, can be communicated and prioritized.
Agile has developed many approaches, solutions, and tools, among which the most popular are:
- Dynamic Systems Development Method (DSDM) aims to support software development. DSDM focuses on the business needs, timeliness, cooperation, quality, and increments based on solid fundaments, iterative development, continuous and transparent communication, and demonstrating control.
- Scrum's goal is to give structure to the project through permanent roles, responsibilities, and meetings. It prioritizes the creation of software in the form of Sprints that allow the team to deliver software regularly.
- Feature-Driven Development (FDD) aims to develop a general model, build a list of features, plan according to features, design in line with features, and create according to features.
- Kanban seeks to promote small and continuous changes in the current system. Kanban is based on the visualization of flow and the way of working, reducing work in progress, managing flow, concretizing rules, and focusing on continuous improvement.
- Adaptive Software Development (ASD) is designed to encourage working teams to grow according to a three-phase process: speculating, collaborating, and learning.
- Extreme Programming (XP) focuses on improving the quality and speed of reacting to changing customer requirements.
- Lean Software Development (LSD) aims to support software development using the principle of eliminating waste, reinforcing continuous learning, delaying decisions and accelerating delivery, strengthening the team, and building integrity.
Scrum vs. Agile — differences
One of the most popular approaches in Agile — Scrum — is often treated as a synonym for this methodology, which, naturally, isn't true.
Scrum is an approach, a narrower concept than Agile. Although Agile and Scrum methodologies have common parts, their differences are significant.
What Scrum and Agile have in common is that the cycle of the digital product development process is short (a single Sprint usually doesn't last more than a month).
Agile and Scrum focus on people, specialists, teams, cooperation, and communication.
In both Agile and Scrum, the most crucial matter is the flexibility and ability to react quickly to the feedback obtained from face-to-face meetings.
Agile is a methodology that ensures the development of the product through iterations. It will best suit small teams in which leadership is significant.
The most vital thing in Scrum is the team's ability to self-organize.
What is Agile? Agile, compared to Scrum, is a much more rigid method. Communication in Agile usually occurs between teams.
Scrum involves daily meetings (daily stand-ups) where each team member plays a designated role.
Requirements, analysis, and Agile projects are constantly monitored. In Scrum, functionalities are presented and evaluated at the end of every Sprint.
Agile works best for simple projects, and Scrum is recommended for leading innovative and unusual projects.
Agile project management and User Experience
You can find a broader discussion of relations connecting Agile and User Experience in the article "What is Agile Development?" published on the Interaction Design Foundation blog.
The most significant value of this article is the comparison of Agile and UX from the perspective of development and project teams — their approaches, expectations, perceptions, work methods, and attitudes toward users and stakeholders.
Reconciling these differences requires the creation of an appropriate environment in which cooperation is based on good communication, openness, understanding, exchanges, and dialog.
When reconciling the needs and goals of Agile and User Experience, it is also essential to keep in mind the definitions of the roles which given specialists play and the teams they form.
Here, it's worth remembering the principles that organizations should use if they want to fully combine the potential of Agile and UX.
Hoa Loranger — a researcher associated with Nielsen Norman Group — in the article "Doing UX in an Agile World: Case Study Findings," writes that using Agile can't mean reducing the role of User Experience.
Furthermore, she advocates for UX specialists to actively engage in the Agile process. Before a Sprint, they should plan activities (such as Agile testing and establishing assumptions).
Moreover, UX specialists should show leadership and take the time to reach their coworkers.
Agile workflows should be flexible enough to accommodate the needs of the UX team. And the latter should be considered an integral part of product teams.
At the same time, it's essential for the quality of this cooperation and the results of the work that the Agile process isn't entirely controlled and rigorous.
Page Laubheimer very astutely notes that the typical Agile processes, unfortunately, don't account for such variables as time, resources, and scope that are significant for UX designers and UX researchers.
Hence, a mutually beneficial combination of User Experience and Agile is possible as long as:
- The management of the organization understands and supports UX work
- Agile workflow is sufficiently flexible to adapt to UX needs
- UX specialists are a vital part of product teams, in which they're treated as equally important, essential, and desirable.
Agile methodology. Agile approach. Summary
- Proper Agile development is an iterative software development methodology that development and project teams use when creating digital products.
- An Agile system is an incremental approach used to manage projects (AGILE roadmap).
- Agile principles are pretty simple. The team is focused on the implementation of the established plan, and it's concentrated on continuous improvement. The delivery of working software is the primary measure of progress and success. This is the clue of Agile methodologies.
- Agile is used to create software (e.g., web applications, mobile applications). It's a methodology that helps teams deliver value to their customers faster with less headache.
- The Agile approach offers stress reduction and a more balanced approach to development and design work.
- Agile project management, Agile methodologies, and the subject of Agile are founded on values and specific philosophies.
- The Agile methodology is not focused on the "wow effect." It's not about a "big bang launch." It's about the small and successive successes that ensure customer satisfaction and the ability to use conclusions from the previous Sprint, which is much more effective than the traditional approach.
- Agile isn't about impressiveness but efficiency.
- The objective of signatories, originators, and creators of the Agile Manifesto was primarily to make the software development process more effective and flexible.
- The goal of the programmers who signed the Agile manifesto was to exclude ineffective practices from this process to free it from activities that, while contributing little, caused a loss of efficiency, enthusiasm, and commitment.
- According to the Agile Manifesto, people and their interactions should always be more important than processes and tools.
- Agile puts working software above even the most thorough documentation.
- It puts cooperation with the customer over rigid adherence to the terms of the contract.
- It prioritizes flexible and quick reactions to changes over fulfilling predetermined and rigid plans.
- Agile methodology was supposed to allow development teams to achieve the agility to improve their ability to react effectively to changes.
- Agile is an iterative methodology in which increment means continuous deployment based on feedback from customers, users, and stakeholders.
- The Cascade approach is based on linear, rigid development and involves many limitations.
- Where the Cascade approach works based on rigid criteria for progress, development, and change, Agile introduces a philosophy of small steps, small successes, and low costs of changing rules, goals, means, and tools.
- Agile has developed many approaches, solutions, and tools.
- Scrum is incorrectly used as a synonym for Agile methodology.
- Agile and Scrum focus on people, specialists, teams, cooperation, and communication.
- In both Agile and Scrum, the most crucial matter is the flexibility and ability to react quickly to the feedback obtained from face-to-face meetings.
- The most vital thing in Scrum is the team's ability to self-organize.
- Agile, compared to Scrum, is a much more rigid method.
- Agile methodology, Agile strategy, Agile project management, Agile method assumes that communication often occurs between teams.
- Scrum involves daily meetings (daily stand-ups) where each team member plays a designated role.
- Using the Agile approach can't mean reducing the role of user experience.
- Agile project management assumes that Agile workflows should be flexible enough to accommodate the needs of the UX team.
- The UX team should be considered an integral part of product teams.
- The process mustn't be entirely controlled and rigorous in Agile project management.
- Typical Agile processes don't account for variables such as time, resources, and scope, which are significant for UX designers and researchers.
- A mutually beneficial combination of User Experience with Agile is possible as long as the organization's management understands and supports UX work.
- Agile workflow should be sufficiently flexible to account for the needs of specialists and UX designers.