PyCon UK 2022

Living With Technical Debt: Acknowledge It, Specify It, Reduce It
2022-09-17 , Assembly Room

Technical debt is the elephant in the room: complex engineering problems meet awkward organizational issues. To make it more tangible, we'll divide it into 3 categories and discuss engineering and business strategies for each:

  • Gather info about vague issues.
  • Express antipatterns as code.
  • Automatically fix straightforward issues.

Summary

In this talk, we make tech debt more tangible by dividing it into 3 categories and showing strategies for each:

  • vague issues
  • antipatterns
  • fixable problems

In each category, we'll discuss not just the technical complexities, but also the business impact and the organizational challenges. We'll introduce several tools to mitigate the consequences and to eliminate parts of the tech debt.

Vague Issues: Acknowledge Them

  • Make it visible when working with the code.
  • Make it visible when taking business decisions.
  • Acknowledge the business impact: longer development time, higher probability of bugs.
  • Encourage open and constructive discussion.
  • Gather info about this specific issue and recognize general patterns.

Identify Antipatterns And Express Them As Code

  • General vs specific to your codebase: Not an either - or, but rather a continuum.
  • Express antipatterns as code.
  • Find similar issues across the whole code base.
  • Avoid adding even more debt of the same kind.

Automatically fix straightforward issues

  • If the antipattern can be codified, perhaps the fix can be codified as well.
  • Roll out fixes with large-scale changes.
  • Risks of large-scale changes.
  • Avoid re-adding the same kind of debt.

Is your proposal suitable for beginners?: yes

Cofounder and COO of Sourcery. Helping to build tools to automatically improve code quality, cut down on tech debt, and help make everyone's code more Pythonic.

2021-2022: senior software engineer at Sourcery AI working on code quality tools
2015-2021: senior software engineer positions at fintech companies
2005 - now: various software engineer jobs