Blind Emulation

Have you heard the term “cargo cult”? I learned it from a Richard Feynman essay:

In the South Seas there is a cargo cult of people. During the war they saw airplanes land with lots of good materials, and they want the same thing to happen now. So they’ve arranged to imitate things like runways, to put fires along the sides of the runways, to make a wooden hut for a man to sit in, with two wooden pieces on his head like headphones and bars of bamboo sticking out like antennas—he’s the controller—and they wait for the airplanes to land. They’re doing everything right. The form is perfect. It looks exactly the way it looked before. But it doesn’t work. No airplanes land. So I call these things cargo cult science, because they follow all the apparent precepts and forms of scientific investigation, but they’re missing something essential, because the planes don’t land.

When you get the what but not the why of your solution, you’re bound for failure.

Developers see this. In our naive early days, we copy and paste code into our project without reading it. Maybe it’s code from the internet. Maybe it’s from a different project in the company. We copy it without bothering to really understand what it does. Maybe it works for a while, but then we find a bug, or requirements change, and we’re hosed: Suddenly, we have to do the hard work of learning what this code even does before we can even consider how to change it. Yuck.

We get cargo culty with our code. We do it with patterns. We do it with tools (move to git but use it the same way we used Subversion). We do it with process (pretty much every Scrum implementation I’ve ever seen). This pattern exists at every level.

Copying a successful behavior without understanding it can work, but it’s almost never a good idea. If you don’t understand why it worked, you can’t be sure it’ll work in your situation. Your situation is almost certainly different.

Even if it does work for your situation, it can’t help but be a fragile solution: If your situation changes, even slightly, this behavior may become ineffective. You won’t understand why. You won’t be equipped to adjust it.

There’s no getting around the need for good, old-fashioned thinking.