class: center, middle # Things Other People Have Said About Technical Debt --- # The Agenda 1. The Agenda 1. What It Is 1. Why It's Bad 1. How to Address the Bad 1. Bonus: Technical Inflation --- # What It Is A metaphor. **Debt** == you owe $$ to someone **Technical Debt** == you owe code ("proper"/fixed code) to yourself, the project, your team By Ward Cunningham. [Source](http://martinfowler.com/bliki/TechnicalDebt.html) --- # What It Is ## Unintentional VS Intentional *with a grain of salt **Unintentional** >"...a design approach just turns out to be error-prone or a junior programmer just writes bad code." **Intentional** >"...an organization makes a conscious decision to optimize for the present rather than for the future." Source: [Steve McConnell](http://www.construx.com/10x_Software_Development/Technical_Debt/) *Note: [Maiz Lulkin](https://medium.com/@joaomilho/festina-lente-e29070811b84) would say that unintentional technical debt isn't technical debt at all. [Ward Cunningham](https://www.youtube.com/watch?v=pqeJFYwnkjE) talks about how he didn't mean the analogy to mean bad code. --- # What It Is ## Large VS Small **Large** "We don't have time to implement this the right way; just hack it in and we'll fix it after we ship." **Small** "Other debt accumulates from taking hundreds or thousands of small shortcuts-- - generic variable names, - sparse comments, - creating one class in a case where you should create two, - not following coding conventions, and so on. [...] ...it adds up faster than you think" Source: [Steve McConnell](http://www.construx.com/10x_Software_Development/Technical_Debt/) --- # Why It's Bad Well, isn't inherently bad. >"Just as a business incurs some debt to take advantage of a market opportunity developers may incur technical debt to hit an important deadline." - [Martin Fowler](http://martinfowler.com/bliki/TechnicalDebt.html)
Source: [Henrik Kniberg](http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt) --- ## But When It Is Bad... >"Like a financial debt, the technical debt incurs interest payments[...] extra effort" - [Martin Fowler](http://martinfowler.com/bliki/TechnicalDebt.html) >"If the debt grows large enough [e.g. large legacy codebase], [...] so much work goes into keeping a production system running (i.e., 'servicing the debt') that there is little time left over to add new capabilities to the system." - [Steve McConnell](http://www.construx.com/10x_Software_Development/Technical_Debt/) ---
Source: My Sand Castle Is Too Big by alexiuss (DeviantArt) --- # How To Address The Bad ## Avoid It When It's The Small Type >"Keeping your unintended debt down gives you more room to intentionally take on debt." [Steve McConnell](http://www.construx.com/10x_Software_Development/Technical_Debt/) ## Deficit List >"Each time a debt is incurred, the tasks needed to pay off that debt are entered into the [decifit tracking] system along with an estimated effort and schedule." [Steve McConnell](http://www.construx.com/10x_Software_Development/Technical_Debt/) --- # How To Address The Bad ## Plan For It >"Like any other debt, budget for technical debt in your release and iteration planning." [Atlassian Site on Agile](https://www.atlassian.com/agile/delivery#!technical-debt) ## Calendar >"Schedule a date and time to sit down and address technical debt, make them visible calendar events." - Juan Musleh (paraphrased from Pyladies Talk) --- # How To Address The Bad ## Debt ceiling
Source: [Henrik Kniberg](http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt) --- # How To Address The Bad **Summary**: Make It Visible, Make It A Priority, Make Time. --- The End.
--- # Bonus: Technical Inflation "Technical Inflation could be viewed as the ground lost when the current level of technology surpasses that of the foundation of your product to the extent that it begins losing compatibility with the industry." Example: falling behind in versions of a language to the point where your code is no longer compatible with the mainstream - Scott Wood