TrainingConferencesAbout UsContact UsAdvertiseSQE.com

StickyMinds.com: brain food for building better software

Join

Join

Clarify Your Search Criteria
Tips on Using Our Search Feature(s)
StickyMinds.com Home
ResourcesEventsTopicsPowerPassJobs
Software Testing & QA Online Community  >  Detail: What Testers Can Do about Technical Debt



A StickyMinds.com Original
Article Picture
What Testers Can Do about Technical Debt
Part 1

By Johanna Rothman

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: Is your company drowning in debt? No, we don’t mean the fancy fleet of cars that aren’t paid for, or the new artwork in the lobby bought on credit—we’re talking about technical debt. In this week’s column, Johanna Rothman has a few tips on how to recognize technical debt in your organization.

Editor's Note: Come back next week for part 2 of this column.


Tricentis
Technical debt is the unfinished work your organization owes your product. It comes in varieties: requirements debt, design debt, and testing debt. It causes the developers to have trouble finding and fixing defects, and causes testers to have trouble knowing how and what to test.

You may be working in an organization where technical debt is an intentional choice, in exchange for gaining the benefit of time or resources. However, if the debt is hidden, by not collecting metrics, managers can play the "pass the hidden debt" game, hoping to drop it into someone else's hands before interest comes due. Keeping the debt visible helps keep the level of gaming down.

Recognizing Technical Debt
If you’re a tester, how can you recognize technical debt? Look for indicators like these:

  • As soon as the developers fix one defect, five more previously unknown defects pop up.
  • Testing time increases disproportionately to the development time.
  • Your developer to tester ratio is 1:1, and you still don’t have enough testers because you’re sure you haven’t fully tested the product.
  • Developers start talking about re-architecting or redesigning the product. If the design debt is overwhelming, the developers start saying things like, "Nope, I’m not touching that. That’s a feature, not a bug. If you want me to fix that, I’ll have to re-architect the product."
  • Developers refuse to touch a part of the product saying, "No one but Fred can touch that. I know Fred left three years ago, but no one else can work on it, because we don’t understand it."
  • Your developers threaten to leave because all they do is "maintenance."
  • Developers and testers become experts at crisis management, spending more time supporting current customers—solving customer problems, fixing defects, verifying the fixes, and answering customer questions—than they spend developing and testing the product scheduled for release next month.
  • You’re putting out point releases or patches weekly or daily.
  • You can’t decide what not to test, because the risk of not testing everything, even for a point release, is too high.
  • You ship the product not because it’s ready, but because everyone is too tired to continue the crunch mode you’ve been in.
  • You stop testing because you don't want to find more defects.
  • Your cost to fix a defect continues to increase, from release to release. (If you’d like to see a picture of this dynamic, check out Weinberg’s Quality Software Management, Volume 4).

Taking a Closer Look
Are you seeing signs of technical debt? If you suspect you’re floundering in technical debt, take a few measurements to see if you can make sense of the data. The following table shows data I gathered from one project. I looked at the state of the product on a quarterly basis, counting the total number of lines of code. (We used the Unix command, wc –l recursively over all the code in the branch on the specific date.) When taking gross measures, LOC is appropriate because it gave us insight into what was happening in the project. For other measurements, LOC is not appropriate.

Aside from LOC, measure the Fault Feedback Ratio, the FFR. To measure FFR, we took the defect data from the bug-tracking system, and for that date, we measured the number of bad fixes to the total number of fixes. We also determined the cost to fix a defect pre-release.

To measure cost to fix a defect, we tracked all the defects for the release, and took the average cost to fix. See my previous column "What Does It Cost to Fix a Defect?" for more information on how you would calculate the cost to fix a defect.

Date

Size in LOC

FFR (this week only)

Average cost to fix a defect, pre-release

1/1

425,000

14%

1 person-days

4/1

800,000

16%

3 person-days

7/1

1,500,000

12%

2 person-days

10/1

2,000,000

18%

3 person-days

