Here’s a little test: calculate the sum of all the integers from one to 100. This is not, by any stretch of the imagination, a difficult arithmetical problem. Any child in junior school could, after some very careful work, arrive at the answer of 5,050. All they need do is add their way through the 100 numbers, one at a time until they arrive at the final sum.
If you arrived at 5,050 in this manner, then you successfully solved the arithmetical problem. Even if you only said to yourself, “I could solve this by adding the numbers one by one” and then decided not to bother because you knew you could do this and that was sufficient, then I’m willing to allow that you “solved” the problem.
Yet in the real world, problems — even simple problems — always arrive with strings attached. With respect to the above problem, here’s the unstated “string”:
Calculate the sum of all the integers from one to 100 in the most efficient manner possible.
With that condition added, most of us attempting this problem fail, even when we do arrive at 5,050 as an answer. Efficiency always, in things both great and small, matters.
Rather than adding up all the numbers, we can, if we take the time to think about the problem, notice that 100+1=101, and 99+2=101, and 98+3=101 etc. etc. until we get down to 1+100=101. If we then multiply 101 by 100 (the number of integers in the sequence one to 100) and then divide the answer of 10,100 by two (because we added two sequences of one to 100 together to get 10,100) we arrive at 5,050 almost immediately.
The more efficient method has the added benefit that it is “scalable.” If we used the number-by-number method to sum the numbers from one to 10,000,000, then we’d be passing the problem down to our grandchildren. The efficient method requires only that we finish this calculation (10,000,001 x 10,000,000)/2.
The tendency to seize the first solution we think of, even for the most inconsequential of problems, is a dangerous one. The first answer is seldom the best one, but for misguided notions of what efficiency is really all about, we want to solve as many problems as possible in the least amount of time. Our focus is on the short-term cost of finding a solution, rather than on the long-term objective of efficient implementations.
The reasons for grasping onto first solutions are fairly obvious. There is tremendous pressure to solve problems immediately. Taking time to think deeply about the problem is perceived as a waste of valuable time. When “caught” thinking we’re told to “look busy.” Open cubicles planted in orderly rows don’t encourage quiet contemplation. Even ill-advised buzz words enter our thought process: “Internet time” and “rapid deployment” come to mind as current obstacles to carefully considered actions.
It’s not that we’re not aware of this problem; we have clich