Technical debt and design debt are synonymous metaphors referring to the eventual consequences of sloppy software architecture and rushed software development. Code debt refers to technical debt within a codebase.
Nice short writeup on Technical debt, a term product managers should learn more about. Sometimes you'll need to put desired features on hold while your team "cleans up."
My friend Luke Hohmann suggests that you add a "persona" to your product set: The System. That way, housekeeping and code rewrites are part of the backlog so you can see the whole picture.
"The problem with quick & dirty is that dirty remains long after quick has been forgotten."--Steve McConnell