Why You Should Do One Story Until It's Done
Writing software is at its core a production system. The goal is to produce a product with just the right quality, at just the right time, so that customers find it valuable. With that in mind, let’s look at the types of things that can stop us from producing on time or at the right quality. There are 7 types of waste in a production system. They are:
- Defects — product is low quality
- Over processing — product has excess quality
- Waiting — people are blocked
- Transportation — moving product in a way that doesn’t add value
- Inventory — product is stuck between phases
- Motion — moving people that doesn’t add value to the product
- Excess production — producing quantity than is valuable to customers
Blocked Stories Are Inventory
I want to focus in on one of these types of waste, inventory. Inventory waste is when a piece of work is sitting between production phases. Inventory is also referred to as Work in Process (WIP). In software development most teams have the concept of being blocked. The weird thing is, blocked tasks are still in process and therefor they are WIP. Having too much WIP can actually hurt your customers. This is why Lean manufacturing tries to limit WIP. When a task is blocked, we should look for a way to resolve it rather than powering forward.
As engineers we attempt to optimize our workflow by making sure tasks are always in flight, which prevents us from waiting. This hides that waiting is the real type of waste in our workflow. If we don’t fix bottlenecks that are causing waiting, our team will never be able to move more effectively. Also, most backlogs are organized by value, that means picking up the next task will more than likely be a less valuable feature. What’s more, users may actually get a less valuable feature before more valuable ones as it might have no blockers.
Make Room For Humanity
It takes patience and endurance not switch tasks. Figuring out how to eliminate waiting seems like it isn’t our job. As engineers we just want to code, however we are actually slowing ourselves, our team and our business down. Though some days we just don’t have the energy to work through organizational problems or we need a win, that’s part of being human and that is okay. In those moments, it is best to ask for help. There will be days we need help, and days when we are able to help others. Our goal as engineers should not be to ship code fast, but to continuously improve how we deliver value to customers.
TLDR;
Task switching when blocked is caused by waiting, which is a type of production waste. So don’t switch tasks, instead make the production process more efficient.
If you enjoyed this post, please follow me @soonernotfaster for updates on when new content is posted. Thank you for reading and happy coding!