“Problems are not a never-ending plague to be endured but a never-ending guide to improvement” – Steven Spear
Twice as good, Half the effort
In the 1990s Toyota was famous for having twice the capacity with half the workers, half the inventory, and half the resources when compared to the big three US Auto Manufactures. The subject of many case studies, Toyota’s production system was abbreviated TPS, and came to be known by that name.
How did TPS achieve such incredible results? Especially for a company which started out with horrible cars in the 1950s (on hills the cars worked better in reverse). Many of case studies credit TPS for creating a company and a culture that continued to evolve and grow. Toyota saw problems as opportunities, fixed those problems, learned from their mistakes, sharing knowledge throughout the organization.
Where you start isn’t import. How fast you improve compared to the competition is very important.
One of the basic and fundamental keys to learning and continuous improvement is being specific. Consider the following:
Imagine you are an engineer, and you build a new web service. The business requires a service which will handle 3000 RPS at a reasonable cost. 10 virtual machines (VM) would be a reasonable cost so you target 300 RPS per VM for your service.
- If testing shows 200 RPS per VM that would be bad, something unplanned happed and fixes are required
- If testing shows 400 RPS per VM something unplanned happened.
At 400 RPS represents additional throughput. Additional throughput over and above the designed capacity would be a surprising outcome. The “extra” RPS had to come from somewhere. Anything surprising is a problem. Each of the following is a learning opportunity.
- Perhaps there was a mistake in the testing
- Perhaps we didn’t understand our own design and there is a bug
- Perhaps we didn’t understand our own design and there is an new efficiency to be shared
Being specific provides the opportunity to be surprised. These surprised create teachable moments. For software we own and design we should have specific high and low tolerances. In addition, we need to have an understanding of what happens when those tolerances are crossed. We need to use the scientific method to create a hypothesis and test it during failures of excess and failures of sufficiency.
Following those guidelines will give us a better understanding of the systems we build and manage. A better understanding will allow us to move at an increasingly faster cadence, manage increasing levels of risk, and execute with progressing higher quality.
Take a look at your software and your processes. Do you have learning processes in place. Are you specific about how your software should behave?