Agile Frameworks For Software Teams: An Overview
Introduction
Agile Methodology tackles the challenging task of software development by providing four core values that are more aligned with the fast-paced real world. As discussed in the intro article, these values emphasize frequent interactions, focusing on working software, and collaborating on changes needed.
However, the nature of software development is such that there are different types of work to be done. Pure feature development is one extreme, and only bug fixes are the other extreme. Most teams work somewhere within the spectrum of these two ends.
Since work can vary significantly, different frameworks have emerged to support these diverse needs. We'll now explore different frameworks and provide a quick summary of each.
Scrum
Scrum is best suited for complex projects where work can be completed over time. Work needs to be split up into smaller pieces (called Stories) and delivered in an iterative and incremental way so that customers can try the software with partial functionality.
As the project is complex, it involves cross-functional teams with different skill sets: product managers, developers, designers, etc.
The complex nature of the work also necessitates time-boxed work items (called Spikes) to adjust for special cases with urgent deadlines.
The incremental nature of Scrum is formalized through a multi-week Sprint, usually lasting 2 or 4 weeks. The shorter, the better.
So, Scrum works best for feature-heavy development teams.
Kanban
A good way to appreciate Kanban is to think of a team that works mostly on bug fixes, support/maintenance tasks, or content creation (documentation, for example).
There is a steady stream of work, and we want to allow for changing priorities (customer escalation for a bug is an example).
Besides prioritization, we also want to ensure that no individual has too many tasks assigned to them. If they do, they become a bottleneck. This is expressed in Kanban as WIP (Work In Progress). Kanban boards have visual indicators to show that too many tasks are in a certain state or too many tasks are assigned to a person.
Such controls are established to ensure a smooth flow of tasks.
Scrumban?
What about teams that are somewhere between the two extremes of feature development and only bug fixes? Perhaps a little bit of both.
The hybrid approach of Scrumban leverages the flexibility of Scrum with the smooth flow of Kanban.
Extreme Programming (XP)
Another framework in Agile Methodology is available for teams that focus more on actual development processes. XP covers topics like Pair Programming, Test-Driven Development (TDD), and Continuous Integration.
In my experience, XP can be used alongside Scrum, and it doesn't have to be an either-or choice with Scrum.
Honorable mentions
There are other frameworks that I didn't cover here, such as Lean Software Development, Feature-Driven Development, and Scaled Agile Framework (SAFe). They have their place, and we will cover them in the future.
Conclusion
Most software development involves feature development and bug fixes. Feature development is complex work that's done in small increments and requires flexibility in plans. Bug fixes are tasks that must be done in any order as per changing priorities and avoiding bottlenecks. Scrum and Kanban serve these needs respectively.