Let me start off by saying, Agile is not just for projects and not just for software development. Agile is NOT Scrum. Agile is also not a methodology or framework.
Now that I have that out of the way, let us proceed with a, hopefully, clearer definition of what Agile is.
I have found myself involved in a couple of debates on this issue and find I enjoy them. I even posted this “What Does Agile Mean?” as a question on projectmanagement.com to try and incite a little debate.
Let us start with a Google definition. According to the dictionary tool in Google, Agile is:
“1. able to move quickly and easily.”
“2. relating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans.”(Google Dictionary)
Our focus is the second definition (although the goal is the first), and the first problem I see with it is that it relates it to project management. I have to disagree. While Agile approaches are used for project management, it is not the only use of Agile methods or frameworks.
Agile may have a strong history with software development, but it is not isolated to software development. Even some commonly declared Agile software development frameworks, such as Scrum, can be used for non-software purposes. There are a few Agile methods and frameworks dedicated solely to software development, but it is not the majority of Agile methods and frameworks.
Agile: A Definition
Through my debating and experience with the issue, I have attempted to come up with a “good” definition of what Agile is. This may cause some disagreement.
Agile is a generic or “umbrella” term for an operational framework or methodology that strives to keep a focus on requirements by using adaptive approaches and continuous improvement practices.
Vague, but I think accurate. Being a little more of a fluid definition that allows for the ability of many Agile frameworks to expand beyond software projects. It also requires further explanation.
Some common traits of Agile Approaches:
- Adapt to changing requirements
- Continuously improve the work process and the product
- Release work incrementally
- Inspect with each incremental release
- Focus on the product or work output as the primary measure of success
- Gain frequent customer (primary user of the product or work output) input.
- Utilize servant-leadership philosophy
- Allow for self-organizing teams
You do not need to adopt all of those traits to be Agile. A way of implementing Agile outside of a predefined approach focuses on continuous improvement (Lean), servant-leadership, self-organizing teams, gaining frequent input, collaboration, and using the output as the core driver of success.
There exist several methods and frameworks that attempt to structure some/all of the above list in a way that they can help you focus on the needs and the work output. Some are more strict than others, Some are looser defined, some consist of much wider processes or a fuller life-cycle, and some are very focused. It wouldn’t be fair to declare Agile a failure if you only tried one or failed to really bring the core of Agile in. This is not a complete list below (hopefully this is: Comprehensive List of Agile Frameworks).
- Dynamic Systems Development Methodology (DSDM)
- Test-Driven Development (TDD)
- Feature-Driven Development (FDD)
- Extreme Programming (XP)
- Scaled Agile (SAFe)
- Disciplined Agile Delivery (DAD)
- Scrum of Scrums
- Large Scale Scrum (LeSS)
- Rapid Application Development (RAD)
- Agile-Waterfall Hybrid (often just called Agile)
- Agile-Agile Hybrid (sometimes just called Agile, sometimes one of the other names in this list)
- Agnostic Agile
- Lean Software Development
- Unified Process (UP)
- Unified Software Development Process (USDP)
- Rational Unified Process (RUP)
- Optum Scaled Agile Methodology (OSAM)
- Spotify Squad
- Sustainable Cultural Agile Release in the Enterprise (SCARE)
- FAST Agile
- Adaptive Software Development (ASD)
Some Advantages of Agile Methods/Frameworks
If done properly, Agile methods can have many benefits. This may vary in your organization and by which method/framework you choose, but in general, there are 5 core advantages to the business.
- Flexible and adaptive to changing situations/market conditions
- Higher quality delivery
- Quicker value delivery
- Greater customer interaction and satisfaction
- Less focus on non-value added items
I have been on some poorly implemented Agile teams before. If it feels like you are spending all of your time in meetings talking about the work you have to do, but little time doing it – you are doing it wrong. If you end up in an endless iterative loop with constantly changing requirements to the same release or incapable of setting scope boundaries to a release – but no actual releases for weeks or months, you are doing it wrong (this is what timeboxing is for). If you like to operate that way, an Agile approach probably isn’t for you.
Adopting Agile requires a change, not a small change, but a complete change. This is why they say you have to be Agile you cannot just do Agile.
Some Disadvantages of Agile Methods/Frameworks
- Greater risk of failure due to the inability to make decisions on time, and insistence that nothing can proceed until minor decisions can be made
- Complete dedication from the team involved with little outside distractions
- An inability to decide on what “just enough” means, causing a lack of documentation or planning
- The final product may end up very different than was originally envisioned (this may not be all that negative)
- Too heavy of a focus on the processes of the framework
Agile is generic, it is not specific. What is practiced in one version, may not be practiced in all versions; Coca-Cola is brown, but not all pop (or soda if you prefer) is brown. The most important part is the philosophy behind Agile: Complexity Theory: The Most Important Part of Agile
It is also not just for software development projects. Kanban especially (my own opinion) has a lot of uses beyond software development, but any complex activity could benefit from an Agile approach.
For More Information:
Agnostic Agile: 12 Principles of Agnostic Agile
Agile Manifesto (Software Development Focused): Manifesto for Agile Software Development
Agile Alliance: Agile 101
Agile Business Consortium: DSDM Agile Project Framework
Images from https://www.pexels.com
Google Dictionary: Agile Definition