Technical Debt Yashwanth Reddy Muddireddy CONTENTS • What is Technical Debt? • Types of Technical Debt • Causes of Technical Debt • Impacts of Technical Debt • How to Avoid Technical Debt? • Conclusion WHAT IS TECHNICAL DEBT? • 'Technical debt' was a term originally coined by Ward Cunningham in the year 1992. • Technical debt(TD) is an issue that must be handled by a developer similar to how an entrepreneur handles financial debt. • 'Deficit programming' was yet another synonym of technical debt, a term coined by David Panariti, which describes technical debt in a simpler and straight forward manner. TYPES OF TECHNICAL DEBT • Most basic type of all is the initial design of an application. • Compromising is yet another reason that leads to technical debt, as the decision makers fail to identify the right areas to make a compromise and end up compromising on critical aspects instead (Brown et al., 2012). • Coding inexperience often leads to badly written code, a mistake made by junior developers. CAUSES OF TECHNICAL DEBT • There are many cases wherein the development team does not interact with the business at all. • The business declares deadlines without taking suggestions from the development team (McConnell, 2013). • There are a lot of cases in which the business has no clue whether their requirement is even achievable. • Outsourced staff is usually long-distance staff from different parts of the world and the lack of communication leads to a substandard outcome (Gat, ed., 2010). IMPACTS OF TECHNICAL DEBT • An application may appear to be flawless at first, but once it gets older, your technical debt starts to accumulate and get larger, and your business service infrastructure is what suffers the most damage. • Losing customers is a common occurrence given the amount of competition that exists. If an application fails to satisfy a customer, the customer will immediately move to an alternate application that might do the job for him/her. • If this becomes a common occurrence, the business infrastructure could take a massive hit (Curtis, 2014). HOW TO AVOID TD? • Should be aware of TD like any other debt. • Refactoring. • Use measurement tools. 1 . CCFinderX(Java ,C/C++ , COBOL ,C#). 2 . Atomiq (mainly for .NET developers). 3 . Simian (Java ,C# ,C/C++ ,COBOL , HTML). 4 . Checkstyle (Java). 5 . SolidSDD (C ,C++ , C# , Java). HOW TO AVOID TD? • Guidelines to managers and developers. 1 . Managers (I) . Regarding software project deadline. (II) . Communicating with developers(software quality). (III) . Time period for refactoring. 2 . Developers (I) . Clean code. (II) . Red Green refactoring. • Use best practices. CONCLUSION • Technical debt is a business risk most do not pay attention to, and the longer it remains that way, the worse the aftermath is going to be. It does not just hit your economy, but also makes you lose customers and your image. • Technical debt is not as much of a problem as it once was, because as soon as you finally detect your issues with the help of available software, it is only a matter of time before you can fix it. REFERENCES • Steve McConnell. (2013). Managing Technical Debt. Construx Software Builders. • C. Sterling, Managing Software Debt: Building for Inevitable Change, Addison-Wesley Professional, 2010. • N. Brown et al., “Managing Technical Debt in Software-Intensive Systems,” Proc. Future of Software Eng. Research, ACM, 2010, pp. 47–52. REFERENCES • I. Gat, ed., “Special Issue on Technical Debt,” Cutter IT J., vol. 23, no. 10, 2010. • Dr. Bill Curtis. (2014). Measuring and Managing Technical Debt. Cast Research Lab. • Kniberg, H. (2008) Technical debt-How not to ignore it, at Agile 2008 conference. • West, D. (January 2011), Balancing agility and technical debt, Forrester & Cast So_ware.