We know that Covid-19 has had a disastrous effect on the economy every where. For individuals and companies, it has meant a loss of income and an increase in financial debt.
That got me to thinking about a different kind of debt. Technical debt.
What is technical debt?
Technical debt is a software development concept. It refers to the expected cost of future rework, caused by choosing an easier or faster solution now.
Ward Cunningham explained it this way in 1992:
"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise."
Like financial debt, technical debt accumulates "interest". That R1000 you borrowed at 20% interest becomes R1,200 if you don't pay it back. Technical debt works the same way.
How do we get into debt?
There are so many ways to get into debt. Some are planned — like when you take out a loan. Some are unplanned — like when you've been a little reckless with your credit card.
Here are some ways you get into technical debt:
- A deliberate choice to use a "quick and dirty" approach.
- Constant business pressure and unrealistic deadlines.
- Lack of knowledge or experience on the part of the developer.
- Poor adherence to standards.
- Lack of ownership.
The list is much, much longer. Realise that you do have technical debt. And if your developers are always under pressure to meet deadlines, your debt is getting bigger.
How do we get out of debt?
Just like with financial debt, it is always easier to get into technical debt than to get out of it. You have to repay your debt. But you also have to learn how to stop getting into more debt.
This is why the ethics of software development are so important. Coding ethics are not just about hacking and ransomware. They are about a professional approach to code, a commitment to quality, and an understanding of team work.
Note for South Africans
Incus Data and TUT are conducting an online survey about ethics in the software engineering industry in South Africa. We need your help to reach as many developers as possible. If you care about this, please add a comment below. I'll then contact you to explain how you can take part in, and benefit from, the survey.
Quick reminder
Do you develop web apps? Remember our Security Spotlight series, which is about web application security.
Do you develop in Java? Don't forget about our Java Tips series.