From time to time, your developers charge you (or report hours) for refactoring or dealing with technical debt? What are they talking about? What is refactoring? This is explanation for non-technical people.

I’ll use analogy with decluttering a wardrobe. Because refactoring is kind of tiding up. Over time you’re adding stuff to your wardrobe and sometimes you take something away. This is your development.

Every time you make a change in your wardrobe, you straighten the immediate surroundings. That’s refactoring. Idealy done after each task. Everyone of us is sometimes in hurry, don’t we?

No matter what you do, over time, items in your wardrobe are not laied out optimally. It gets difficult to find something and space is not used effectively. It’s time to deal with it. You take things out, reorder them, repackage them if needed and put them back. You don’t add new things, you’re just optimizing. Sometimes this is also called refactoring or it is called dealing with technical debt. You don’t add any new features you’re just making code more readable and effective.