Table of Contents
If you’ve never heard of the Debt Snowball approach for getting out of debt created by Dave Ramsey, you may find this term misleading.
Tech Debt Snowball may sounds like something suggesting that left unchecked, tech debt will snowball out of control.
While I have no doubt that this statement is true, what I mean by the Tech Debt Snowball is actually a strategy that can be use to get out of tech debt, modeled after the Debt Snowball principle.
What is a Debt Snowball?
Dave Ramsey teaches a simple but powerful idea to help people get out of debt.
His advise – pay off the smallest debts FIRST.
This advice may seem counterintuitive. Simple math would suggest to pay off the highest interest rate debt first to minimize the financial loss.
Dave, however, argues that being in debt has much more to do with human psychology, than it has to do with math.
The main goal with using Dave’s approach is to build up a good habit first.
For example, let’s assume a person has 3 debts:
– $500 student loan – 5% Interest Rate – $50 Monthly payment
– $1000 car loan – 10% Interest Rate – $50 Monthly payment
– $1500 on credit card – 15% Interest Rate – $50 Monthly payment
Also, let’s say this person has an extra $50 a month to help pay out the debt.
Dave suggests paying off the student loan first!
With the original payment of $50 a month plus $50 extra, the person will be able to pay off $500 in student debt in five months.
Five months later, with the student load gone, the person would now have the $100 that used to go towards the Student load freed up to apply towards the car loan.
In addition, having seen one of their debts disappear the person is likely to feel great and motivated to keep going.
The car loan by now shrank to $750 already from original $1000 – 5 months * regular $50 payment. With the new payment of $150 a month ($50 original payment + $100 newly freed up money from student load payment) the car load would only take 5 more month to pay off (5 months * $150 = $750).
Then the rest of the freed up funds can be used to tackle the last remaining debt.
This calculation leaves out interest rates acquired during that time period, but this cost is a small price to pay for developing a good habit.
Has the person tried to pay off the highest interest debt first, it would take 10 months (instead of 5, with student load being first to get paid off at the original $50 a month rate) to see their first debt disappear.
Which means the person would have to stay motivated for twice as long and would be more likely to give in and spend the extra $50.
How does Debt Snowball translates into Tech Debt Snowball
Few weeks ago I began working on a medium size project that had close to zero unit test coverage. From that perspective the tech debt was pretty significant.
I’ve added the basic unit-test and code-coverage tools, but staring at the mountain of untested red code from my Istanbul report was very intimidating and I found myself feeling pretty depressed about the whole ordeal.
Earlier that week I fixed a small bug in the project and added one unit test to make sure my functionality worked.
Since I already had some work done in one file, I decided to apply Dave’s principle to my test coverage and aimed for a 100% code coverage in that one file.
The file that I decided to start with, was not the most important file in the project. There was not a really good reason to start there, except for the fact that I’v already had a little bit of traction.
Within a day I had 100% code coverage in the file and I felt much better about the project. In addition, it gently forced me to explore other parts of the project, which allowed me to feel less intimidated by the entire code base.
Having had this one file to go from red to green (in terms of code coverage) really helped me to have a positive outlook on the entire exercise.
I went from being depressed about having to write unit tests to feeling like it was a game and I was winning.
Conclusion
I believe that the principles of the Debt Snowball can be applied well to reducing the Tech Debt.
It helps to pay off the smallest tech debt first, allowing teams to make visible progress. Overtime the small efforts will free up enough time to allow taking on bigger tech debt.
At the same time this approach will enable teams to take gentle steps towards developing a strong culture of writing well tested and maintainable code.
Edit: Just to emphasize, I am not suggesting that code coverage or other tools are the solution to the technical debt problem. It was just an example. What I am trying to say is that starting with something small might be more effective, than trying to take on the biggest (and scariest) tech debt first.