Win a copy of Testing JavaScript Applications this week in the HTML Pages with CSS and JavaScript forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Bear Bibeault
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
Sheriffs:
  • Tim Cooke
  • Liutauras Vilda
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • fred rosenberger
  • salvin francis
Bartenders:
  • Piet Souris
  • Frits Walraven
  • Carey Brown

Real-World Software Development:Technical Debt

 
Ranch Hand
Posts: 227
1
Python Ruby Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Dear Authors,
 
In Real-World Development we have many moving pieces , for so long we have been hearing about "Technical Dept " when we
take talk about software development  especially here, this  begs a question, in my opinion "Technical Dept " is a  very vague term
which leads into multiple interpretations What in opinion are the the ""Technical Dept " and are these being discussed in your book?

Thanks
Sundar


   
 
Sheriff
Posts: 15811
264
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I didn't find any reference to technical debt in the book.

Technical Debt as explained by Ward Cunningham was supposed to be a good thing (see the 5-minute video he made). This kind of debt is what some people call "managed" or "intentional" debt. You take shortcuts so you can get some experience with the running software and learn more about it. Then you take what you've learned and "pay it back" into the software so it reflects your new understanding of what you should have done in the first place.

Unfortunately, the term is more often used these days to refer to messy code and designs. This kind of "debt" is sometimes referred to as unmanaged or accidental debt which is caused by poor engineering practice or other factors that increasingly make the code more difficult to work with as time goes by. This is not a very useful way to look at debt, in my opinion. Bob Martin even goes as far as saying that A Mess is not a Technical Debt.

If you keep adding features to software even though you don't fully understand the code, it gets more complex and more difficult to work with. This is like taking out more and more money on a loan without any intent or effort of paying the debt down.

Many people think that the currency of technical debt is quality, that having technical debt means the software lacks quality. In fact, the currency of technical debt is time. The interest you pay is the time and effort it takes to work with the code. With managed debt, you gain the ability to experience and learn from running software earlier rather than later. This is "borrowed" time because you still have to pay it back by refactoring and making the code reflect whatever you learned from the running software. Cunningham explains that it's wise to go into debt this way but it's essential that you keep the code as clean as possible to reflect your current understanding so that it's easy to change the code to reflect your new understanding after you've had some experience with it.

Therefore, code that has technical debt really has a lack of understanding. If you don't manage that lack of understanding, then your debt becomes total and your progress goes to zero (essentially, you go bankrupt).
 
Marshal
Posts: 69869
278
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Junilu Lacar wrote:. . . technical Debt . . . "managed" or "intentional" debt. . . . shortcuts . . .

That sounds like what you use for a branch in your Github for, and then return to your original master.

. . . messy code and designs. . . .

I have heard that one before. It usually sounds like,

I'll sort out the XXX when I've finished everything else.

 
Junilu Lacar
Sheriff
Posts: 15811
264
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Campbell Ritchie wrote:It usually sounds like,

I'll sort out the XXX hen I've finished everything else.


Yup, and "The check is in the mail."
 
Sheriff
Posts: 4870
317
IntelliJ IDE Python Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Later == Never
 
Campbell Ritchie
Marshal
Posts: 69869
278
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In BJ, later means, “After I found I had lost marks and gone from an A to a B for poor formatting,“ or even, “After I found I had lost marks and gone from a scrape pass to a fail for poor formatting“
 
It would give a normal human mental abilities to rival mine. To think it is just a tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic