Have you ever felt bogged down by the weight of process? I’m experimenting with increasing efficiency and reducing workload on my team at Ticketmaster by applying lessons from Gene Kim’s book on devops – “The Phoenix Project”. By learning and implementing what the book calls, “The Three Ways”, we hope to drastically increase our productivity and quality of code, all while reducing our workload.
The First Way is defined as “understanding how to create fast flow of work as it moves from one work center to another.”1 A ‘work center’ can be either a team or an individual who has a hand in working as a part of a larger process. A major part of creating fast flow of work relies on improving the process of hand-offs between different teams. By working on improving visibility of the flow of work, one is able to both get a better understanding of the current workflow and identify which work centers act as bottlenecks.
The Second Way, “shortening and amplifying feedback loops, so we can fix quality at the source and avoid work”2 is about being able to understand and respond to the needs of internal and external customers. In order to shorten feedback loops, one should find ways to reduce the number of work centers or the number of steps it takes to complete a task (including but not limited to combining teams, removing steps altogether, or automating certain processes). The other part of the Second Way requires reducing work at the bottlenecks or otherwise finding ways to remove work from the system, so that the feedback for the work left in the system can be emphasized.
The Third Way is to “create a culture that simultaneously fosters experimentation, learning from failure, and understanding that repetition and practice are the prerequisites to mastery”3. Major components of the Third Way include allocating time for the improvement of daily work, introducing faults into the system to increase resilience, and creating rituals, such as code katas or fire drills, that can expose people to new ways of doing things, or help them master the current system.
In our workplace, we are working on applying the the Three Ways to improve our daily lives. Currently, we have several teams from different geographical locations working on the same codebase. Initially, this led to many dependency conflicts, lots of tasks being blocked by other teams, and there were many issues regarding communication.
We recently started using a kanban board in order to give us better visibility into our workflow, and have added a column on the board for every hand-off between teams. The focus is now on finding ways to reduce the wait time between columns. We have put together checklists in order to aid with communication and improve quality, so that wait times might be reduced. Simultaneously, we are working on ways to remove our reliance on other teams for things such as code review. There are still problems regarding story blockers, but it is hoped that these problems can be solved in the long run by either re-structuring the team’s responsibilities to match the system’s design, or vice versa.
Figure 1. Our team’s kanban board
Applying the Three Ways is still a work in progress, but we are already seeing benefits. Whereas before our product people were creating tasks faster than us developers could work on them, now they are scrambling to keep up with us. Although we still have to deal with stories from other teams acting as blockers, the flow of communication has greatly improved, and the decrease in wait time has been noticeable. Any time gained by our team is being used for “10% time”, which is time dedicated to either research or tasks that will help our team improve daily work and overall efficiency.