Basically, Cargo Culting is a way to reproduce outer aspect, in order to gain some properties. It became famous just after WWII when primitive tribes from the Pacific began building makeshift radios and airports, as a way to attract planes full of cargo – hence the name. In software, this is unfortunately more widespread than expected in regard to our scientific and rational background.
Take Data Transfer Object also known as Transfer Object, for example. This pattern was originally proposed as a way to transfer business data despite limitations of Entity EJBs. Strangely, despite Entity Beans never having been extensively used in the past(to says the least), and being used even less (read – not at all) currently, DTOs are like a Pavlovian reaction to many a software developer when setting up a new Java Web project.
Cargo Culting is bad, but is just applying a technique with no understanding of the context. It can be mitigated and even removed completely if Cultists are willing to listen to reason and improve their skills. Memes up the ante to another whole new level as they are based on faith – and how can you convince a faithful to renounce his faith? An example of interaction between a Software Engineer driven by logic and one following a Meme would go like this:
- Good code is self-documented, it doesn’t require comments!
- But obviously, this snippet require comments…
- Then it’s bad code!!!
There’s no way to convince one party or the other that there’s might be a kernel of truth in the opposite party point of view.
If at this point, you want to know more, you know what to do: meet me at JavaLand for the whole talk!