The Seven Deadly Sins Of Software Development

According to the Catechism of the Catholic Church, a deadly sin is believed to destroy the life of grace and charity within a person. My honest opinion is that this can be directly transferable to Software Development. This article will try to convince you of the same.


>Pride is excessive belief in one's own abilities that interferes with the individual's recognition of the grace of God. It has been called the sin from which all others arise. Pride is also known as Vanity

This sin is often discovered in Software Development, when developers and architects introduce custom code where better alternatives exists. Do not create your own inventions where there is solutions already present. Focus on making innovations where they make the most value: Creating unique business value

It was Pride that changed angels into devils; it is humility that makes men as angels. - St. Augustine

I strongly believe that if developers combine reuse of existing functionality made by others, like frameworks and libraries, with making magic business value by inventions, they will be considered angels among the users and management. Put your energy into the most valuable development. It is not a shame to rely on other developers work, it is a sign of craftsmanship.


>Envy is the desire for others' traits, status, abilities, or situation

To me this relates to situations where developers find other solutions more attractive than their own and try to copy them, without having an understanding of how this solution really relate to their business problem. This is a known problem in this industry, since patterns solving problems for one specific use case gains momentum and suddenly everyone else use the same solution in attempt to solve another use case. If your business is an internet banking solution it is likely that you have other needs than a business running an online streaming solution for music or movies. Then it is also likely that you need other patterns to solve your needs as well.

Do not overrate what you have received, nor envy others. He who envies others does not achieve peace. - Buddha

As a system developer or architect it is important to think as an athlete; what is good enough to win an Olympic medal today, will probably not be good enough for repeating it in four years. With this mindset you will always strive for new ways of doing things and look for new and innovative ways of adding business value


>Gluttony is an inordinate desire to consume more than that which one requires

In software development this can be compared to using new technology, framework or libraries just because of its reputation, without having a real need for it. Software developers and architects is always curious of new technologies, and that is good, but often this leads us into choosing a tool before the problem to be solved is identified. When you are holding a hammer, everything seems to look like a nail.

My recommendation: Use new technologies, but choose technology solving your problem, don't choose a problem for your technology of choice. I have seen too many situations where technology driven solutions fail after some time of use, because it ended up solving another set of problems than it was supposed to.

Gluttony can also be present when architects over engineer a system, or when developers create more functionality than the requirements say. Always strive to follow the YAGNI principle, and by that reduce what I identify as gluttony in Software Development


>Lust is an inordinate craving for the pleasures of the body

Sometimes developers and architects are more interested in fulfilling their interests and demands instead of solving their tasks. This is natural since almost everyone in these roles are curious and interested in the learning new technologies, techniques and ways of doing things. The main focus must stay on solving the tasks we are given, but still seek help in our interests. This way our lust for new knowledge can be our best asset instead of our worst obstacle.


>Wrath is manifested in the individual who spurns love and opts instead for fury

Software developers and architects can get into this state when they are having an argument about how to solve a problem in a stressful environment, and the result of the argument ends up in the opposite direction of what the developer was arguing for. We are all perfectionists at some level, and "loosing" an argument never feels good. Make sure this does not affect your work more than necessary. We must all be professional in these kind of situations, stay behind the solution we end up with and do the best of it. Handling against the best of the group is rarely a good solution.

Never go to bed mad. Stay up and fight. - Phyllis Diller

This quote is mostly relevant in human interactions, and is often used in couple’s therapy. Finish your argument before you go to bed to make sure you can both sleep and wake up to a new start in the morning. In some cases I feel it is the same in software development. The feeling of finishing a big problem before you go to rest, gives a good feeling when you can get back to job the next day and start on something new, instead of picking up just where you left.

Speak when you are angry and you will make the best speech you will ever regret. - Ambrose Bierce

I find this relevant for what we are doing in our business. If you are angry or upset when doing something, maybe because of an argument about how to solve a problem, this often leads to a solution that is not good for anything. In this state you forget about rules and guidelines you are meant to follow, and just do what you are told to as fast as possible. First of all the work can be of poor quality, but also you can rush into using some kind of technology that you have been interested in using, but others have specifically told you not to use. The result may be serious for both you, your colleagues and the solution you are working on.


>Greed is the desire for material wealth or gain, ignoring the realm of the spiritual

Greed is dangerous in environments where people work together as a group, since this might lead to situations were the best for the group is sacrificed for the best of one single individual.

I have seen this is several occasions, and one of the most common situations where I have seen it, is when it comes to who is doing what in a team. Someone always grabs the tasks giving most visibility, most possibility to shine and most personal gain, even if the best of the group is to let someone else do it. This can lead to an inefficient work environment and dissatisfied team members. This is often something you can see among the most dominant persons in teams, and leave the less dominant team members with less interesting a low visible tasks.

Earth provides enough to satisfy every man's needs, but not every man's greed. - Mahatma Gandhi


>Sloth is the avoidance of physical or spiritual work

Sloth, or laziness, is often seen in Software Development as technical debt and degraded quality over time. As a software developer and craftsman you should always strive to leave your code in a better state than you found it (The Boy Scout Rule).

An often heard excuse is "we don't have time to do this, because we have to deliver the functionality on time". In most cases this doesn't make much sense to me. When we estimate a task we must always make sure to include time to upgrade surrounding code and clean up after our implementation. To be a craftsman in my eyes, this is something just as natural as testing your code before deploying it to production. You wouldn't skip testing would you?

Dost thou love life? Then do not squander time, for that's the stuff life is made of.

  • Benjamin Franklin

The life of Software is much more than the time of development and putting it to production for the first time. If you avoid following the Boy Scout rule to cut time to marked, it will hit you multiple times in future development tasks


Descriptions of the sins are quotes from the web page [](