WIN #017: Cargo Cult in Software Development: Understanding the Impacts and Downsides

[click to enlarge]
“Cargo cult” is a term used in software development to describe the phenomenon of developers adopting practices or processes without fully understanding the underlying reasoning or benefits. It usually leads to negative impacts such as a drop in SW quality, stifling creativity and innovation of developers, and broken team dynamics. In this newsletter, I will explore the meaning and origins of the cargo cult, its impacts on software development, and the downsides of blindly following established practices.

You might be acquainted with the term “Cargo Cult” as used in the phrase “Cargo Cult Agile,” which is used to describe the phenomenon where teams adopt Agile methodologies without fully understanding the principles and values of Agile. This can lead to similar negative impacts as cargo cult in general, moving through motion while expecting unrelated results to emerge.

The Meaning and Origins of Cargo Cult

Cargo cult refers to the phenomenon in software development where developers adopt practices or processes without fully understanding the reasoning behind them. The term originated from the practices of indigenous tribes in the South Pacific during and after World War II. These tribes would construct mock airfields and airplanes out of local materials in the hope of attracting the same kind of cargo airplanes that had delivered supplies to the Allies during the war.

In software development, cargo cult can manifest in various forms, such as blindly following design patterns, using certain tools or frameworks without understanding why, or copying and pasting code without fully comprehending its purpose or implications.

Some concrete examples are: everything is a microservice, trunk-based development with git-flow, phase-gate code reviews in Continuous Delivery pipelinesuncritically scaling dev teams, etc.

Impacts of Cargo Cult culture on Software Development

The adoption of practices or processes without understanding the reasoning behind them can lead to poor design decisions and suboptimal solutions. This often results in a poorly designed software system that is difficult to maintain or upgrade in the future, further leading to the piling up of technical debt.

Additionally, blindly following certain practices or processes can stifle creativity and innovation. Developers may become more focused on following the “rules” rather than solving the problem at hand in the most effective way possible. This further results in a lack of new ideas and a reduction in the quality of software solutions.

Furthermore, cargo cult in software development can also negatively impact team dynamics. Teams that blindly follow certain practices or processes without understanding why they do that, can experience communication breakdowns and a lack of trust. It leads to decreased collaboration and a lack of shared ownership of the codebase, causing friction and often even hindering the success of a project.

Downsides of Cargo Cult in Software Development

The downsides of cargo cult in software development can be significant and far-reaching. In addition to the negative impacts on the quality of software, creativity and innovation of developers, and team dynamics, cargo cult can also result in a lack of innovation and progress in the software development industry overall. This is so perilous that it is often demonstrated that developers blindly following established practices or processes prevents new ideas and advancements from emerging.

In the end …

To avoid the negative impacts of cargo cult in software development, it is important to continually educate oneself and understand the reasoning behind the adopted practices and processes. By critically evaluating and questioning established norms, developers can find the most effective solutions to the problems at hand instead of blindly following certain practices or processes.

 

Build highly effective software development teams

Subscribe to the weekly ideas newsletter and get tips and insights to help you with building highly effective software development teams. You’ll get tips on how to do so every week.