Good and Bad Technical Debt (and how TDD helps)