This document discusses technical debt and what can be done about it. Technical debt occurs when necessary work is deferred, such as not upgrading compilers or conforming to guidelines. Over time, this deferred work accumulates and slows down a project. To address technical debt, it is important to make the debt visible by keeping a list. Technical debt can be avoided by enforcing high quality standards and not cutting corners. It can also be paid off over time by starting with continuous integration and writing tests around customer defects to build up testing around brittle code areas. An anti-pattern to avoid is trying to write a comprehensive testing framework for an entire product without focusing on the most important customer defects first.