It’s amazing. Talking to a bunch of fellow CTOs I heard a lot of them saying: “We introduced Scrum and it works really well” and “we’re too slow to bring new features to our customers”. This piqued my curiosity. Scrum is supposed to speed up feature delivery through short iterations. How can an organization claim to run Scrum successfully but not deliver customer value fast?
The Curse Of Sub-Optimization
For me, that sounds like a typical case of sub-optimization. You optimize only one part of a value stream but not others. While that one part (e.g. development) is getting faster and faster other parts of the system are not able to keep up the new pace. The development team will either run low on User Stories or it will swamp QA or Operations with features to be released. In the worst case, you end up slowing down the whole feature creation process instead of speeding it up.
The Pipeline And The Bottleneck
I like picturing the software development process as a pipeline. From the initial idea to production release a feature needs to flow through the organization. You can picture the capacity of each step in that flow as the width of a pipeline. The higher the capacity of one part of the organization the wider the pipe. The bottleneck of the pipeline is the part of the organization with the lowest capacity to deliver features. You can easily identify it by visualizing your process e.g. on a Kanban board and looking where the most Kanban cards get stuck. If you optimize an area in your process, which is not the bottleneck, you’ll end up with sub-optimization. Only optimizing the bottleneck will really speed up overall delivery.
Scrum Moves The Bottleneck
If development used to be your first bottleneck and you introduce Scrum successfully you’ll see some speedup in delivery. But it might be way less than expected. Other parts, like QA or Product Management, may have a capacity which is only slightly higher than that of development. If you keep optimizing development, you won’t achieve any more speedup. Instead, you need to focus on the next bottleneck and optimize it. Only by constantly looking for the current bottleneck and optimizing it can you constantly speed up your delivery.