🤠 The Cowboy and the Stream
Once upon a time, a cowboy wants to move some cattle across his property.
There is a small stream of water in the way (1). Rather than have the cows wade it, the cowboy sets a plank of wood across the water (2). Cows go safely, everyone is happy. The plank is a bit wobbly, and perhaps it will not last very long, but for being an old plank of wood that was lying around it is definitely doing a good job.
📏 The Over-engineered Bridge
The cowboy now finds a wider stream of water in their way.
He thinks to himself: “This is easy, I will just build a longer plank of wood” (1). But when his cows try to cross it, the plank breaks near the middle due to the weight and the cattle drown (2).
Desperate he asks his friend the engineer for a solution. She comes up with a very simple yet clever arch bridge design (3): just one piece of concrete that can be poured elsewhere and set in place. When the cowboy hears the price, though, he thinks to himself: “I can do this! A thicker plank will do.” So with a lot of effort he builds a bigger, wider plank of wood (4). The cows take some effort to walk onto it, but it works!
🤌 First Moral
Was the arch bridge (3) over-engineered? It depends; the huge plank will probably do the job for some time, but it will not last long and will definitely not resist a flooding. Perhaps after having to rebuild it three or four times, the cowboy will go with the engineer’s design after all. For a little bit more perspective, ask yourself: the Romans built many bridges, including this one in Salamanca with 15 arches which is still standing 2000 years later. The builders could have done a much simpler job to last only for a couple of centuries. Were they over-engineering, or just awesome-engineering?
🏗️ The Clumsy Bridge
But this was not all! The big challenge is here: the cowboy realizes that if he could cross the river at its widest point, almost 20 m across, he would save 2 km on his way home!
Having learned his lesson he builds a thick plank like before (1), but this time it is not enough: it breaks and again his cattle drown (2).
He does not want to bother his friend the engineer, plus he fears the price tag. So he makes plans to build a really thick plank of wood (3). He does not really know the amount of wood needed, so to be sure he goes for a one-meter tall “plank”. He cannot find any tree trunks this long, so a more complex structure with many layers is required. This takes forever and he is not really happy with the result. Also the bridge is now almost as tall than a cow, so the cattle need a couple of ramps at the ends to be able to climb on it. Meanwhile costs skyrocket due to the insane amounts of wood and labor required.
The engineer comes by and suggests a simple cable-stayed bridge (4), which would not be a huge investment compared to all the materials already used: poured concrete and steel cables. The cowboy, having invested so much effort and time, tells her that he will go on with his project.
After a couple of months he comes again to the engineer, utterly defeated while simulating casualness, and asks for the engineer’s help. The new project is completed in three weeks, under budget since she is very cost-conscious, and it is not really a very challenging construction.
🤌 Second Moral
This contrived example tries to illustrate the reality of evolving software: the techniques that were once appropriate may become a real drag as the system grows.
At what point should we stop using wooden planks and start using concrete bridges? It is hard to foresee the future, but easy to judge in retrospect. The correct answer will depend on a lot of factors: expected load, planned durability, available budget, and many more. Usually it comes down to a judgement call.
All tools, just like physical laws, have their range of application. The good engineer needs to know and dominate a wide range of techniques, and be able to switch between them depending on the needs of the project. Good engineers will refine their criteria over time, while cowboys will always be cowboys.
Thanks to my former colleagues at Skeepers, in particular to Jonathan Zimpfer and Alfredo López, for listening to evolving versions of this same story, and improving it with their input. Also to my friend Juan Sebastián Gaitán for many interesting hours of discussion around it. Any errors and poor explanations are my own.