Matt recently wrote a piece on how he predicts flow using yesterdays weather. This is a way to figure out how much work you will do tomorrow based on how much work you got done yesterday. Today I’d like to talk about how you might get a more accurate look at the weather using inventory control techniques.
Different kinds of efficiency
There are a couple ways you can think about optimizing things. You can optimize for resource usage. For a team of programmers, this means everybody on the team is always 100% busy all day every day. For an auto manufacturer, this might mean that every machine is producing 100% of the time all day every day. To have resource optimization, you have to have a large queue of work and resources available ready to keep your people and resources busy.
Another way you can optimize a business is for flow. This means that rather than having all of your resources completely busy, you are orienting your business to produce a complete product as quickly as possible by having people and whatever needed resources immediately available. Optimizing for flow reduces the need for large inventory, inventory management, and many other secondary needs created by the backlog of work.
A couple examples
At a recent gig, the build process to get code from a developers branch into a testable environment was so difficult and time consuming that the person doing the builds was only willing to do this once daily during the second week of a two week sprint. This means the programming staff was basically 100 percent utilized at all times. During the first week, they had a backlog of feature work, and during the second week they had a growing backlog of bugs to work through.
Once the build / release management guy moved on, developers had real incentive to make the process easier. By scripting away a lot of the time consuming stuff and doing some things a little more consistently, they were able to reduce the time to deploy a build to about 10 minutes once a person was comfortable with the process.
This easier way to deploy meant that more people were willing to do it, and it would get done much earlier and more often during a release cycle. So, more work being completed earlier, drastically reduce backlog of bugs, less time spent in triage, and on and on.
This one change resulted in work moving from a programmers brain to a production environment much easier.
Another way we have reduced inventory (aka WIP) is by pairing. You are actively working on less stuff than when each person in a group gets their own task. Pairing isn’t really new, but a lot of companies seem to view the practice as overhead because it requires two people working on the same thing. There is a perceived lack of throughput. Pairing can reduce inventory because work (stories) can potentially get done faster and with higher quality than they would if an individual were working alone.
A non-tech example
One more example, this time from outside the software world. Over the weekend, my wife and I went Atlanta. While there, we went to a newer Nike store to get some running shoes. This store was optimized perfectly for flow. When you walk in the store, there are a lot of employees milling about. Some are looking athletic in their Nike gear convincing me that I, too, can hit 3 pointers with the right shoes. Others have mobile devices ready to help customers.
We walked up to a few pairs of shows my wife liked and immediately someone came over with their mobile device, checked the inventory to see if the right size and color was in stock, got the shoes, helped fit them, and then checked us out. This was the fastest, most painless shoe buying experience I have ever been through. In my opinion, this is a far better version of what Apple tries to do in its retail store.
For Nike, the flow unit is the customer. Everything in the store is optimized for getting the customer what they want and on their way quickly.
Forecasting the weather
Optimizing for flow helps to reduce the amount of work you are doing that isn’t specifically to add value to your customer. Those things are sometimes called secondary needs. Having a little more accurate view of yesterdays weather might help you forecast what tomorrows weather will be.