A brief introduction to Agile (and how to get started)

Zola McAdie

June 16, 2020

What is Agile?

Agile is an iterative approach to delivering a project. It was originally envisioned for software development as an alternative to linear project management methodologies.

By working incrementally, Agile allows us to adapt to new challenges as they come up (and they always come up).

At their core Agile projects aim to deliver value as early and as often as possible instead of only at the end of the project.

The core values and behaviours of an Agile project are:

  • Trust — between the team and stakeholders
  • Flexibility — to adapt to new challenges
  • Empowerment — of the team to make key decisions
  • Collaboration — between the team, stakeholders, and end-users

Agile is Not a Monolith

Conversations about Agile work can become confusing, even conversations between two people that both understand the value of and implement Agile practices. When talking about Agile it’s important to remember that Agile is not a monolith.

Big A Agile vs. Little A Agile

Big A Agile and Little A Agile — or Agile vs. agile — refers to the difference between official Agile frameworks (Big A Agile) and a set of principles about how work should be done (Little A Agile).

A table that outlines the difference between big A and little A Agile.
A table that outlines the difference between big A and little A Agile.

Little A Agile — (adjective): able to move quickly and easily — is a part of a team’s culture. It is change-driven by deliberate cultural and behavioural shifts often starting at the top of an organization.

Big A Agile — (noun): relating to or denoting a method of project management — is a set of codified tools and practices. It is process-driven and involves the adoption of official Agile frameworks or methodologies.

Fundamentally, the difference between Big A Agile and Little A Agile is the difference between doing and being.

Agile Frameworks

Big A Agile can also refer to a number of different official frameworks. A few of the most popular are Scrum, Lean, Kanban, and Extreme Programming.

Scrumlearn more about Scrum

  • Iterative model for complex product development.
  • Fixed length iterations (sprints).
  • Highly prescriptive. Roles, responsibilities, and meetings never change.

Leanlearn more about Lean

  • Flexible approach that focuses on why vs how you work.
  • Prioritize value to end-customers (over literally everything else).
  • Focuses on reducing scope and cutting everything that isn’t high-value

Kanbanlearn more about Kanban

  • Visual framework to implement Agile
  • Shows what to produce, when to produce it, and how much to produce
  • Adapted from the Toyota Production System

XP (Extreme Programming)learn more about XP

  • Focuses on software developer satisfaction
  • Aims to deliver the simplest thing that will work
  • Emphasises respect in team communication

Our Approach to Agile

There are a few fundamental steps to a successful Agile workflow.

  • Break work down — into the smallest pieces possible
  • Prioritize everything — by importance (be ruthless)
  • Reflect, Learn, Adapt — at regular intervals

Our interpretation of agile is a lightweight approach that focuses on simple iterations and team communication.

It can be summarized as: Plan the Thing, Do the Thing, Make it Better.

Or more simply: Prioritize, Execute, Improve.

A diagram of the Agile workflow
A diagram of the Agile workflow

How to Use Agile Everyday

Some organizations implement Agile in one fell swoop, choosing an Agile framework and implementing it across their team all at once. Often however, change is implemented by individuals who choose to start viewing work in a different way. Below I’ll share a couple simple tools those individuals can use to start exploring what Agile might look like for them.

Rose, Thorn, Bud: A Retrospective Approach

Retrospectives are an amazing way for your team to test the waters of Agile. Retrospectives — or retros — are a way for your team to share wins, challenges, and learnings early and often.

Too often learnings from a project aren’t examined until the end of that project. This can lead to a recency bias — putting too much weight on recent learnings and forgetting those from the beginning of a project — and makes it difficult to address challenges while they are happening.

Instead, try pulling your team together every week or two (set a schedule) and ask yourselves three questions:

  • What went well? (Rose)
  • What was hard? (Thorn)
  • What can we do differently? (Bud)

A simple online tool that can help your team run these sessions is funretro.io.

Kanban Board

Another simple way to explore Agile is to use a Kanban board.

Try breaking work down into individual tasks and using a simple board to track their progress. This can be done for individual work or team work.

A simple tool like trello.com can make this super simple and helps you share it with your team.
A simple tool like trello.com can make this super simple and helps you share it with your team.

Experiment and Ask for Help

The most important part is to keep trying. Experiment with different ways of working, both for yourself and your team, see what works, what doesn’t, and where you can still make improvements.

Learn more about the Code for Canada Fellowship and Fellowship team projects.

The Latest From the Code for Canada Blog