Technical Debt: An Avoidable Tragedy

August 6, 2014

Continuous attention to technical excellence and good design enhances agility. – ninth principle of the Agile Manifesto.

When it comes to software development, there is a lot that goes into this one principle that is critical to agility. Let’s take a quick look at a fictitious scenario that reflects all too many actual experiences.

You are a development manager for a company that is launching a new product, and everyone is excited to be starting fresh. However, this fresh start doesn’t mean that unlimited funds are available. It has been made clear by the executive steering committee that a marketable product must be produced within one year.

And after some initial wrangling a high-level feature set is targeted. Even though it is understood that the likelihood of everything making into the first release is small, there is a quiet expectation that most of the feature set will make into the first release. This concerns you, but you are comforted by the fact that you have a team of young, energetic, eager-to-please developers and testers who are up for the challenge.

They come out of the gate fast. New features are developed rapidly and it looks like you are in for clear sailing. And it is, for a while. Unfortunately, during the latter half of the project the team begins to struggle. It seems that every day testers are finding more and more defects. Your brief situational analysis:
  1. The developers can’t keep pace – defects are being reported faster than they can be fixed.
  2. Addressing all of these defects is taking time away getting the remaining feature set finalized.
  3. You don’t understand the root cause of the defects, but the following concerns flash through your mind: Have these defects been there all the time, undiscovered until now? Is the team getting tired and perhaps a little sloppy? Are there greater issues with the underlying design of the software itself, causing what should be unrelated areas to break when new functionality is added? A combination of all of these?
  4. While you would like to dig into these issues and take corrective action that will benefit you and your team in the long-term, you have another consideration. The business wants what they want.
Ultimately the team burns the midnight oil for weeks on end and makes the deadline for the first release. There is a modest celebration of the event, but not the hearty congratulations of a job well done. Even a toned-down celebration feels hollow to you.

You are taking a political hit because some of the desired features were dropped from the release, despite the expectation being set at the outset that this would most likely occur. Adding to your woes is that while the quality of the product is deemed good, it isn’t considered great. Everyone knows – but doesn’t talk about – the downgrading of some defects at the end of the cycle so that the deadline could be met with the quality goal of “no critical defects” in the product.

In addition, your team has told you that they really need to clean up some of the code because they brute-forced the coding of the final features in order to meet the deadline, plus they now realize that some of the early foundational work could be improved as well. Your hope is that there will be time to address to these issues later, if the product proves to be a success.

And shortly after its release, the product turns into a success – good news! The bad news is that there is a demand for new features and an ever-increasing volume of defects being reported by customers that need to be fixed. Revenue growth becomes intoxicating and being “responsive” to the customer is equated to fixing their defects and shipping new versions to meet contractual demands. (e.g., “I’ll buy this product if you add x…”)

Your dilemma is that it is taking longer and longer to add each new feature; and with each release the number of outstanding defects increases. This in turn is leading to longer release cycles, and your team is dealing with both maintenance and new product development. You respond by allocating a dedicated maintenance team with the hope of stabilizing the system and freeing up the core team to focus on value-add features.

Let’s stop right there. How agile is this? Even if the business is willing and able to adapt to change, the product itself is demonstrating to be anything but adaptable or extensible. It is carrying too much technical debt. The following diagram illustrates the problem:

Feature delivery is depicted as small bars that are increasing in size over time, meaning that it takes more time and effort to deliver each feature. In agile terms, velocity is declining. The decline in velocity relates to the decrease in product adaptability – the ability to adapt and extend the product. If this remains unaddressed, product costs will naturally rise as a consequence. In the scenario above these costs were further increased by adding a maintenance team to the mix. (This is not preferred because the team creating the problems remain removed from dealing with the very problems they are creating and are not incented to change.)

When the product adaptability and product cost lines cross, we have reached a point where it is costing more to work on the product than the value being returned. The product has ceased to be an asset and is now a liability. The only way to derive value is to keep it operational by performing small fixes without adding any new features (“maintenance mode”).

And the explosion at the brick wall? That’s there to illustrate a point that you will reach if technical debt remains unhandled; the point where the developers throw up their hands and declare that it is impossible to add any new feature to the product; if you want to add more, they tell you, than the product needs a rewrite.

The solution to this requires discipline. And I’m not talking about process discipline. High technical debt is present in software systems where there is a high degree of process discipline. Instead on leaning too far in any one direction, agile development strikes a balance between business, technical and process discipline.

The business needs to prioritize what it wants and work in collaboration with the development team(s) to produce a valuable customer outcome. It takes a measured, disciplined approach to define and produce only what is necessary to deliver value in the eyes of the customer, and to do so using a lightweight approach that leverages frequent feedback loops.

