{"id":383,"date":"2013-03-25T07:53:09","date_gmt":"2013-03-25T07:53:09","guid":{"rendered":"https:\/\/www.happiestminds.com\/blogs\/?p=383"},"modified":"2024-04-10T10:18:22","modified_gmt":"2024-04-10T10:18:22","slug":"technical-debt-in-software-development","status":"publish","type":"post","link":"https:\/\/www.happiestminds.com\/blogs\/technical-debt-in-software-development\/","title":{"rendered":"Technical Debt in Software Development"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div><p style=\"text-align: left;\">Recently I was in \u00a0conversation with couple \u00a0of our customers\u00a0 on the topic of \u00a0Agile Methodology and the concept of Technical debt in detail. I also happened to meet few project teams during my reviews where I see that the project milestones are missed due to technical debt.\u00a0 I am sharing below my thoughts on this topic.<\/p>\n<p style=\"text-align: left;\"><strong><em>What is Technical debt?<\/em><\/strong><\/p>\n<p style=\"text-align: left;\">Technical debt is something you have to pay later on for the unfinished work in the software product. For example, \u00a0if you have hardcoded a lot of stuff due to the crunched schedule to take care of Time to Market, you have incurred Technical debt.\u00a0 You will have to pay this debt, when you try to maintain or update the software later on.<\/p>\n<p style=\"text-align: left;\"><strong><em>What causes Technical debt?<\/em><\/strong><\/p>\n<p style=\"text-align: left;\"><em><span style=\"text-decoration: underline;\">Business pressures: Time to Market pressures<\/span><\/em>. \u00a0Quite often we hear from our customers: <em>We need to release this product on July 1<sup>st<\/sup><\/em>.\u00a0 In a time crunched window, the software development teams usually do not have the luxury of following the right processes required for software development. \u00a0Activities like documentation, collaboration, writing test suites, code reviews get postponed or never done. \u00a0Sometimes, the situations becomes worse: requirements \u00a0gets added\/keeps changing but the release date does not move! This is a typical scenario where technical debt is incurred. When Time to market becomes the only goal, no one pays attention to things like following the right coding standards.<\/p>\n<p style=\"text-align: left;\">Of course, Business pressures are not the only cause. Technical debt is incurred even\u00a0<span style=\"text-decoration: underline;\">without any business pressure<\/span>. A junior programmer writing a bad code, a poorly done design, undocumented code are all causes of technical debt. Similarly lack of understanding of software development processes, poor requirements with no common definition of done, lack of automation in build &amp; release, lack of automation in testing \u00a0contribute to the technical debt. If the requirements keep evolving and teams do not refactor the code periodically, technical debt gets piled up.<\/p>\n<p style=\"text-align: left;\"><strong><em>Does adopting a specific methodology (eg: Agile) \u00a0cause Technical debt?<\/em><\/strong><\/p>\n<p style=\"text-align: left;\">No. Technical debt has been existing ever since software development is happening \u00a0 whatever be the SDLC methodology.<\/p>\n<p style=\"text-align: left;\"><strong><em>Some of our customers focus only on Time to Market &amp; more features per release. Project timelines do not allow us to follow all the software development processes. How do we deal with this?<\/em><\/strong><\/p>\n<p style=\"text-align: left;\">We need to get into discussion with our customers.\u00a0 They have hired us with the trust that we bring in the best practices of software development. It is expected out of us as software professionals, \u00a0to highlight and quantify technical debt. \u00a0Usually trade-offs will have to happen between short term goals (time to market) and long term goals (updating the software with new features with ease). If we bring in a business perspective to the technical debt concept, customers will be willing to listen to us. Once customers agree, then it becomes easier to deal with technical debt. Either we can plan a sprint to take care of technical debt (eg: refactoring the code, writing test case suites etc) or take care of technical debt in an incremental fashion in every sprint.<\/p>\n<p style=\"text-align: left;\"><strong><em><span style=\"text-decoration: underline;\">Summary:<\/span><\/em><\/strong>\u00a0 Technical debt is something similar to health debt. We need to do our exercises, follow the right food habits, sleep well on a daily basis. If we do not follow a healthy life style, we are incurring health debt which we have to pay later in some form: sickness, medical bills, productivity loss, unhappiness etc. Similarly, if\u00a0 we do not follow healthy software development processes, we incur technical debt which has to be paid later in the form of production bugs, costly maintenance releases, missed milestones, team burn outs, customer frustrations.\u00a0 Let us ensure we do the right things and help our customers do a conscious choice to balance their short-term and long-term goals.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"pld-like-dislike-wrap pld-template-2\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Like\" data-post-id=\"383\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-heart\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">0    <\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Recently I was in \u00a0conversation with couple \u00a0of our customers\u00a0 on the topic of \u00a0Agile Methodology and the concept of Technical debt in detail. I also happened to meet few project teams during my reviews where I see that the project milestones are missed due to technical debt.\u00a0 I am sharing below my thoughts on [&hellip;]<\/p>\n","protected":false},"author":79,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[123],"tags":[],"class_list":["post-383","post","type-post","status-publish","format-standard","hentry","category-technology"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/posts\/383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/users\/79"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/comments?post=383"}],"version-history":[{"count":1,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/posts\/383\/revisions"}],"predecessor-version":[{"id":12268,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/posts\/383\/revisions\/12268"}],"wp:attachment":[{"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/media?parent=383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/categories?post=383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happiestminds.com\/blogs\/wp-json\/wp\/v2\/tags?post=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}