A brief introduction to Agile (and how to get started)
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).
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.
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.
Scrum — learn more about Scrum
- Iterative model for complex product development.
- Fixed length iterations (sprints).
- Highly prescriptive. Roles, responsibilities, and meetings never change.
Lean — learn 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
Kanban — learn 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.
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.
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.
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.