Likewise, development teams must be technically disciplined in their approach to produce valuable customer outcomes. Unless it is agreed up front that you are producing a throw-away prototype, the business wants the ability to extend and adapt a product in the future – as quickly as possible; the business does not want to be in a position of paying more and more to get less as time goes on. Despite their desire for features now, greater expense and delays in the future isn’t what they are signing up for, either.

This is what technical pillar is all about.

Practices such as pair programming and test-driven development exist to guide us in keeping the code base clean, which means well-designed, testable, reliable, and extensible. There can be challenges to these practices, some of which were covered directly in previous posts. I’ll quickly cover a couple of major points here.

The scenario above talked about how the team “got out of the gate quickly.” Implementing good technical practices from the outset will be slower than “just getting the code to work.” Any time that you hear the work just, take it as a warning! In this case, “just getting code to work” means that you will be faster early on, but that is all. You will pay for that initial speed repeatedly in terms of greater time and costs to implement additional features in the future.

Another problem with implementing technical practices is that it is impossible to measure how much you saved by taking the time now to keep the code base clean. You can’t measure how much damage you avoided (at best, you would be speculating). Conversely, it is possible to measure the amount of time being spent writing automated tests and refactoring the code. There will be those who will complain that a healthy percentage of time is being spent on those activities instead of implementing new features.

My primary advice is to take the long view – you can measure a team’s velocity, for example. Declining velocity can definitely be a consequence of the code becoming more complex, but it’s always recommended that you adopt the “go and see, and understand deeply” approach as there may be other contributing factors. Routinely running cyclomatic code complexity checks provides a useful gauge on whether the code base is becoming unwieldy. Another revealing indicator is when it is reported that “it takes a long time to get new developers up to speed because the code base is very complex.”

Ultimately, the desired outcome of using these practices it to prevent our software from becoming a liability, allowing us to quickly and easily extend and adapt its behavior to provide greater value to our customers. Technical debt is avoidable, as are the headaches and disappointments that come with that debt.

This post is a draft of content intended for an upcoming ebook: Agile Expectations: What to Expect from Agile Development, and Why. Blog posts will be organized under the “Agile Expectations” content on the left-hand side for easy reference. I welcome your comments and feedback! – Dave Moran


java guy said...

My advice is to not be afraid of throwing much codes in first few iterations, for the sake of keeping code base clean. its a long term investment

November 10, 2014 at 9:24 PM
grails said...

My advice is to make transparency a priority. Just make them know honestly the effects of each decision. And let them feel the effects, do not hide. Such that on later iterations of the project, things will get better when managing their expectations.

Garbage in - garbage out. Not only in computer. But also when doing project. If people put it garbage practice and mentality, the team will only reap headaches

December 18, 2014 at 2:32 AM
Md Rana said...

wearable technologies is exploding world wide. For information, reviews and fun facts about wearable technology, fitbit sleep tracker, best fitness band.

February 6, 2015 at 10:07 AM
kurban rana said...

Great post. Thank you very very much.This article is efficient. Thank you for sharing it with us. I am visiting this blog on a daily basis and I am finding so much helpful article each time.
Keep working on this and thank you once again.Do you know about adultrian.
Click Here: xnxx

February 7, 2015 at 2:35 PM
Abdul Alim said...

Thank you very much for your great article. 'I'm visiting this blog and bookmark this site. I am finding so much helpful article each time. rehab drugs

March 29, 2015 at 7:09 PM
Hạ Thu said...

