Promoting Clean Code

About the Course

Of course, user stories do not align to the SOLID principles.  But the code that implements them should conform to these fundamentals of clean code.  This course teaches team members how to align user stories with the six INVEST principles to provide a foundation for a healthy backlog, along with a structure that promotes alignment with the five SOLID principles to facilitate clean code.


Throughout this course, team members will gain insight how to properly structure the three components of a user story to support these (and other) software engineering principles.  This will also help developers know what to expect in well-written user stories.

Course Topics

The following topics provide the foundation, strategies, and techniques for writing well-factored user stories that promote clean code.

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.

Quality Models

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.

Backlog Management

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.