Don't Let Tech Debt Manage You
About the Course
Software is a big investment for most companies, organizations, and governments. The quality of that software contributes heavily to its value. Effectively managing technical debt enables you to optimize the value of software and maximize speed to market. If you have to battle technical debt in an attempt to beat your competition to market with a new feature, you may lose any advantage by having to deal with complex or unreliable code that is not easily extensible.
To maintain business, market, and technological advantages, you must effectively manage technical debt incurred within all artifacts that define, implement, and validate your software. This course examines what technical debt is, explains why defining a quality model is essential to understanding technical debt and teaches how to effectively manage risks associated with impacts to that model. Discussions will encompass tracking quality issues as defects vs. technical debt, dealing with code smells, and methods for minimizing technical debt.
The following topics provide the foundation, strategies, and techniques for understanding, realizing, and managing technical debt.
Defining Technical Debt
We begin with an understanding of what technical debt is, how it relates to software product development, and how it impacts behavioral and structural qualities.
Without expectations of quality, you have no technical debt. We will examine quality models and discuss why they are so important to understanding and realizing technical debt.
Analogy to Financial Debt
A brief history lesson will explain how and why Ward Cunningham coined the term Technical Debt and how taking out a loan against your technical currency will inhibit future development, impact quality, and slow speed to market.
Types of Technical Debt
Technical Debt is best organized by assigning one of five categories that apply to all types of software development, regardless of platform, language, development approach, or process.
Reasons for Technical Debt
In October 2009, Martin Fowler introduced the Technical Debt Quadrant to explain the reasons why we often incur technical debt — ranging from those reasons that are professional in nature to those that are, well… less than professional.
Identifying Technical Debt
Being able to spot (or smell) technical debt is a skill that requires many years of development experience. We will discuss the importance of identifying (by name) common design, code and test smells and anti-patterns that are often indicators of technical debt.
Realizing Technical Debt
Discussions on how to become aware and understand the breadth of technical debt include methods of tracking, analysis, estimation, and prioritization.
With the realization of different types of technical debt, consideration is given as to how to represent different types of quality, along with the influence they have on software product development and speed to market.
Reducing Technical Debt
Without doubt, technical debt slows software development and diminishes product quality. We will examine methods for paying down technical debt, along with ways to identify those fixes that will give you the biggest bang for your buck.