There are three primary types of technical debt: naïve, unavoidable and strategic. The naïve technical debt occurs due to lack of experience or foresight, thereby resulting in poorly built software.
Unavoidable technical debt deals with improvements of tools and design patterns that can’t be utilized today, but will be available in the future. Consider the recent release of Visual Studio 2015 July 29th along with an update of the .NET 2015 framework. There are many improvements that were included in this release which were unavailable before and updating software to utilize the latest .NET code efficiently to avoid technical debt is likely. Also, all thriving software systems are constantly changing and so are the development tools which will have to be updated with the waves of new changes.
Strategic technical debt is a bit different from naïve and unavoidable technical debt in that it is a business decision, not a technical challenge.