Moving Past Technical Debt


Technical Debt is a catch-all term that we use for entropy in software development.  As systems grow, they often become difficult to work with. When this happens, we often know that we can do better, but it is hard to take concrete actions which help us get a strong sense of control over the evolution of a code base. 


Fortunately, there are many techniques that we can use, from conventional refactoring and testing to team-coordinated rewriting and replacement.


In this 2-day workshop, we’ll explore common change scenarios that occur in difficult code and work through interventions we can make at the code, process, and architecture levels to make work easier over time.

Course contents

Day 1

• Presentation – The History and Definition of Technical Debt
• Exercise/Discussion – Technical Debt Identification/Assessment
• Presentation – Forces Leading to Technical Debt
* Presentation – System Triage
• Demo/Exercise – Scratch Refactoring / Developing a Refactoring Plan
• Presentation – Dependency Breaking Practices for Test Coverage
• Presentation – Testing as a Tool For Progressive Discovery
• Exercise – Characterization Testing


Day 2

• Presentation – The Synergy Between Testability and Good Design
* Presentation – Modularity Goals
* Exercise – Domain Discovery in Existing Code
• Presentation/Exercise – Conditional Logic Reduction
* Presentation – Strategies for Configuration Intensive Systems
* Presentation – Team Practices for Debt Reduction
• Presentation/Exercise – Transparent Design Quality Practices
• Presentation – The Organizational Component of Technical Debt.

Target audience and prerequisites

This workshop is for developers, architects, technical leads, technical managers.

 - 3 May 2023