Litdev

CRUFT: A way to quantify technical debt

This is my rephrasing (read: oversimplification) of this article by Ben Rady.

What is CRUFT?

Complexity is a measure of how hard it is to understand and change the code. A high complexity means it is harder to change the software to fit business needs.

Risks are the unwanted behaviour of the code.

Uses are the wanted behaviour of the code.

Feedback determines how fast we can iterate on changes. This can be through observability (logging/metrics) or user feedback.

Team is the amount of people able to effectively support the code. We need people to understand and maintain the code.

How to use CRUFT?

Most work you do as a software engineer affects the CRUFT factors.

Technical debt us just another way to affect the CRUFT factors.

By specifying what the debt is we can make more better decisions on which debt is worth paying off.

Assuming you (can) measure these factors, they can also be used to figure out if paying off the debt was effective.

Measuring CRUFT

To make informed engineering decisions, we need to measure CRUFT in a way that reflects the system’s real-world behaviour. While no single metric captures the full picture, approximations can guide improvements over time.