One common challenge that we all face is how to sequence work when there are both big and small increments. Weighted Shortest Job First (WSJF) would encourages us to deliver smaller increments sooner. But that competes with the “minimize work in process” idea that if a big increment is started, we should try to finish it before starting something else. How do you handle this situation?
Steven Covey demonstrated this challenge during one of his time management seminars.
He held up a big, open-mouthed jar. On the table were lots of rocks. He started picking up the rocks and carefully placed them in the jar until no more would fit. He then asked the attendees, “Who thinks the jar is full?”
Most people raised their hands. He then reached under the table and pulled out a box of smaller rocks. He started placing these rocks into the jar until no more of them would fit. Again he asked the attendees, “Who thinks the jar is full?”
Only a few people raised their hands this time. He then reached under the table again and pulled out a bag containing sand and poured the sand into the jar until no more would fit. Then he asked the attendees, “Who thinks the jar is full, now?”
No one raised their hands, obviously thinking another trick lay in store. He then reached under the table and pulled out a pitcher of water and filled the jar with water until it could take no more. He then asked, “Can anyone tell me the lesson of this?”
One attendee responded, “No matter how much you’re doing you can always do more?” Covey chuckled and said, “No. It’s that you must put the big things in your life first. The smaller things will find a way in on their own. But if you don’t put in the big things first, they won’t fit in later.”
This story provides a useful insight for development. While WSJF accounts for the cost-of-delay of a big increment, it does not account for the overall impact of delays for both big and small increments.
You might think that big increments should never be interrupted, but that is not practical in the real world. A good approach is to try to decompose big increments into smaller, validatable chunks. Then, you can interrupt them in an intelligent manner as needed by the smaller chunks. For example, when someone working on a large project has some time available, they can look to see if there is something small that they can start and finish in the time available. Or the product owner can sequence something small between the larger increments.
While you would like to avoid interruptions, this gives you a way that helps to minimize the cost of interruptions.
For more information, see Dynamic Feature Teams.