How to approach technical debt

There is usually friction in an organization between technical people and business people around getting the additional time to soften the rough edges of a design.

I agree that there is a problem, but I don't agree with the idea of blaming “management” for not understanding.

The technical leaders in an organization should:

  • speak with one voice per software artifact (software project, not as in “deliverable” or “user story”, but as in “a repository 'used' by the end user”)
  • choose the most important change they need in that artifact and mention it as often as possible
  • with every opportunity, explain in terms of money what not-getting the time for the change costs, at every single bug
  • do not give a deadline, but a range: “it's done between 1 month and 3 months”
  • say no, while offering alternatives