Agile

What is Agile?

ask-blackboard-356079

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. The philosophies that influenced the creation of Agile existed before Agile had a name. Complexity Theory, Systems, Theory, Chaos Theory are all part of the pre-Agile landscape the preceded the creation of Agile: What is Complexity Theory and How Can it Improve the Workplace? and Complexity Theory: The Most Important Part of Agile.

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:

  1. Adapt to changing requirements
  2. Continuously improve the work process and the product
  3. Release work incrementally
  4. Inspect with each incremental release
  5. Focus on the product or work output as the primary measure of success
  6. Gain frequent customer (primary user of the product or work output) input.
  7. Utilize servant-leadership philosophy
  8. Allow for self-organizing teams
  9. Ensure that others on the team are treated respectfully

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.

Agile Methods/Frameworks

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).

  • Scrum
  • Kanban
  • Scrumban
  • 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
  • Nexus
  • 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
  • Crystal
  • 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.

  1. Flexible and adaptive to changing situations/market conditions
  2. Higher quality delivery
  3. Quicker value delivery
  4. Greater customer interaction and satisfaction
  5. 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.



Agile Reading Material


Some Disadvantages of Agile Methods/Frameworks

  1. Bad CodeGreater risk of failure due to the inability to make decisions on time, and insistence that nothing can proceed until minor decisions can be made
  2. Complete dedication from the team involved with little outside distractions
  3. An inability to decide on what “just enough” means, causing a lack of documentation or planning
  4. The final product may end up very different than was originally envisioned (this may not be all that negative)
  5. Too heavy of a focus on the processes of the framework

*Also see: Flaccid Scrum / Flaccid Agile and Technical Debt

Reflection

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.

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

Sources:

Images from https://www.pexels.com

Google Dictionary: Agile Definition

Agile Debate: https://www.projectmanagement.com/discussion-topic/105618/What-does-Agile-mean-

9 replies »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.