In software development, there is always a tension between two opposing forces: the desire to do it fast, and the desire to do it right. I could probably write an entire blog post on just that topic, but for now I’ll settle for the short version. If you do it right, then, later, when you want to extend it, or modify it, or use it as a jumping off point for branching out in a whole new direction (and you will always want to do these things eventually, if your software lives long enough), you can do so easily, with a solid foundation as a base. The downside is that it will take longer. If you do it fast, you get results faster, which means you can serve a customer’s needs before they change, fill a window of opportunity before it closes, or perhaps even beat your competitors to the market with your offering. But when you have to modify it later (which you will), it will end up taking even more time to clean things up than if you’d just done it right in the first place.

As someone who it going to have to deal with a technical debt problem in the coming months this article presents a good list of the possible ways to deal with it.

http://barefootcoder.blogspot.co.il/2013/07/technical-debt-strategies.html