A metaphor for programming decisions and actions that create liabilities which costs us later in time and extra work.
Creating crippling interest payments or lots of work to fix for future you or other developers.
A conscious decision to move fast to get a release out or hit a deadline or maybe the code won't be touched again.
Releasing code that you don't even know is debt, not knowing best practices or the right solution.
Knowing that you might want to change or clean up or redesign it later but ship anyway.
Manageable debt that we can deal with. Payments are manageable and isn't ballooning.
Begins to effect developer productivity. Hard to keep up or make changes. Increased time and effort for simple changes.
Once we start to refactor we might not always make things better immediately. We might make things worse
Find a large method
Write a test that covers the method
Move a chunk to a new method
Call new method from large method