Agile software development practices are a way to incrementally and iteratively improve software. But how do you actually learn agile? Sure, you could take an online course but in the spirit of the Agile Manifesto, which encourages collaboration and interaction, we recommend learning by doing. 💪
First, we'll provide an overview of agile methodologies and agile teams. Then, we'll give an overview of an agile sprint and how to use Jira as a team collaboration tool and for managing the process. By the end, we'll see how agile can be scaled across multiple project teams. Along the way, we'll point you towards resources to help you learn more. You'll be an expert in no time.
A brief history of agile
In 2001, a group of 17 software developers got together to discuss alternatives to the traditional waterfall method of project management. In waterfall, a project is planned in a linear and sequential format. It contains five phases: gathering requirements, design, implementation phase, requirements verification, and project maintenance.
This group of developers was trying to create something more flexible than a waterfall approach. More ideally, a team could adapt to change over the course of a project and provide updates to stakeholders via continuous delivery of software over incremental periods of time. This would differ from waterfall, which delivers the final product at one time and the end of its five phases.
They ended up writing the Agile Manifesto, which prioritizes:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The manifesto doesn't dictate software development processes or specify how to manage projects. Instead, it is a set of core values to rally a project team around.
Let's talk about some specific ways to implement these values in practice.
Agile frameworks in practice
Agile principles are more of a mindset than a prescribed process. That said, there are two ways to learn agile in practice — Scrum and Kanban.
Either of these methods can be used to practice agile project management. They both stress that teams use an iterative approach to completing work. They follow the Agile Manifesto's four points of interaction, working software, collaboration, and change.
Scrum for team organization
The co-creators of Scrum are Ken Schwaber and Jeff Sutherland. In their Scrum Guide (we recommend bookmarking this 📘), they define Scrum as a lightweight framework that helps people, teams, and organizations generate value through adaptive solutions for complex problems. Scrum organizes teams around the values of commitment, focus, openness, respect, and courage.
The Scrum team typically comprises software developers, a product owner, and a scrum master. Each scrum team member serves a role:
- Product owner: prioritizes the product backlog and makes sure the team understands the product vision and goal
- Software developers: execute the work outlined in the backlog and adapt their plan each day (respond to change)
- Scrum master: helps everyone on the team understand and implement Scrum practices
Kanban for visualizing work-in-progress
Kanban is a manufacturing technique that was created at Toyota. It was designed as a process for just-in-time manufacturing, which is designed to have “just enough” supplies needed to finish the current backlog of orders, minimizing the risk of having extra parts lying around. Toyota used a system of colored cards to indicate when a certain product or part was low in supply so they could replenish it, just-in-time.
Fast-forward to modern software development and this manufacturing technique becomes a Kanban board! Kanban is a visual approach to agile development that shows tasks on a Kanban board, represented by cards (physical or digital). Kanban limits work-in-progress with a continuous flow of work — a new task is started only when another is complete (you can do this by setting a maximum number of allowable cards on a board). It also promotes transparency and real-time communication by showing all work that is currently in progress.
Let's dive into the Scrum framework as an example of an agile approach to software development. We'll do this by looking at the Scrum agile ceremonies and the people typically involved in the Scrum agile process.
Practice your agile Scrum ceremonies
Scrum uses standardized events to organize team members:
- Stand up
- Sprint planning
- Sprint review
To organize your Scrum events, you might consider using a tool like Jira, which is popular for agile teams.
Here's how to go through the Scrum events:
- Decide your team’s goal to accomplish in a set period of time, say, two weeks. This is a sprint. Ideally, the goal is an incremental completion of a larger project.
- Break your sprint’s goal into manageable tasks in Jira. Make the tasks as small as possible so you can make incremental progress on your goal each day.
- Do a planning session with your team where you each discuss scope and how much work you can get done by the end of the sprint. This is sprint planning.
- Have a short meeting or call with your team every day during the sprint. Each team member should provide three things: what they got done yesterday, what they plan to finish today, and if there's anything preventing them from getting their work done. That's the daily stand up. You should try to do this in less than 15 minutes.
- At the end of your sprint, show off what you got done to anyone who has a stake in the project. Ask each other questions, give feedback, and celebrate what you accomplished! 🎉 That's a sprint review.
- Finally, set time aside at the end of the sprint to be open with your team about what went well with your work, what didn't go so well, and brainstorm ideas with each other about how to improve for the next two weeks...and you just did a sprint retrospective.
Try it. Trust us — it's addictive. 😃
How to scale agile in large organizations
Now you know how to be agile. But how do you learn agile practices in a large organization with many projects? Does it scale across these projects? What if there are dependencies between them?
Scaled Agile Framework, or SAFe, is a series of guidelines and practices designed to help bring agile into all teams and levels of larger organizations. Just like other agile practices, it's meant to bring visibility, alignment, and collaboration to large organizations. If your organization ends up adopting SAFE, then the best place to start is Program Increment (PI) Planning.
PI Planning for scaling agility
PI Planning maintains regularly scheduled events where multiple project teams in large organizations align on priorities and vision, plan the product roadmap, and work through cross-team dependencies. These meetings happen throughout the year and can be conducted in-person or remotely. Our Ultimate Guide to PI Planning goes into more depth on this topic, including sample agendas to help get you started. 😎
Easy Agile Programs for Jira is the ultimate PI Planning solution for Jira. It helps agile teams to scale by promoting alignment on the committed features for a program increment. It does so by providing:
- Team swimlanes to organize teams
- Visual dependency lines to avoid bottlenecks
- Focused views of Jira tasks
- Visibility into issues that are linked across sprints
With such visibility, this solution is ideal whether your PI Planning is face-to-face or remote.
Managing agile at scale
As agile teams and organizations succeed, growth is inevitable. While learning agile at a small scale is paramount to success, it can be tricky to expand its principles across teams in a growing organization.
We've got you covered. Not only have we built tools to work across teams, but our learning resources will help your organization learn agile at scale!