In the realm of computing we are often plagued by the many aspects of optimization; both positive and negative. Often we can find ourselves spending lots of time not really getting anywhere as we “optimize”. We can also find ourselves in the situation of being wildly successful, only to find that what we have optimized for is not what we really wanted in the first place. I can’t help but feel these outcomes are suboptimal 😉. I came across a tweet that really hits the mark:
I would change the wording a little bit. The three options are: Do less, do it less often, do it more efficiently. I find myself optimizing around “efficiency” in my work, or at least perceived efficiency. Much of the work in the systems we build is targeted around our ideas of efficiency. Achieving a goal more effectively, yet the blinders come on quick and we lose site of whether the goal is really what we need. Keeping tabs on the greater picture is no easy task. One can fall easily to analysis paralysis, but I also feel that sentiment can be a cop out to really thinking things through, or shifting our perspectives. I believe there is equally an activity immobility trap we all fall into; the hustle and grind mentality. The illusion of moving the goal post; and seeing things only as they are not as they could be.
One of the great masters of optimization is Masanobu Fukuoka, author of The One Straw Revolution. He created his own method of farming based on the principle of doing less. While his neighbors toiled, and performed hard labor, Fukuoka focused on setting the conditions for success of a fertile landscape; with the goal of doing no to little work.
In the computing world, there is a lot to learn from Fukuoka. What conditions can we set for our programs for them to do the work for us? Is the labor intensive process of coding, that we cherish so, really that important to what we are trying to do?