7 Deadly Sins of Coding

Complete Developer Podcast - A podcast by BJ Burns and Will Gant - Thursdays

Categories:

The 7 deadly sins were a grouping and classification of vices within Christian teachings. Behaviors and habits were classified in here if they directly gave birth to other immoralities. The 7 deadly sins were considered to be the polar opposites of the 7 virtues and were thought to be abuses or excessive versions of one’s natural tendencies. For instance, gluttony is an excess of the desire to eat. In addition to the 7 deadly sins of modern times, there are two other historical deadly sins (Acedia and vainglory) that have analogs in software development that are interesting enough to cover. “These came about in a time where the average person couldn’t read.” This classification system originated with the desert fathers, especially Evagrius Ponticus. They were brought to Europe by John Cassian (who wrote The Institutes), where it became fundamental to Catholic confession practices. The same ideas were later featured in literature like The Parson’s Tale from Chaucer’s Canterbury Tales, and artworks like Dante’s Purgatory. There is a lot of interesting historical stuff if you really want to get into it. The real point of this is that the classification system has been well-known in Western civilization for some time and thus is useful for the purposes of analogy, whether you like the religious bits or not. In addition to the deadly sins, a virtue is defined that is the opposite of the problem behavior. These are things to strive for instead of the deadly sin. The same is true of the programming deadly sins that we’ll be discussing. Don’t get hung up on the modern meaning of the words. It’s instructive at times, but modern culture has bent some of them. While you may or may not be religious or of a sect that actually gets into this stuff, the 7 deadly sins are useful metaphors for dysfunctional software development behavior patterns that you probably see around you every day. These tendencies are not only instructive in noticing bad behavior from others, but more importantly, in noticing it in yourself. We all have these behavior patterns to one degree or another, and it is important to detect and stop them when they get out of hand. The goal of this discussion is to get you to notice them in yourself – noticing them in others is decidedly NOT the point. Episode Breakdown Seven Deadly Sins 11:35 Lust Defined as intense longing, usually thought of as unbridled desire. It doesn’t have to be physical, but can also be a lust for power, money, or even attention. This is more than just intense longing. It’s intense longing done in a way that damages other things. Like the others we discuss, it’s easy to get hung up on what the words mean, rather than what they point to. The opposite of this is chastity. While this has a modern definition, what we’re really going here is the lack of intense, destructive longing. This doesn’t mean apathy. Rather it means keeping things in their appropriate context (which is what the other term means as well). Manifestations of this in the developer community. Having an intense desire to do things a certain way, even when it is damaging. This can be anything from Resume-Driven-Development, to making a design pattern soup, just because you want to do things a certain way. This can also mean chasing the new technology, even before it’s stable, because it’s “cool”. Notice that the problem isn’t the desire to do things a certain way, but rather that one lets the desire become so overbearing that you cause damage with the inappropriate end result of that desire. Note also that in its proper context (aka, this project is a good one for whatever practices you are pushing), that it is not damaging. Rather it is in its appropriate context. The lesson: Don’t try to make things the way they aren...

Visit the podcast's native language site