In my previous job, my team automated software processes. One of our processes kept breaking down and consumed a large chunk of our time. We tried rewriting the code, increasing response time and adding more checks, but to no avail. Every couple of days, the process would break down and deprive our heads of a few clumps of hair.
We finally figured out that the process was running on an old computer with poor hardware. This rendered any software that ran on the machine unstable. The moment we shifted the process to another computer, our problems vanished. The bottleneck in the process wasn’t the software code that we tried so hard to fix, but the underlying infrastructure.
To optimize a process, it is obvious that the effort must be directed at its bottleneck. The less obvious corollary is that any amount of improvement to a process outside its bottleneck is wasted effort.