The engineering team at Change.org has been developing software with an Agile process since its inception, and that has taken us very far. However, as our team size has increased, we have run into a number of challenges scaling traditional Agile techniques. To address these challenges, we implemented a number of process improvements during the first quarter of this year, based on Lean approaches to product development. This post outlines the major process and tool changes we have experimented with, what we have observed as outcomes thus far, and a few of the improvements we plan to adopt in the second quarter.
Strengths and Weaknesses of “Traditional” Agile
The product development process we used through 2011 was basically a hybrid of Scrum and XP, and it has several key strengths. We have had daily stand-ups and weekly retrospective meetings since the team was first formed. Our engineers are fiercely committed to XP technical practices, including full-time pair programming, test-driven development, and continuous integration. We generally deploy features as soon as they are completed.However, despite consistent and disciplined use of these Agile techniques, we began experiencing a range of challenges as the team size has increased. For example, a growing portion of the team’s time was being spent on post-deployment changes or fixes, rather than new feature development. Velocity gradually decreased as a result, and it appeared to take more effort to ship meaningful user-facing features than it had just a few months before with a smaller team. Work committed to at the beginning of a sprint would regularly overflow into the next sprint.
We set a very high bar early on for hiring technical talent, and as a result the engineers at Change.org have an extremely high level of technical competence. So we were pretty confident these were not problems with our technical expertise. The features that were completed by the engineers were solid, well-architected, and very well tested. The source of our problems appeared to be mostly process-related. We decided to enhance our Agile processes with a healthy dose of Lean Thinking.
Small, Cross-functional Teams Focused on Business Goals
The first major process change divided our (at the time) 12-person team of engineers into small groups of four to six. Each team was asked to focus on a specific business goal or KPI (such as virality, new users, or revenue) and the stories assigned to each team are related to that over-arching theme. These team goals are directly linked to our core, long-term business strategy. Each team even has a its own set of metrics that it uses to gauge its effectiveness over time as it ships features related to its goal.Also, where we had previously planned our work on a weekly sprint basis, allowing for rather abrupt changes in business priority from one week to the next, we now focus the team’s attention on specific long-running business objectives for a whole quarter. We still have our daily stand-ups and weekly retrospectives, but the notion of a “sprint” is starting to fade away.
The use of small, cross-functional teams is of course prominent within the Scrum community. But, the relentless focus on business-related KPIs is, in our reading of the literature, is more prominent in Lean thinking.
Constraining Work In Progress (WIP)
A second major change we implemented was to limit the work in progress (WIP). Since our tool was not able to handle WIP constraints, we migrated from Pivotal Tracker to AgileZen. Pivotal Tracker enforces a rather rigid workflow with fixed states, based presumably on Pivotal Labs’ own internal development process. Our process is different from theirs, and we found it hard to get their tool to conform to our way of working.Transitioning from Scrum to a more nuanced Lean / Kanban process required us to use a tool that supported, at a minimum, these three features:
- Configure work “states” according to your unique workflow.
- Constrain the work-in-process (WIP) allowed for any state in our workflow.
- Capture and report Lean metrics such as cycle time, lead time, and throughput, rather than just Scrum-style velocity.
After reviewing nearly 20 Kanban-based tools, we settled on AgileZen. It’s not perfect, but it was definitely the most simple, and it has all three of the above requirements.
Classes of Service and Explicit Policies
Another major change was to completely abandon the notion of a distinction between features and bugs, with one arbitrarily considered “bad” and other “good”. All of these items are simply requests to change the software in one way or another. They all provide some amount of value for the business or the end user (or ideally, both) that can be quantified, and they all come with some level of business and technical risk and a cost of development and maintenance.Instead of characterizing work arbitrarily as bugs, features, or chores, we introduced four or five specific classes of work. We use color coding in Agile Zen to reflect each class. Since we use a Kanban pull-system for selecting work, these classes of service allow work items to traverse our workflow in order of business value and impact.
Standard: Most items are standard, and are completed in a normal FIFO order.
Fixed Date: Items that have a fixed delivery date are prioritized over standard items.
Expedite: Extremely urgent items are allowed to skip ahead of Standard and Fixed Date items.
Intangible: Mostly “technical debt”, these items are sprinkled throughout the backlog evenly.
Results Promising So Far
As we reach the end of the first quarter of 2012, we already seeing positive results in several areas:- Focused feature teams: The engineers are feeling more engaged in the overall business goals of the organization, and are able to see direct impacts on our KPIs for each of the features they complete.
- WIP limits: The throughput of the product team has increased substantially, as engineers are focused on fewer items at the same time.
- Classes of Service: External stakeholders get faster response times to their urgent requests without the engineering teams feeling like they are constantly interrupted.