It’s always tempting to jump to conclusions from looking at the data. Don’t. Probe and ask questions to make sure you know what the data really means. For example, the code size increased almost 50 percent each quarter. Do I think the developers are capable of writing that much high-quality code? What did the developers do, to generate that amount of code? Did they leave experiments (rejected designs) in the code? Did they hire more people? Did they use a code generator? If you’d like more guidance on what you should expect for increases in code size, see Capers Jones’ book, Software Assessments, Benchmarks, and Best Practices.

In this case, it turns out that instead of re-architecting the code to account for new knowledge and changes in requirements, the developers were cutting and pasting code all over the system. The system was bloated, and every time the developers had to make a fix in one place, they had to remember the forty-seven other places to fix.

Then I look at the FFR. Does it make sense? What makes the FFR go up or down? In this case, the FFR started high, and aside from the third quarter, continued to go up. What happened in the third quarter to make the FFR go down? In the third quarter, one development team re-architected one small module that was originally a huge source of defects. With the new version, the total number of bad defects went down and the cost to fix a defect went down. They had paid off some of the "debt," so now they were paying less "interest" on the debt. You may also want to look at FFR by subsystem or module, to see if one subsystem or module is causing much of the defect-fixing pain.

The cost to fix a defect for this organization is extremely high. If the developers and testers find twenty defects a day, then they generate about sixty days’ worth of work for every day of testing.

Let me know your thoughts on technical debt. My next column will provide pointers for diagnosing and decreasing the debt.

Acknowledgements
I thank Esther Derby, Dale Emery, Dave Smith, and Jerry Weinberg for their review on this column.



About the Author
Johanna Rothman observes and consults on managing high-technology product development, looking for the leverage points that will make her clients more successful. Johanna was the Conference Chair for the Software Management (SM) Conference in February, where she conducted a management-improv tutorial and participated in a panel discussion of mentoring and manager making. She recently co-moderated a RoundTable discussion “Making the Transition to Management” with Esther Derby. You can reach Johanna at jr@jrothman.com or by visiting www.jrothman.com. For more information about analyzing job candidates, you can refer to Johanna’s upcoming book Hiring Technical People.

Back to Top
 

StickyMinds.com Weekly Column From 8/19/02 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Arthur Royce 12/18/2002

You just described the company that I work for. I recently transferred from one division to another in part for this very reason. Despite a poor tech economy we still see high developer turnover, yet "stop testing" becomes the management directive to address quality. Then more people are assigned to maintenance activities and customer service continues to plummet. This is followed by lots of lame excuses, blame shifting, etc.

 
 
Comment:    
by Rob Macpherson 8/22/2002

How true the Technical Debt is!! Amazing to see that so many occurances of this occur in so many different organisations and projects. The one that sticks (no pun intended) out the most is the release of patches !!

Author's Response:
8/23/2002    
Rob, I certainly have a love/hate relationship with patch releases. I understand the need for releasing (it's a business decision, and we'll deal with the cost of a patch later). However, I get irritated, angry, and frustrated when I have to manage patch after patch after patch...for the same release. Then, the cost of patches is so high that it's almost never been worth the risk of releasing the software when we released it.

 
 
Comment:    
by gavin heck 8/20/2002

Johanna, These 2 lines in sequence brought a rare smile to my face "Editor's Note: Come back next week for part 2 of this column. Technical debt is the unfinished work your organization owes your product" Too frequently "part 2" and "next week" become a Sword of Damocles that cause us to be unable to fearlessly move on to the next project, as concern of that left undone will come back to us with untoward consequences. J Gavin Heck QA Lead review.com

Author's Response:
8/20/2002    
Gavin, when I wrote this column, I knew it was too long, but I didn't want to leave you folks with just the symptoms of technical debt. However, my fabulous editors Robert Coutre and Pam Young, helped me organize the column so you could receive some benefit from each piece :-) We'll see if we have untoward consequences...

 
 
Comment:    
by Robert E. Lee 8/20/2002

