This is the fifth instalment in a series of articles about six core principles that my team, a software development team, and I compiled in order to develop a framework for decision making. The reason for building the framework was to build a common understanding of how we want to work. Writing it down allowed us to easily transfer that knowledge to new colleagues and to spread the word.
The bitterness of poor quality remains long after the sweetness of low price is forgotten.
– Benjamin Franklin
Bugs and other forms of defects induce significant follow-up costs which surmount the costs of avoiding them in the first place. In the face of deadlines one tends to sacrifice quality in favour of time to market. Thereby neglecting that doing so substantially increases total cost of ownership. Defects, waste or Muda are to be avoided. Waste reduction is an effective way to increase profitability.
When developing a product there always seem to be two to ways: one is fast but messy, where you’re sure it will cause future changes being more expensive. The other one being clean but requiring more time. Technical debt is a metaphor illustrating the follow-up costs of a “quick and dirty” approach. As with financial debt interests incur when having technical debt. These interests manifest in additional work required during ongoing maintenance and development. Choosing wether to continue paying the interests or to pay back technical debt in the form of refactoring should be a conscious decision. I recommend reading Martin Fowlers article on technical debt.
Technical Debt Overload
Hand in hand with technical debt goes the risk of debt overload. By accruing to much Debt you risk that all available resources are bound exclusively to pay back interests. Development comes to a halt.
When you bild something, it should be like a golden sunshine, smell like freshly baked bread and have the filigree elegance of a mathematical proof. Not because there are “haters” out there, but because it’s the damn demand you put on yourself!
– Felix von Leitner, 2014
Development Core Principles
Principles like the ones described here, provide a framework for decision making in daily routine. Explicitly defining and documenting core values and principles fosters a common understanding of what is considered important. It creates alignment and builds the foundation of a strong culture within a company.
Please refer to the Boy Scout Rule.
Shared values, principles and best practices foster a common understanding of what is considered important, it creates alignement. Friction is reduced and teams gain focus towards shared goals.
Sustainability & Flexibility
Avoiding technical debt enables sustainable systems and solutions that can be maintained and operated with minimal effort. Flexibility is improved because efforts can be focused on further development and innovation instead of being bound on paying back technical debt, i.e. rework, fixing bugs and firefighting.
Waste reduction is an effective way to increase profitability. Keeping technical debt low increases business agility an reduces the risk of unconsciously getting into a state of debt overload where all available resources are bound exclusively to pay back interests, effectively bringing development to a halt. Having shared values and principles supporting continual improvement and refactoring is an effective way to create sustainable systems and retaining flexibility.
From Dev-Team with ❤