As many of you regular readers may know, we're an agile development shop. We have been running a process known as SCRUM for quite some time now. We've had a lot of success with it, and we've learned a lot along the way. That's how these agile processes work; continue to inspect and adapt and evaluate and adjust. If something isn't working, put some time and energy into thinking about why it isn't working and figure out a way to improve it as a team. As we've grown and scaled to more small SCRUM teams, we've realized that we could be gaining even more efficiencies because the start and stop points of an iteration tend to slow a team down.
Enter Kanban. Kanban is similar to SCRUM in many ways, but one of the fundamental differences is there is no concept of an iteration. The process allows for and supports a model of continuous flow. If I had to come up with an analogy, it would be that of mail pickup from a train. The time wasted when a train has to stop, pick up the mail, and start again is tremendous when you are trying to maintain a schedule; instead let the train keep momentum and put the mail out to be picked up as it rolls by. Similarly, a software development team that is comfortable enough with ad-hoc and as-needed meetings can gain efficiencies by not stopping to "pick up the mail". The backlog can be replenished as needed by a very involved product owner. The team can continue to retrospect and adapt and communicate without slowing down the momentum they are making on a feature release.
We began by trying Kanban with a single team that was very operational in nature. This worked well because it allowed the team to deal with those operational issues that came up while still keeping momentum on everything else. They didn't have to worry about the operational issues killing their iteration commitments, which can be a morale hit, even though the business understood the impact that operational work had on the team in a SCRUM process. It was more of a mental victory than anything else.
We've since scaled the Kanban process to a number of feature teams and we plan on rolling it out across all of engineering. The feedback from the teams has been great, and the product owners have been supportive and understanding of the change in how a team's velocity is tracked (cycle time vs. story point velocity). As a part of this process, we also moved from component teams to feature teams, which has been a huge benefit in keeping teams focused on a single project before moving on to the next project. Have you experimented with Kanban? Are you suffering from some of the same problems in your SCRUM process? I'd love to hear thoughts that you may have on this topic!
Jason Collins (aka JC) is the VP of Engineering at ReadyTalk and the self-appointed Chief Happiness Officer. He’s been either writing code or managing engineers for nearly 15 years and has a passion for technology and agile development practices. The happiness of the engineering team is his top priority and he can usually be found wearing a ReadyTalk cape and the infamous “idea helmet” around the office to help keep people motivated and entertained. When he’s not hanging out with his work family, he’s at home with his wife and four boys doing all sorts of geeky things, like playing video games and watching campy Sci-Fi and Action flicks.