{"id":5398,"date":"2015-09-14T06:00:31","date_gmt":"2015-09-14T13:00:31","guid":{"rendered":"http:\/\/thinkapps.com\/blog\/?p=5398"},"modified":"2015-11-09T15:02:04","modified_gmt":"2015-11-09T23:02:04","slug":"technical-debt-definition-importance","status":"publish","type":"post","link":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/","title":{"rendered":"Technical Debt 101"},"content":{"rendered":"<p><em>We&#8217;re starting a new series on <span style=\"text-decoration: underline;\"><a title=\"Technical Debt blog series\" href=\"http:\/\/thinkapps.com\/blog\/tag\/technical-debt\/\" target=\"_blank\">technical debt<\/a><\/span>. In this first post, we explain what technical debt is and why it&#8217;s important.<\/em><\/p>\n<p><span style=\"font-weight: 400;\">It&#8217;s been four years since <\/span><span style=\"font-weight: 400;\"><a title=\"Marc Andreessen - Twitter\" href=\"https:\/\/twitter.com\/pmarca\" target=\"_blank\">Marc Andreessen<\/a> quipped that \u201c<a title=\"Marc Andreessen - Why Software Is Eating The World\" href=\"http:\/\/www.wsj.com\/articles\/SB10001424053111903480904576512250915629460\" target=\"_blank\">Software is eating the world<\/a>,\u201d a statement that is\u00a0even more true nowadays\u00a0than it was back then. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can find cars, phones, houses, aircrafts, and a plethora of devices we use in our everyday lives that are controlled by some type of software system. And in the last one to two\u00a0years, article after article has appeared talking about the fact that software is everywhere and recommending that \u201ctraditional\u201d companies change the way and the pace at which they deliver software. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now that everyone is aware that software has indeed eaten the world, <strong>we need to understand why <\/strong><\/span><strong>technical debt is eating software<\/strong>.<span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Right about now you&#8217;re probably thinking, &#8220;Wait a minute. What do you mean? What is technical debt and how is it affecting the software we use?&#8221;<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">In this post \u2014 the first in a new\u00a0series on\u00a0technical debt and software quality \u2014\u00a0I&#8217;ll try to explain in simple terms what technical debt is and\u00a0how it affects software and businesses in general.<\/span><\/h3>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/889934105_c0e5c2727a_b.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"681\" class=\"alignnone size-full wp-image-5417\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/889934105_c0e5c2727a_b.jpg\" alt=\"Technical Debt - Kitchen Metaphor\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/889934105_c0e5c2727a_b.jpg 1024w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/889934105_c0e5c2727a_b.jpg 300w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><em><a title=\"Image via Flickr\" href=\"https:\/\/www.flickr.com\/photos\/riebschlager\/889934105\/\" target=\"_blank\">Image credit<\/a><\/em><\/p>\n<h2><span style=\"font-weight: 400;\">The Kitchen Metaphor<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">If you Google the term \u201ctechnical debt,\u201d I&#8217;m sure you will find many good definitions,\u00a0descriptions, and explanations. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, when I introduce a new word or idea, I always prefer to discuss it in a\u00a0simple way before diving\u00a0into the technical details. So, let me explain the concept of\u00a0technical debt using a kitchen metaphor. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Imagine that you are an excellent cook. It\u2019s Friday night and you have invited some friends to your place for a dinner party. You want to prepare a delicious meal. But, at the same time, you want to spend as much time as you can with your guests. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">When dinner is ready to be served, you decide to leave the kitchen without cleaning up and go back to your friends. The next morning, you wake up and want to make a\u00a0quick breakfast before starting\u00a0your day. The kitchen is a mess from the previous night&#8217;s meal. But you woke up late and\u00a0don\u2019t want to lose the whole day by doing a deep clean. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">So, you set the scouring pads aside and decide to just clear\u00a0some space by stacking the\u00a0dirty dishes in the sink. Your breakfast is ready in five minutes\u00a0and you move on to the other items on\u00a0<\/span><span style=\"font-weight: 400;\">your Saturday task list.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/17801121884_1d02c0e433_k.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1195\" class=\"alignnone size-full wp-image-5416\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/17801121884_1d02c0e433_k.jpg\" alt=\"Technical Debt - Messy Kitchen\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/17801121884_1d02c0e433_k.jpg 2048w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/17801121884_1d02c0e433_k.jpg 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/17801121884_1d02c0e433_k.jpg 1024w\" sizes=\"(max-width: 2048px) 100vw, 2048px\" \/><\/a><\/p>\n<p><em><a title=\"Image via Flickr\" href=\"https:\/\/www.flickr.com\/photos\/romanlily\/17801121884\/\" target=\"_blank\">Image credit<\/a><\/em><\/p>\n<p><span style=\"font-weight: 400;\">Now imagine that you and the rest of your household\u00a0do this same thing for a whole week. You prepare meals but always leave the kitchen worse than you found it. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">It\u2019s very probable that after 10 days it will be impossible to work in the kitchen. Even worse, it will be a nightmare to properly clean it up. So, you take the brave decision and blow it up.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The above example makes absolute sense to our topic of technical debt if we think about the following analogies: <\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">The kitchen is the software system. <\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">The dishes you prepare are some cool new features that customers expect to get in the forthcoming release. <\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\">The preparation of those dishes is the code you add or modify in the codebase, and the mess left after those 10\u00a0days is \u2014 yes, you guessed correctly \u2014 the technical debt.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Kitchen-mess.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"448\" class=\"alignnone size-full wp-image-5501\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Kitchen-mess.jpg\" alt=\"Technical Debt - Kitchen Disaster\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Kitchen-mess.jpg 600w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Kitchen-mess.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><em><a title=\"Credit for kitchen disaster image\" href=\"http:\/\/www.lengrand.fr\/images\/posts\/2012\/06\/Kitchen-mess.jpg\" target=\"_blank\">Image credit<\/a><\/em><\/p>\n<h2>Should Technical Debt Always Be Avoided?<\/h2>\n<p><span style=\"font-weight: 400;\">After reading\u00a0the kitchen metaphor, you might assume that technical debt is an evil thing that must always be avoided. It turns out that is both true and false. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The meal preparation example again comes to the rescue and will help make this concept easier to understand. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">When you are making something to eat, you probably use some cooking pots, a cutting board, a few utensils, etc.\u00a0<\/span><span style=\"font-weight: 400;\">Unless you are a cleaning maniac or you want to use the same pot again, you rarely wash them before you eat. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">I usually eat, take a nap, and then I clean everything up later. And most people would agree that it\u2019s absolutely fine to leave the kitchen a mess for a little while. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The same applies to software. It\u2019s OK\u00a0to have technical debt for some period of time. Actually, since there\u2019s always someone who is\u00a0cooking in the kitchen (since developers add\/modify\/remove code all the time),\u00a0<strong>there\u2019s no such thing as software without technical debt<\/strong>. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Instead, the\u00a0key question to ask is: How long are we allowed to leave the kitchen in such a mess? There\u2019s no one-size-fits-all answer.\u00a0I can\u2019t give you a specific\u00a0number in hours or days or even weeks. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Instead, I prefer this approach: Before someone else wants to use the kitchen, clean it up and put everything back in its place. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">To put\u00a0this same sentiment in terms of software development: Before you move to the next feature or bug fix, make sure that you haven\u2019t created any new technical debt in the codebase. <\/span><\/p>\n<h2><span style=\"font-weight: 400;\">How Does Technical Debt Affect Software Development?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">What kind of mess can developers create when they make changes to the code? <\/span><\/p>\n<p><span style=\"font-weight: 400;\">When a new file is added but it\u2019s not covered by unit tests, when they copy and paste some code that they\u00a0believe works and looks close to this new\u00a0task, or even when they\u00a0don\u2019t document some design or architectural change, technical debt can occur. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In other words, all those little things that developers\u00a0know are wrong when they&#8217;re doing them but don\u2019t have the time to fix contributes to technical debt. There are\u00a0always better things to do than refactoring this 2000 line class, right?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Certainly you will not need to blow up your system after 10 days like we would have to do with the kitchen. However, the cost of fixing a bug or adding a new feature to a module that is so over-complicated that a single code change would break everything is something that you should care about.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You might be tempted to compare technical debt with financial debt. At first glance,\u00a0this might sound reasonable. If you don\u2019t pay the debt now (fix the code today) you will have to pay some <strong>interest<\/strong> in the future (spend more time to fix the same code). The big difference, however, is that financial debt is usually relatively stable, whereas technical debt increases exponentially over time. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">So, that&#8217;s why it\u2019s important to always pay attention to\u00a0technical debt. And to keep your team motivated to do so, here are some of the rewards of keeping technical debt in check:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Reduce defects in terms of number and severity <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Increase maintainability and productivity (how fast you can add new features)<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u201cPredict\u201d the future by eliminating surprises in the codebase<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Do better release planning and respect the dates you set<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Keep the morale and happiness of your developers at the highest possible level<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">On the other hand, long-term technical debt can cause a variety of security and performance problems. In some cases, these problems (such as data leaking, severe production outages, or significant performance delays) could even\u00a0cause a catastrophe that will lead to the\u00a0business&#8217;s death. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In future\u00a0articles, I\u00a0will discuss how to\u00a0compute technical debt and how to\u00a0present it in a simple format that is easily readable by\u00a0humans. Before that, though, it\u2019s good to understand that there are many different types of technical debt.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/Flavors-of-Ice-Cream.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"4304\" height=\"2249\" class=\"alignnone size-full wp-image-5430\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/Flavors-of-Ice-Cream.jpg\" alt=\"Technical Debt - Various Flavors or Types\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/Flavors-of-Ice-Cream.jpg 4304w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/Flavors-of-Ice-Cream.jpg 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/09234331\/Flavors-of-Ice-Cream.jpg 1024w\" sizes=\"(max-width: 4304px) 100vw, 4304px\" \/><\/a><\/p>\n<p><em><a title=\"Image via Flickr\" href=\"https:\/\/www.flickr.com\/photos\/maniacyak\/3432592112\/\" target=\"_blank\">Image credit<\/a><\/em><\/p>\n<h2><span style=\"font-weight: 400;\">Flavors of Technical Debt<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Although it\u2019s a common practice to compute the technical debt as a whole and report a single number to the management or development team, we can break\u00a0it up into\u00a0four different flavors or types. <\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Design Debt<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Perhaps the most well-known type of technical debt, which is caused by poor design and architecture, is <\/span><i><span style=\"font-weight: 400;\">design debt<\/span><\/i><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This kind of debt is created primarily by developers who\u00a0put bad\u00a0code into the system.\u00a0<\/span><span style=\"font-weight: 400;\">Duplications, the absence of design patterns, or not following coding standards or best practices are some of the basic root causes of design\u00a0debt. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">But why would developers \u2014 even the best ones \u2014 write\u00a0bad code? The following example will make things clear.<\/span><\/p>\n<p><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Quality-vs-Technical-Debt.png\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"478\" class=\"alignnone size-full wp-image-5508\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Quality-vs-Technical-Debt.png\" alt=\"Technical Debt - Quality vs Technical Debt\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Quality-vs-Technical-Debt.png 600w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/Quality-vs-Technical-Debt.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><em><a title=\"Credit for hourglass image\" href=\"http:\/\/peopros.com\/wp-content\/uploads\/2014\/07\/Amanda-Hourglass.jpg\" target=\"_blank\">Image credit<\/a><\/em><\/p>\n<p><span style=\"font-weight: 400;\">You can imagine quality and technical debt as the material in an hourglass. The higher the quality, the lower the technical debt that you have to pay and vice versa. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In theory, this\u00a0means that if you apply\u00a0care to\u00a0the quality of the system, then you will constantly have low technical debt. However, in reality, almost all development teams work under pressure and at some point are forced to take shortcuts that sacrifice the quality of their code. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This choice usually allows teams to run a 100m sprint and boost their short-term productivity to quickly deliver customer features. If they don\u2019t get back as soon as possible to improve the quality, however, future changes that they will need to make to that part of the code will be more expensive. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">And the next time they have to fix something in the code within a tight\u00a0deadline, they will be imprisoned again in the same cell. They will not have the time to properly refactor the code and will add some more technical debt. And it becomes a vicious cycle that never ends. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">But fear not. In a future article, I will explain some strategies to work with and eliminate technical debt even in large, legacy systems that seem\u00a0hopeless.<\/span><\/p>\n<h3>Testing Debt<\/h3>\n<p><span style=\"font-weight: 400;\">Next comes a type of technical debt called <em>testing debt,<\/em> which is caused \u2014 you&#8217;ve probably already guessed it \u2014\u00a0by the lack of testing or by poor testing quality. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The most common patterns that can be used to recognize testing debt are:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">complete absence of testing<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">tests that should run but don\u2019t<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">tests that are unreliable because they randomly fail or take too long to finish<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">mismatches between test scenarios and actual testing<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">outdated tests<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The root causes of such debt are more or less the same as with design debt. Testing is still considered a luxury for many development teams, and it\u2019s not uncommon to see developers who\u00a0completely ignore writing tests because they \u201c<\/span><span style=\"font-weight: 400;\">want to be more productive.<\/span><span style=\"font-weight: 400;\">\u201d <\/span><\/p>\n<p><span style=\"font-weight: 400;\">But, when the team realizes that the absence of testing is causing problems to the system and doesn\u2019t allow them to make quick changes, they will need much more time to do it. This is essentially the interest on the debt they have to pay. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Test suites are the safety pillow for every software system. Writing software without testing is like participating in extreme sports without wearing any protective gear.<\/span><\/p>\n<h3>Documentation Debt<\/h3>\n<p><span style=\"font-weight: 400;\">The third type of technical debt to consider is <em>documentation debt<\/em>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Developers sometimes seem to consider documentation to be hard labor. I partially agree with those\u00a0who prefer writing clean and readable code rather than comments and documentation. But, that is only one side of the coin. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">There are several things that need to be well documented and kept continuously up to date, including:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">API and common libraries documentation<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Requirements, user stories, and any other sources that describe the system functionality<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">High-level design and architecture documentation (You don&#8217;t need to keep\u00a0every little piece of the system updated but a document presenting the overall architecture and possible integrations should always be available.)<\/span><\/li>\n<\/ul>\n<h3>Defect Debt<\/h3>\n<p><span style=\"font-weight: 400;\">Last but not least, there is a type of technical debt known as\u00a0<em>defect debt<\/em>.<\/span><\/p>\n<p>Defect\u00a0debt describes the known defects that are not yet fixed because they are low priority, low severity, or there\u2019s a known work-around. Some other cases include defects that have been reported but are rarely reproduced or are reproduced only under extreme or corner cases.<\/p>\n<p><span style=\"font-weight: 400;\">Sometimes defect debt is computed as part of the design debt. But in some cases, it\u2019s better to have a clear picture of the defect debt on its own, such as when you need to make important decisions about the future of a product. <\/span><\/p>\n<h2><span style=\"font-weight: 400;\">In Summary<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In this first post of the series, I explained the concept of technical debt using the kitchen metaphor and why it\u2019s important to measure before it completely eats your software. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">I\u00a0identified the main factors\u00a0that cause\u00a0developers to produce technical debt and also clarified\u00a0that there\u2019s some distinction between good and bad technical debt. As noted above, it\u2019s not a problem to introduce technical debt during the implementation of new features as long as developers work to clean it up\u00a0before moving on to the next feature or bug fix.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finally, I discussed the four flavors of technical debt (design, testing, documentation, and defect) and shared\u00a0some common symptoms that can help you identify the existence of each type of debt. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Technical debt is eating software in many ways, and this article was just the beginning of our journey. Stay tuned\u00a0for my next posts\u00a0in which I&#8217;ll explain\u00a0how to\u00a0measure the debt\u00a0and share\u00a0strategies to eliminate it.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><em><a title=\"Feature image via Cody Burleson\" href=\"http:\/\/codyburleson.com\/2014\/10\/21\/track-technical-debt-and-pay-it-back-quickly\/\" target=\"_blank\">Feature image credit<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we explain what technical debt is and why it&#8217;s important. We also discuss four types of technical debt: design, testing, documentation, and defect.<\/p>\n","protected":false},"author":70,"featured_media":5504,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[467,408,405,364,407,410,409,404,406],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Technical Debt 101<\/title>\n<meta name=\"description\" content=\"We explain what technical debt is and why it&#039;s important. We also discuss four types of technical debt: design, testing, documentation, and defect.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Technical Debt 101\" \/>\n<meta property=\"og:description\" content=\"We explain what technical debt is and why it&#039;s important. We also discuss four types of technical debt: design, testing, documentation, and defect.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/\" \/>\n<meta property=\"og:site_name\" content=\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-14T13:00:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-11-09T23:02:04+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"760\" \/>\n\t<meta property=\"og:image:height\" content=\"279\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Patroklos Papapetrou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Patroklos Papapetrou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/\",\"url\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/\",\"name\":\"Technical Debt 101\",\"isPartOf\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg\",\"datePublished\":\"2015-09-14T13:00:31+00:00\",\"dateModified\":\"2015-11-09T23:02:04+00:00\",\"author\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/bbff910ac26ea64d3ed23cdcdb3f166a\"},\"description\":\"We explain what technical debt is and why it's important. We also discuss four types of technical debt: design, testing, documentation, and defect.\",\"breadcrumb\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage\",\"url\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg\",\"contentUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg\",\"width\":760,\"height\":279,\"caption\":\"Technical Debt feature image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/localhost:8080\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Technical Debt 101\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/localhost:8080\/blog\/#website\",\"url\":\"http:\/\/localhost:8080\/blog\/\",\"name\":\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/localhost:8080\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/bbff910ac26ea64d3ed23cdcdb3f166a\",\"name\":\"Patroklos Papapetrou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a6d5dbc6412ef643e03ffc4e2657e976?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a6d5dbc6412ef643e03ffc4e2657e976?s=96&d=mm&r=g\",\"caption\":\"Patroklos Papapetrou\"},\"description\":\"Patroklos Papapetrou is a software architect addicted to software quality and an agile team leader with almost 20 years of experience in software development. He is one of the authors of SonarQube in Action and is currently writing The Art of Software Gardening. (He treats software systems as flowers and thus prefers to call himself a software gardener.) Patroklos is also an occasional speaker, giving talks about clean code, code quality, and software gardening.\",\"sameAs\":[\"https:\/\/gr.linkedin.com\/in\/ppapapetrou\",\"https:\/\/x.com\/softwaregarden\"],\"url\":\"https:\/\/thinkapps.com\/blog\/author\/patroklos-papapetrou\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Technical Debt 101","description":"We explain what technical debt is and why it's important. We also discuss four types of technical debt: design, testing, documentation, and defect.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/","og_locale":"en_US","og_type":"article","og_title":"Technical Debt 101","og_description":"We explain what technical debt is and why it's important. We also discuss four types of technical debt: design, testing, documentation, and defect.","og_url":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/","og_site_name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","article_published_time":"2015-09-14T13:00:31+00:00","article_modified_time":"2015-11-09T23:02:04+00:00","og_image":[{"width":760,"height":279,"url":"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg","type":"image\/jpeg"}],"author":"Patroklos Papapetrou","twitter_misc":{"Written by":"Patroklos Papapetrou","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/","url":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/","name":"Technical Debt 101","isPartOf":{"@id":"http:\/\/localhost:8080\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage"},"image":{"@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage"},"thumbnailUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg","datePublished":"2015-09-14T13:00:31+00:00","dateModified":"2015-11-09T23:02:04+00:00","author":{"@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/bbff910ac26ea64d3ed23cdcdb3f166a"},"description":"We explain what technical debt is and why it's important. We also discuss four types of technical debt: design, testing, documentation, and defect.","breadcrumb":{"@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#primaryimage","url":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg","contentUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/09\/14130031\/technical_debt.jpg","width":760,"height":279,"caption":"Technical Debt feature image"},{"@type":"BreadcrumbList","@id":"https:\/\/thinkapps.com\/blog\/development\/technical-debt-definition-importance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/localhost:8080\/blog\/"},{"@type":"ListItem","position":2,"name":"Technical Debt 101"}]},{"@type":"WebSite","@id":"http:\/\/localhost:8080\/blog\/#website","url":"http:\/\/localhost:8080\/blog\/","name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/localhost:8080\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/bbff910ac26ea64d3ed23cdcdb3f166a","name":"Patroklos Papapetrou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a6d5dbc6412ef643e03ffc4e2657e976?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a6d5dbc6412ef643e03ffc4e2657e976?s=96&d=mm&r=g","caption":"Patroklos Papapetrou"},"description":"Patroklos Papapetrou is a software architect addicted to software quality and an agile team leader with almost 20 years of experience in software development. He is one of the authors of SonarQube in Action and is currently writing The Art of Software Gardening. (He treats software systems as flowers and thus prefers to call himself a software gardener.) Patroklos is also an occasional speaker, giving talks about clean code, code quality, and software gardening.","sameAs":["https:\/\/gr.linkedin.com\/in\/ppapapetrou","https:\/\/x.com\/softwaregarden"],"url":"https:\/\/thinkapps.com\/blog\/author\/patroklos-papapetrou\/"}]}},"_links":{"self":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/5398"}],"collection":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/users\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/comments?post=5398"}],"version-history":[{"count":46,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/5398\/revisions"}],"predecessor-version":[{"id":6037,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/5398\/revisions\/6037"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media\/5504"}],"wp:attachment":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media?parent=5398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/categories?post=5398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/tags?post=5398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}