When you look at system with the goal of trying to improve the speed and output, the first thing you need to do is try to look for what the biggest ‘bottlenecks’ are. Think of the problem abstractly in terms of components of the process. Let’s say they are A, B and C. If we look at the break down of time spent on these things maybe it breaks down as:
A takes 5 minutes (5%)
B takes 1 minute (1%)
C takes 94 minutes (94%)
Total time is 100 minutes.
As a manager or a software developer if we focus our efforts on making A or B twice as fast we won’t see a measurable improvement - increasing the speed of B by a factor of ten times only will barely produce a 1% increase in speed.
But if we focus our efforts on making C change from 94 to 47 minutes then the figures will change to this:
A takes 5 minutes (9%)
B takes 1 minute (2%)
C takes 47 minutes (89%)
Total time is 53 minutes.
If we further optimize C to take it down to 5 minutes then the figures stack up like this:
A takes 5 minutes (45%)
B takes 1 minute (9%)
C takes 5 minutes (45%)
Total time is 11 minutes.
What is interesting about this process is that as you solve one bottleneck then usually another bottleneck emerges as significant. At this point optimizing A would now offer some opportunities to make measurable improvements in the process.