Thanks for sharing, nice post!
- Võng tự đưa hay thiet bi dua vong tu dong ngày càng trở thành 1 phần của các gia đình Việt. Máy dua vong tu dong nhỏ gọn, tiện lợi, tiết kiệm điện. Võng tự động hay máy đưa võng không những là phương pháp ru con thời hiện đại của các ông bố bà mẹ bận rộn.
- Hiện nay trên thị trường có nhiều loại võng đưa em bé với giá cả và chất lượng khác nhau, việc lựa chọn may dua vong chất lượng, uy tín, giá cả hợp lý là quan tâm hàng đầu của các bậc phụ huynh. Với nhãn hiệu uy tín, sản phẩm vong ru tu dong cho be chất lượng và giá bán phải chăng, may dua vong em be An Thái Sơn tự hào là địa chỉ bán may dua vong gia re uy tín nhất cho bé.
Chia sẻ các bạn kinh nghiệm mẹo giúp trẻ hết biếng ăn hay hay cách nào giúp bé ăn ngon miệng hơn, chia sẻ các bạn bệnh viêm khớp ở trẻ em: Phát hiện sớm tránh tàn phế, bạn cần ăn gì để nhanh liền sẹo cho những vết thương, thực phẩm giải độc gan hay ăn gì để giải độc cho gan, chia sẻ những cách chống nắng cho bé hiệu quả nhất, nguyên nhân và cách chữa trị bệnh rụng tóc ở trẻ em, các mẹ thắc mắc có nên uống collagen khi đang cho con bú hay không, đông trùng hạ thảo và những cách chế biến đông trùng hạ thảo nguyên con, mách các mẹ bí quyết giúp bé ngủ ngon giấc hay nguyên nhân và cách trị chứng mất ngủ ở trẻ em hay chia sẽ những thực phẩm không nên ăn khi thiếu máu não các bạn nên chú ý hay thực phẩm cho người bị rối loạn tiền đìnhngười bị rối loạn tiền đình không nên ăn gì
Chăm sóc da mặt ở
Cách chăm sóc da mặt bằng
Dạy trẻ sơ sinh tại
Bí quyết giảm cân hay tại

June 23, 2015 at 3:14 AM
Yusniar aak said...

I really like this section of the article. with a nice and interesting topic has helped a lot of people who don't challenge things that people should know, You need to publish more of this so many people know about it is rare for people to know this. the success for you..! Let me keep this page.

July 12, 2015 at 12:23 PM
Zohaib Hashmi said...

Nice post. I leaгn something totally new and challenging on websites I StumbleUpon on a daily basis.
WonderShare PDF Editor 3

October 29, 2015 at 3:55 PM
Ayushi Kumar said...

Thanks for the information about this Really nice Post.

Happy Veterans Day thank you quotes sayings

November 4, 2015 at 3:57 AM
Jam Lisvi said...

deli franchise Old New York Deli & Bakery. A place great tasting food & great people meet. A top food franchise to own and fast casual for breakfast, lunch & dinner. Hand made daily,

December 1, 2015 at 9:32 AM
Andrew 1 said...

A math lesson can be taken outside, at 3pm utilizing characteristic assets, for example, a divider and a reverberation to figure the velocity of sound. Concoct your own particular inventive thoughts. maths tuition

February 13, 2016 at 2:13 PM

Child Psychologist and Therapist Psychology Consultants is the best Psychologist and therapist group in Brisbane established in 2003. Visit us to meet world class Child Psychology Consultants in Brisbane area.

February 17, 2016 at 4:58 AM
Ji Yeon said...

Thanks for sharing, nice post!

Chia sẻ các bạn những loại bia bia sagota giá bao nhiêu hay 1 thùng két thì bia sapporo giá bao nhiêu uống bia sapporo co ngon khong hay bia sài gòn xanh giá bao nhiêu giá bia sài gòn special thùng hay bia sư tử trắng bao nhiêu 1 thùng bia sư tử trắng của công ty nào hay về bia tiger bia tiger bao nhieu 1 thung bia tiger của nước nào hay bia trúc bạch giá bao nhiêu bia trúc bạch bán ở đâu hay bia đen đại việt bán ở đâu và bia đen đại việt giá bao nhiêu hay giá bia hơi hà nội bia hơi hà nội ở đâu ngon hay nhẫn bvlgari giá bao nhiêu mua ở đâu hay nhẫn bạc hình con cóc giá bao nhiêu hay bạn thắc mắc thì tham khảo 1 carat kim cương bằng bao nhiêu ly 1 carat kim cương bao nhiêu tiền hay những mẹo mách mẹ mẹo giúp trẻ hạ sốt nhanh ăn nhiều carot sẽ không tốt với bài trẻ ăn nhiều bí đỏ có tốt không hay trẻ ăn dậm với bí đỏ thì sao thì có bài bí đỏ cho trẻ ăn dặm khi trẻ bị táo bón thì trẻ sơ sinh bị táo bón nên uống sữa gì hay sữa nào cho trẻ táo bón với sữa bột dành cho trẻ bị táo bón hay bé hay bị táo bón với bài bé hay bị táo bón nên uống sữa gì các mẹ tham khảo để biết nhé hay thắc mắc giày keds chính hãng giá bao nhiêu để lựa chọn cho mình đôi giày hợp túi tiền nhé.

March 16, 2016 at 11:37 PM
Karan Arora said...

Thanks for providing such a great info, you can see Easter Day Wishes For Him plz like and share this post. Thanks Regards

March 18, 2016 at 7:44 AM
saki said...

