I’ve been working at MuleSoft on the Sustaining Engineering team for a few months. In this time I watched how things work and find out what type of challenges we deal everyday have and how we solved them. I watched a great team working long hours to solve customers problems as fast as possible. Our primary goal is to enable our customers to meet their deadlines, and remove any problem they might have with MuleSoft’s products in the process.
Context on the type of work
The sustaining engineering team works on solving problems for our customers, improving the code, implementing new features and reviewing how things behave to answer questions. Usually questions come from our customers, and sometimes we get high priority issues with high visibility. Critical issues may appear without any planning and they need to be solved as soon as possible. This type of events cause disruption in the team’s work. If any disruption propagates over time, it causes bigger or permanent problems. There is a mixture of high priority things popping up, with planned features or improvements.
Problems and challenges
This is the list of problems I’ve seen during this time.
- Uncontrolled growth of Work in Progress. This causes multiple problems, in particular reduces focus of the team, quality and speed.
- No enough visibility of team workload, status and progress to support or other interested teams. This doesn’t help to properly set customer expectations regarding times for resolutions.
- Reduced quality. In particular non-critical parts of the process are delayed to favor new high priority issues. The best is to merge and document things as soon as they are solved.
- Inability to properly estimate all tasks upfront. The tasks usually are really hard to properly estimate upfront, and sometimes the cost of estimating them is high compared to what it takes to resolve it after it was reviewed.
- Planned features and improvements are hard to manage and prioritize. We start working on a feature, then it’s left in the middle to finish other critical items. That makes them taking longer than expected and harder to manage.
Looking better into the problems, I can see that most of our them are actually an effect of uncontrolled WIP growth. The effort we need to do to maintain and manage WIP, is wasted, not producing value to MuleSoft or our customers.
In a few words, Kanban is a pull system with a visual way of organizing work. You define the steps issues or requests have to go through, and move them from left to right as you work on them. You set limits to the amount of issues at the different steps, allowing only a reduced amount of tasks be in that stage at a certain time. This way Kanban maintains WIP under control, allowing a more predictable throughput.
A typical Kanban board looks like this:
Kanban in a sense forces you to go as slow as the slowest stage your tasks have to go through. You will be focusing on the flow of the tasks and working on removing bottlenecks and improving the stages that slow down the whole process. As soon as you remove a bottleneck, another will appear, in this way, you can achieve constant improvement. Removing problems, waste and increasing throughput are team tasks.
How will Kanban help us?
The first thing Kanban will do as soon as we implement it, will be to control WIP. It will no longer allow us to leave lots of TO-DOs for later on, like merging, or verifying. We will only have a controlled amount of tasks we are working on at a particular time. Less WIP will allow us to focus on finishing current tasks and take them through the whole process as fast as possible. This also increases quality of the tasks, reduces waste, reduces the amount of work we need to do to complete tasks. We will be able to achieve all this benefits without losing the flexibility to tackle any high priority problem.
It will also allow us to see which are the steps in our development process that are slowing down the flow of tasks. In this way we will be able to reduce the time it takes us from starting a task and take it to the done column. We will clearly see which step in the process is currently slowing down the flow, and focus on improving it.
Using the Kanban board, we will be able to clearly show the current workload of the team. Using lead time, we will also be able to provide a quickly estimation on how long a task will take as soon as it goes into the selected queue.
All in all, Kanban simplicity will provide us a way to work on all the problems and challenges we have and allow us to constantly improve the process.
If you want to learn more about Kanban, stay tuned for more details. I will blog on how we are implementing it, what challenges we have and how we overcome them. Also here are some links that will explain the concepts. The best is to get David Anderson’s book. Some other simplified concepts at Kanban Development Oversimplified. Central place for Kanban at http://www.limitedwipsociety.org/. More details on why speed in software developement is really important at Speed, it’s all about speed!.
We are hiring too, if you want to build great things in a great way, go to http://www.mulesoft.com/careers