Cargo Culting
January 15, 2014 -A cargo cult is any of various native religious cults of a millenarian and messianic character located in the southwestern Pacific islands, holding that spirits will bring large cargoes of modern goods for distribution among its adherents. [1]
After the arrival of the computer and the practice software development, this term was used a slang to refer to a style of programming that is characterized by the ritual inclusion of code or program structures that serve no real purpose. [2].
In a modern world of lies and skepticism, we developers have learned to question new ideas, especially when a new idea results in more work. We question ever new idea: TDD, BDD, DDD (basically, any three-letter acronym), patents, new languages, new operation systems, you name it.
Many times, the person sharing this idea is not able to articulate the necessary information you need to decide that their idea is valid. However, just because someone is bad at explaining an idea does not mean they are simply cargo culting it without thought. Before dismissing a new idea as some cargo cult nonsense, perhaps you should stop to consider if there really is some value in there.
Like my new hero Sandi Metz, I’ll use a bike-based example.
I ride a fixed gear bike everywhere I go. A fixed gear bike has only one speed (unless I take the bike apart to change it) and the pedals are fixed to the drive train. If the bike is rolling, then the pedals will be moving. No coasting. This is how all bikes worked before the invention if the freewheel and derailure (the part that enables gear-shifting while you roll).
In recent years, this type if bike has become popular with kids on the street. Some might label these kids as hipsters. Many of these kids make poor examples of a fixed gear rider as they struggle to ride a bike that doesn’t allow coasting. To an outside observer, one might think they keep these bikes as a fashion trend.
I have never thought if myself as a hipster. I’m just a guy trying to make his mom proud and feel welcome in his surroundings. For some reason, people are quick to call me a hipster and define my world and who I am by assuming I ride a certain bike thanks to cargo culting. I chose to ride a fixed gear bike for utilitarian reasons. They just maybe have never heard or don’t count those reasons as valid.
Someone who spent time considering the choice would find that there are several utilitarian advantages it such a bike.
- No gear changing means no maintaining the gear-changing mechanism.
- No coasting means better control over you speed, especially in wet weather conditions that would negatively affect most brakes.
- Less parts means I can service most if my bike without help.
When I first considered trying a fixed gear bike, I thought about the flack I might catch and the hipster labeling I might receive. Fortunately, I did not allow these opinions to keep me from trying something I now enjoy very much. I thought for myself, did my research and then made a choice.
The same should be said for popular programming practices as well. TDD, functional programming, whatever new language or framework pops up, and anything else you’ve heard of should be properly researched before you dismiss it or embrace it. How can you make an informed decision without first being informed?
By proper research, I definitely don’t mean just asking your friends about it or reading some blog post that rants about how awful it is. You can find someone who thinks almost any idea in programming is an awful one, often because of some bad experience they had once. Don’t take their word for it, find out real information so you can make real decisions.