thanks for sharing useful information with us its really to get innovative idea. keep sharing.
software testing Training in Chennai

March 24, 2016 at 7:41 AM

Love Games? But, don't wanna waste time downloading it? Why don't browse us and Play Best Online Games for Free.

Arcade Games, Action Games, Puzzle Games, Quiz Games, Girls Games, Kids Games, Sports Games, Mahjong Games, Card Games & Racing Games.

April 3, 2016 at 5:08 AM
Rekhila Pk said...

Nice..Its informative...Its very useful for me to understand..Keep on sharing..
Java Training in Chennai

April 6, 2016 at 7:38 AM
Tammy said...

Limited time. Limited funds. Wonderful.

May 14, 2016 at 5:30 PM
Nainika Joseph said...

Thank you for taking the time to provide us with your valuable information. We strive to provide our candidates with excellent care and we take your comments to heart.As always, we appreciate your confidence and trust in us.

SAP training in Chennai

May 24, 2016 at 8:04 AM
Sanjay Sharma said...

everything you say just makes since. really appreciate all the insight you provide.
Packers And Movers

June 9, 2016 at 3:04 AM
Jhon David said...

Quite Interesting post!!! Thanks for posting such a useful post. I wish to read your upcoming post to enhance my skill set, keep blogging.
Software testing training|Software training|Software testing training in chennai

June 15, 2016 at 6:04 AM
ane semprul said...

This blog is so nice to me. I will continue to come here again and again. Visit my link as well. Good luck
obat aborsi
cara menggugurkan kandungan
obat datang bulan
obat peluntur kandungan
obat aborsi
cara menggugurkan kandungan

July 12, 2016 at 11:58 PM
Jones Sathya said...

Such an informative post,This is really amazing - learned a lot in this single article. such a professional way of explanations.
Best Selenium Training in Chennai | Selenium Training in Chennai

August 18, 2016 at 6:02 AM
Alice Taylor said...

This is also a very good post which I really enjoyed reading. It is not everyday that I have the possibility to see something like this.

monkey go happy| mahjong| yahtzee with buddies| defend your nuts 2 | superfighters 2 | happy wheels| cat mario 4 |bloons tower defense 5 | cat mario |

August 22, 2016 at 3:08 AM
Thanu Abi said...

Excellent incredible blog layout! How long have you been blogging for? you make running a blog look easy. The overall glance of your website is magnificent, let alone the content!

Seo Services in Chennai

August 23, 2016 at 6:14 AM
Miko Bella said...

Thank you for sharing valuable information. Nice post. I enjoyed reading this post.Can you play more games at :
run 2 unblocked | slitherio | atari breakout

August 30, 2016 at 5:07 AM
Jones Sathya said...

Credo Systemz is the Best Selenium Training in Chennai which provides more Practical Oriented Training
rather than theoretical oriented. Best selenium training in chennai | Selenium training in chennai | Best automation training in chennai

September 9, 2016 at 6:03 AM
Jones Sathya said...

Thanks for the information, Useful and interesting. Learned many new things. Keep going
Best selenium training in chennai | Selenium training in chennai | Best automation training in chennai

September 12, 2016 at 6:57 AM
Suman Das said...

The article you have shared here very awesome. I really like and appreciated your work. I read deeply your article, the points you have mentioned in this article are useful
red ball 3 | ninjago games | swords and souls game | strikeforce kitty 2 | geometry dash 2.0

September 26, 2016 at 6:09 AM

nice and really helpful article to everyone... thanks for sharing.
msbi training in chennai

September 27, 2016 at 12:48 AM
Gilbas Baba said...

Inilah Perjalanna Hipertensi Hingga Menyebabkan Kematian

Inilah Perjalanan Hipertensi Hingga Menyebabkan Kematian,

resiko paling parah salah satunya diakibatkan karena penyakit

darah tinggi atau hipertensi yang bisa menyerang siapa saja.

September 29, 2016 at 3:15 AM
Jones Sathya said...

Professional Expert level Android Training in chennai, Android App Development
Android Training | Android App Development | Training in chennai
Professional Expert level Android Training in chennai, Android App Development
Android Training | Android App Development | Training in chennai

October 6, 2016 at 7:00 AM
Jones Sathya said...

Professional Expert level Android Training in chennai, Android App Development
Android Training | Android App Development | Training in chennai

October 12, 2016 at 4:29 AM
Jones Sathya said...

Professional Expert level Android Training in chennai, Android App Development
Android Training | Android App Development | Training in chennai

October 24, 2016 at 5:13 AM

Post a Comment