We humans have a tendency to think about what’s right in front of us, and try to improve it, without as much awareness of the longer range or longer term effects, the consequences that are further in time and/or space. I’ve heard this tendency called local optimization bias.
Here’s an example that comes to mind: During the 1980’s I got sucked out of the Engineering Department into an IT department because they decided to take control of our VAXes, and I was the kid who knew VAX/VMS and Unix, how to load those big 9-track tape reels, etc. The IT department was actually called Information Services & Control (IS&C). In IS&C, one of my responsibilities was to prevent engineering teams from buying the tools they wanted to use because we could use economies of scale to buy slightly cheaper alternatives that were “almost as good,” or to force people to use our unweildy Univac mainframe. This is a reasonable argument that could be right in some cases.
My boss produced reports for his boss showing how much money we’d saved the company. Those people probably all retired thinking this was the right thing to do. But today I realize that some of what I did to save pennies was actually harmful in the big picture. Penny wise, pound foolish would be just one example of local optimization bias.
Another example of local optimization bias would be the way beginning Scrum Masters focus on trying to make a team more “productive” (or worse: “hyperproductive”) instead of helping the product development organization become better able to learn and adapt.
A variation is branching in our source code repository. Whenever someone says “Let’s create a feature branch!” or “Let’s use Gitflow!” you should hear “Let’s delay integration!”
Do you have some examples of local optimization? Please send them in!