I would worry that if they started with a 425 KLOC package and expanded it to a 2,000 KLOC package, their expected pain will increase around order N-squared - with about a 5-fold increase, that's nearly 25-fold pain! As things grow linearly, the effort grows with the square - searching for a remembered line or lines, finding all calls into something, etc. This project's growth has that cancerous look! Of course, without the expectation baseline, I may be looking at an expected 2,000 KLOC system built from scratch, but I'd guess not by the shape of the growth. As you suggest, using Pareto analysis of the top fault/fix targets would suggest...Read On

Author's Response:
8/20/2002    
Bob, it sure looked to me as if they had 25-fold pain. They have a plan to refactor and rearchitect and remove all the cut/pasted code. This particular organization has technical debt in two significant areas: requirements and design. They created functional requirements only, with no thought to the variety of users and system attributes (something they could have remedied easily with use cases). And, they never designed in the large, only in the small, for a specific requirement. If, as in XP, they had refactored when implementing new requirements, that would have been ok, but they chose never to see how all the pieces fit together.

 
 
Comment:    
by pradeep sathya 8/20/2002

Testers to Developers Ratio 1:1. What if the Ratio is 1:4, then the whole scope changes.. How do we handle the crisis now ?

Author's Response:
8/20/2002    
Pradeep, if there are fewer testers, then you can only test what you can test. The risk of fewer testers is that more defects will escape your detection. Of course, that's the risk with more testers if the developers do crummy work. Elisabeth Hendrickson's paper, "Better Testing, Worse Quality?" is a wonderful paper to read to discuss the risks of more testers. As a tester, you can only test what you can do. Use the project risks to guide where and how deep to test, and explain the risks of not testing more.

 
 
Comment:    
by K Narayanan 8/20/2002

How True ! Patch work fixes have always been a tester's delight ( nightmare at times ) and invariably they tear apart at the seams. Sometime the tester ( as a former developer ) know the implementation is technically faulty , Alas ! they have no role play in mentoring the Development Manager. In such circumstance , I guess the testers should provide adequate hints informally to the developer ( Take care of Developer's Ego ). These issues go unnoticed when the application is tested by Business Expert ; they care less if performance , implementation - report format is all that concerns them. Explanation heavily loaded with technical lingo...Read On

 
 
Comment:    
by Srinivasan Desikan 8/19/2002

Good article. I am impressed with the list of indicators. These indicators are those which come very late in the product cycle. May be the author can add some (proactive) indicators sothat they can be recognized and solved wothout much impact on quality & release frame. Some of the indicators in my mind are; 1. No clear picture on the list of requirements that will be met and corresponding schedule. Test engineers not aware of how to test some of the requirements (testability). Hence no agreement on testing schedule between dev & test teams... 2. Absolutely no idea on how many defects that will come out of testing. Only if you know...Read On

Author's Response:
8/20/2002    
Srinivasan, when I meet developers who don't want to touch an area of code, that's usually closer to the beginning of the project. Developers may start talking about rearchitecting anytime in the project, not just at the end. The problem with detecting technical debt early, is unless you're doing things to *prevent* technical debt, you can't proactively see it. I disagree with your remark about knowing that you have few defects will allow you to predict how long it will take to fix them. I know of numerous organizations who've looked at their defect histories, and say things such as: we tend to find x defects per y lines of code. An average defect takes us z hours to fix, we'll schedule that much time for fixing defects. As a first approximation, it's not bad.

 
 
Comment:    
by Joe Strazzere 8/19/2002

Nice article Johanna! And "Technical Debt" is a nice term - one I haven't seen used before. I (and I suspect many others) have seen these symptoms way too often.

Author's Response:
8/20/2002    
Joe, Dave Smith first talked about technical debt during a private meeting. I believe Gerald M. Weinberg first discussed design debt in his _Quality Software Management_ books, but I haven't checked the references. I thought the term captured what many of us have experienced but not discussed enough.

 
Back to Top



 
Ads By Google
What's This?
 
 



About Us   |   Contact Us   |   Terms & Conditions   |   Privacy Policy   |   RSS Feed



© 2013 StickyMinds.com. All rights reserved.
ASTQB

Tricentis



Agile Development Conference & Better Software Conference West