Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Purging the Technical Debt - From Concept to Im...

Purging the Technical Debt - From Concept to Implementation

This is the deck I prepared for a webinar I had the chance to share with JetBrains on the subject of technical debt. You can watch the webinar here: https://www.youtube.com/watch?v=_qMeJQ9Rzso&t=2s

The main theme about the presentation is to understand what technical debt is, how it affects team productivity and product quality, as well as a few tools available that can help us to purge it.

Avatar for Brian Di Croce

Brian Di Croce

September 15, 2021

Other Decks in Programming

Transcript

  1. https://en.wikipedia.org/wiki/Technical_debt “Technical debt is a concept in software development that

    reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.” - Wikipedia
  2. The term “technical debt” was coined by Ward Cunningham (co-creator

    of XP) almost 30 years ago. "Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. The danger occurs when the debt is not repaid. Every minute spent on “not-quite- right” code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation."
  3. In 2018, Stripe published the results on an interesting study

    related to the current state of software development The Developer Coefficient: Software engineering efficiency and its $3 trillion impact on global GDP (PDF)
  4. COMPANIES WASTE $300 BILLION OF DEVELOPER PRODUCTIVITY EVERY YEAR “Developers

    spend over 17 hours every week dealing with maintenance issues like debugging and refactoring, and about a quarter of that time is spent fixing bad code. That’s nearly $300B in lost productivity every year. It’s not how many software engineers a company has; it’s how their talent is being utilized.” Source: The Developer Coefficient: Software engineering efficiency and its $3 trillion impact on global GDP
  5. The law of software entropy states that as a system

    is modified, its disorder (entropy) tends to increase
  6. In his book The Mythical Man-Month: Essays in Software Engineering(1975),

    Prof. Frederick P. Brooks distinguishes two types of complexity: Essential Complexity Accidental Complexity
  7. Essential complexity is the fundamental implementation of functionalities to make

    the system work according to its intended purpose regardless of the inherent complexity
  8. Accidental complexity is the non-essential code or quick fixes that

    are implemented to prove a temporary idea or get a short-term gain, but remains intrinsic in the system.