I had heard of technical debt and understood the idea, but framing it against the financial metaphor made me understand the resolutions a lot better.
J.Ja
Discussion on:
View:
Show:
I, too, had heard the metaphor used, but never gave it too much thought. Thanks to Pete Nathan for getting me to look at it more closely.
I have always heard and explained this as leveraged code. That is continuing to patch the vice opting to rewrite? I could through a certain company OS here, or other demonstrable pieces of software.
I have had many clients who would much rather add a 'chandelier' to their 'ceiling', because the falling ceiling hasn't hit the floor, than put in a whole new ceiling with a nice chandelier!!
I have had many clients who would much rather add a 'chandelier' to their 'ceiling', because the falling ceiling hasn't hit the floor, than put in a whole new ceiling with a nice chandelier!!
As long as it isn't so brittle that your crowbar is going to break right through it.
In fact, a solid code base is a huge asset that most people don't fully appreciate. All that work didn't go in the bit bucket. The trick is to sort out what can be intelligently reused and how.
In fact, a solid code base is a huge asset that most people don't fully appreciate. All that work didn't go in the bit bucket. The trick is to sort out what can be intelligently reused and how.
MS Windows, GNU Screen, and Firefox are examples of software design brought to its knees by cruft -- the inevitable result of deficit spending when already saddled with technical debt. In many cases in the software development world, that technical debt did not actually exist in the original release (for the most part), but was incurred later.
... it's an easy trap to fall into. It's worse if you say "we'll cheat just this once" because then typically nobody remembers to go back and fix it later. It's better to acknowledge the kludge-as-tactic officially, so it gets identified as a to-do later.
There is a balance, and once the balance it over too far one way, there is a problem. Leveraged code, in and of itself, is not a problem. When the leveraged code become a hindrance to change, and costs more to change because of ... then the balance sheet of the software is out of balance.
I just had not heard the term 'technical debt' used to describe this phenomenon.
I just had not heard the term 'technical debt' used to describe this phenomenon.
The point of the metaphor is to realize when you're carrying that burden of unfinished business around.
Tony marches off to see the bean counters with Chip's article under his arm.
Never seen a fiscal argument for addressing technical debt before, loads for not to.....
Course once the debt gets hefty, need cashflow arguments as well.
ie you have just enough to tread water and pay the increasing interest with not enough left over to address the capital that was borrowed.
Never seen a fiscal argument for addressing technical debt before, loads for not to.....
Course once the debt gets hefty, need cashflow arguments as well.
ie you have just enough to tread water and pay the increasing interest with not enough left over to address the capital that was borrowed.
... that the "debt servicing" uses up all available resources. That may be the time to call bankruptcy.
Unfortunately, a sound argument -- even in the other guy's language -- is not necessarily enough. Even if they understand it, many will rebel against it, because they will not want it to be true. It's the same reason many people use software with eight times the TCO of some alternative, even when the alternative's deployment costs are a fraction of the next year's maintenance costs of what's already in place. They don't want the truth; they want to do what they've always been doing.
They might act that way because they made the original decision and don't want to look like they were wrong -- or just because they supported it vocally and don't want to look like they were wrong. They may fall back on the sunk cost fallacy. Many factors may come into play that obscure the simple fact against which you must fight:
A lot of the time, people simply refuse to be convinced, regardless of how compelling an argument you provide, regardless of whether there is any such thing as a counterargument that doesn't sound like complete cockamamie nonsense. If others feel the same way, they can blame it on how pink the sky looked yesterday, and the others will back them up on it.
. . . and if you prove them wrong to someone else, you've just made an enemy.
So, yeah. Be careful.
. . . or don't, if you don't want to. Just be prepared to reap the rewards of disagreeing with people who have a vested interest in maintaining their own ways of doing things -- rewards that may include unemployment if you take it too far.
They might act that way because they made the original decision and don't want to look like they were wrong -- or just because they supported it vocally and don't want to look like they were wrong. They may fall back on the sunk cost fallacy. Many factors may come into play that obscure the simple fact against which you must fight:
A lot of the time, people simply refuse to be convinced, regardless of how compelling an argument you provide, regardless of whether there is any such thing as a counterargument that doesn't sound like complete cockamamie nonsense. If others feel the same way, they can blame it on how pink the sky looked yesterday, and the others will back them up on it.
. . . and if you prove them wrong to someone else, you've just made an enemy.
So, yeah. Be careful.
. . . or don't, if you don't want to. Just be prepared to reap the rewards of disagreeing with people who have a vested interest in maintaining their own ways of doing things -- rewards that may include unemployment if you take it too far.
The motives behind most decisions include factors way outside their ostensible goals. We can't always know what they are, but we can always stay on the lookout for evidence of their influence.
Ultimately, it all boils down to motivational dishonesty. People hide their motivations and try to "get over", "get away with something", or generally circumvent others' desires. I find it incredibly offensive, especially given that it tends to suffuse all of colloquial discussion for most people.
In another discussion somewhere on TR, AnsuGisalas tried to excuse that kind of behavior by way of some hand-wavy BS about the English language's purpose being to "communicate social values", and I when I disputed that with the statement that the (honest) communication of ideas is more important, he hand-waved the distinction away by talking about (no qualifier) values, and basically called me a bad person for failing to operate under the same rules of euphemism, dissembling, and misdirection as everyone else. He flat-out stated that I am denying others their "right" to my communicating with them in the same deceptive language they use (though he, of course, euphemizes the word "deception" out of it).
This is the kind of cockamamie nonsense that makes the "factors way outside their ostensible goals" the real driving force in business, as in everything else. People are justified in their manipulative behavior toward others, their politicking and backbiting, by people like AnsuGisalas, and somehow anyone who takes an honest stand in how he or she communicates becomes the bad guy.
I guess that makes it okay to fire someone for pointing out why the company is going out of business, and promote people who just reaffirm the goodness of the choices that drove the company ten steps closer to bankruptcy so they can maybe eke out another ten steps closer to bankruptcy.
edit: typo
In another discussion somewhere on TR, AnsuGisalas tried to excuse that kind of behavior by way of some hand-wavy BS about the English language's purpose being to "communicate social values", and I when I disputed that with the statement that the (honest) communication of ideas is more important, he hand-waved the distinction away by talking about (no qualifier) values, and basically called me a bad person for failing to operate under the same rules of euphemism, dissembling, and misdirection as everyone else. He flat-out stated that I am denying others their "right" to my communicating with them in the same deceptive language they use (though he, of course, euphemizes the word "deception" out of it).
This is the kind of cockamamie nonsense that makes the "factors way outside their ostensible goals" the real driving force in business, as in everything else. People are justified in their manipulative behavior toward others, their politicking and backbiting, by people like AnsuGisalas, and somehow anyone who takes an honest stand in how he or she communicates becomes the bad guy.
I guess that makes it okay to fire someone for pointing out why the company is going out of business, and promote people who just reaffirm the goodness of the choices that drove the company ten steps closer to bankruptcy so they can maybe eke out another ten steps closer to bankruptcy.
edit: typo
"I guess that makes it okay to fire someone for pointing out why the company is going out of business, and promote people who just reaffirm the goodness of the choices that drove the company ten steps closer to bankruptcy so they can maybe eke out another ten steps closer to bankruptcy."
I have seen this so many times. I've come close to it myself once or twice. People accuse you of having a bad attitude... because you are telling the truth. Yes, an overly pessimistic attitude brings down morale. And yes, offering criticisms or predictions of doom without also offering solutions (beyond "stop being stupid") is not very helpful. There's a way to go about this. But all the same, I've seen that most places just can't bear to have someone telling the truth about their mistakes. It makes the leaders look bad, because even if they didn't make the decisions, they didn't stop bad decisions from being made. I've learned that as soon as its obvious that criticism is not tolerated, it's advisable to leave rather than stick around and wait for the ship to sink. I guess the mediocre have to stay around, but I'm not mediocre. My job prospects and self-employment abilities are sufficient to ensure that I don't have to stay in a horrible situation for terribly long.
J.Ja
I have seen this so many times. I've come close to it myself once or twice. People accuse you of having a bad attitude... because you are telling the truth. Yes, an overly pessimistic attitude brings down morale. And yes, offering criticisms or predictions of doom without also offering solutions (beyond "stop being stupid") is not very helpful. There's a way to go about this. But all the same, I've seen that most places just can't bear to have someone telling the truth about their mistakes. It makes the leaders look bad, because even if they didn't make the decisions, they didn't stop bad decisions from being made. I've learned that as soon as its obvious that criticism is not tolerated, it's advisable to leave rather than stick around and wait for the ship to sink. I guess the mediocre have to stay around, but I'm not mediocre. My job prospects and self-employment abilities are sufficient to ensure that I don't have to stay in a horrible situation for terribly long.
J.Ja
at a certain point though being right doesn't matter. How well you present it doesnlt matter. Once they get into skipping round the desk, fingers in ears, singing la la, la la mode
Leave immediately.
if you can of course...
Leave immediately.
if you can of course...
... is to facilitate open communication while at the same time keeping people from becoming despondent. It's mostly a people job, not a technical one -- which is why I got out of management as soon as I could. Computers are much easier to direct.
In theory, that is absolutely correct.
In practice, I think it is increasingly becoming something more like:
"Serve as a shield for the good workers you manage against the bad behavior of your superiors."
In practice, I think it is increasingly becoming something more like:
"Serve as a shield for the good workers you manage against the bad behavior of your superiors."
Most people are not aware of 90% of their own motivations. I'd also bet that 90% of the people you characterize as liars would be both offended and genuinely puzzled by that characterization.
I find it difficult to excuse willful ignorance, which is what leads some of that majority to its deceptions, though.
. . . but yeah, a lot of people aren't even aware they do it. If confronted with someone who doesn't do so, though, the tar and feathers often come out no matter why they behave the way they do.
. . . but yeah, a lot of people aren't even aware they do it. If confronted with someone who doesn't do so, though, the tar and feathers often come out no matter why they behave the way they do.
what I'm wondering is how you can justify this public dismemberment of AnsuGisalas for something he said "in another discussion somewhere on TR"
At a minimum, you could quote what he said in proper context; better yet, leave it for that "other discussion."
I'm calling a foul.
At a minimum, you could quote what he said in proper context; better yet, leave it for that "other discussion."
I'm calling a foul.
Why should I care what you're doing? I don't recall you ever saying anything remotely relevant to me that displayed anything but contempt and hostility.
because there's a subtext of morality and ethics in a lot of your commentary, and that bit about Ansu is antithetical to all of it; it's not about what I'm doing, it's about what you're doing that you should care about
Antithetical? I don't think so. I simply referred to public comments by someone else. You probably wouldn't have thought twice about it if I referred to something George Bush had said (to pick an example out of the ether).
I hadn't noticed that one... not that I think I'll respond, it seems Chad has something bothering him elsewhere, and I don't care to be a lightning rod.
FYI : What I said to him amounted to telling him why I think he's going into bankruptcy
FYI : What I said to him amounted to telling him why I think he's going into bankruptcy
should I rather just think you're being an ass for no reason?
Coz, you really really are being an ass. Please cut it out.
You stepped over the line above, and I could tell you things about yourself that you really don't need to hear. Because - unlike you - I pay attention.
Coz, you really really are being an ass. Please cut it out.
You stepped over the line above, and I could tell you things about yourself that you really don't need to hear. Because - unlike you - I pay attention.
I think I'll run away now.
edit: Wait, hold up.
If you think you really have some insights to offer, I'd love to hear about it. Why don't you PM me?
I frankly suspect you're blowing hot air up my skirt, but contact me via "peer mail" as they call it (or use my contact page at blogstrapping if you prefer) if you really have something to offer (or at least think you do). I promise I will neither confirm nor deny receipt of something here, to protect your reputation amongst those who still harbor illusions of your righteousness after you bushwhacked me elsewhere for the capital crime of honesty.
edit: Wait, hold up.
If you think you really have some insights to offer, I'd love to hear about it. Why don't you PM me?
I frankly suspect you're blowing hot air up my skirt, but contact me via "peer mail" as they call it (or use my contact page at blogstrapping if you prefer) if you really have something to offer (or at least think you do). I promise I will neither confirm nor deny receipt of something here, to protect your reputation amongst those who still harbor illusions of your righteousness after you bushwhacked me elsewhere for the capital crime of honesty.
*bushwhacked* you?
Well, if that's the case, obviously you're entitled to go bleeding grievances all over the place...
But honest to God, if I *bushwhacked* you, I completely failed to notice doing so, sorry.
As for PMing you, it would have to be for the purpose of helping you do what you try to do - and I'm not, now, sure if that's worth my trouble. I'm afraid I'm coming to the conclusion that you're beyond reach, and that saddens me.
Let me know when/if you get over this, I too, am PM-able.
Well, if that's the case, obviously you're entitled to go bleeding grievances all over the place...
But honest to God, if I *bushwhacked* you, I completely failed to notice doing so, sorry.
As for PMing you, it would have to be for the purpose of helping you do what you try to do - and I'm not, now, sure if that's worth my trouble. I'm afraid I'm coming to the conclusion that you're beyond reach, and that saddens me.
Let me know when/if you get over this, I too, am PM-able.
You promise secrets, but won't reveal them. You call me a bad person for preferring a straightforward means of communicating, and claim pure innocence. You try to psychoanalyze me over the Internet, casting aspersions on my powers of reason, then claim I'm the one beyond help.
What would I have to say to you in a PM after all of that? Are you inviting me to scream obscenities and other imprecations at you? I have no interest in pursuing a private screaming match with you, which is the only possible response to you that seems appropriate right now, given nothing further to go on other than your contempt.
. . . so keep your contempt, if you must. You're the one who claims to have some secret insights that might shed some light on your judgmentalism toward me; I never claimed to have anything of the sort to say to you. I have no reason to contact you just to get more contempt in private.
What would I have to say to you in a PM after all of that? Are you inviting me to scream obscenities and other imprecations at you? I have no interest in pursuing a private screaming match with you, which is the only possible response to you that seems appropriate right now, given nothing further to go on other than your contempt.
. . . so keep your contempt, if you must. You're the one who claims to have some secret insights that might shed some light on your judgmentalism toward me; I never claimed to have anything of the sort to say to you. I have no reason to contact you just to get more contempt in private.
You came at me in that other thread - Calling me all sorts of things.
I did not retaliate in kind, but instead tried to show you how your "linguistic policy" is holding you back as an educator.
I had surmised as much, but I did not assume this apparent policy to be true until you yourself said it was so - I find no pleasure in labeling others.
I can accept that you did not want to hear what I had to say.
I can tolerate the immaturity of your bringing me up as a school-example of crookedness in this thread.
I cannot, however, let your one-sided judgments continue, like this.
You are a blogger at this site. Do you have any idea how it looks that you single out a private person for defamation, as you have?
Do you think you have a right to blab your judgments on my character
everywhere, simply because I took the effort to point out a flaw in your thinking? I did not bushwhack you. I never showed contempt of you, but I certainly think you showed contempt of me.
Stop this, it's unprofessional, and frankly - your purpose in this is a mystery. I cannot see how it serves you. You're hurting only yourself.
The thing is, I really don't give a rats ass about what evils you claim to see in me. I just don't wish to be the instrument of your self-destruction.
I did not retaliate in kind, but instead tried to show you how your "linguistic policy" is holding you back as an educator.
I had surmised as much, but I did not assume this apparent policy to be true until you yourself said it was so - I find no pleasure in labeling others.
I can accept that you did not want to hear what I had to say.
I can tolerate the immaturity of your bringing me up as a school-example of crookedness in this thread.
I cannot, however, let your one-sided judgments continue, like this.
You are a blogger at this site. Do you have any idea how it looks that you single out a private person for defamation, as you have?
Do you think you have a right to blab your judgments on my character
everywhere, simply because I took the effort to point out a flaw in your thinking? I did not bushwhack you. I never showed contempt of you, but I certainly think you showed contempt of me.
Stop this, it's unprofessional, and frankly - your purpose in this is a mystery. I cannot see how it serves you. You're hurting only yourself.
The thing is, I really don't give a rats ass about what evils you claim to see in me. I just don't wish to be the instrument of your self-destruction.
There you go again -- casting aspersions while claiming to be innocent of them.
. . . and you didn't just say my "linguistic policy" was holding me back. You judged me as a person for my "linguistic policy".
Now you're calling me a liar, too, for having the gall to refuse to accept such judgment for a policy of honesty. Orwell would love you.
I'll make you a deal: you drop the subject, and I will too.
. . . and you didn't just say my "linguistic policy" was holding me back. You judged me as a person for my "linguistic policy".
Now you're calling me a liar, too, for having the gall to refuse to accept such judgment for a policy of honesty. Orwell would love you.
I'll make you a deal: you drop the subject, and I will too.
You are a bully. I don't make deals with bullies.
How did I judge you as a person?
You attacked my character, judged me as a person - sure, but how did I attack you? How did I judge you as a person?
I'm fed up. But I will not let you off the hook. Say what your beef is.
What's your problem, man? Can I help you, somehow?
How did I judge you as a person?
You attacked my character, judged me as a person - sure, but how did I attack you? How did I judge you as a person?
I'm fed up. But I will not let you off the hook. Say what your beef is.
What's your problem, man? Can I help you, somehow?
You call me a bad person, claiming I'm violating people's rights by refusing to play games with euphemisms and passive-aggressive deceptions -- and you pretend you don't know how you judged me as a person.
I don't buy it.
I don't buy it.
... figuring out what was the original offense that led to this highly emotional, um, discussion (for lack of a better word). I'm not asking for any explanation. I'd rather see it dropped -- but since I believe in freedom of expression I'll say instead: continue if you must, to your own discredit.
Should've probably taken this off-line... but then, that's where it started, I guess. I felt very bad about my name (however virtual that name is) being taken for a joyride, so I guess I overreacted.
For Chad. I didn't mean to mortally offend you, I certainly didn't notice doing or saying anything to that effect.
But then, the ownership of the grievance lies with the aggrieved. If you feel that you've been bushwhacked, then that's how you feel.
I can't promise you that won't happen again, because, I really didn't notice doing or saying anything especially powerful.
If you take offense at what I say, I'd recommend telling me openly about your feelings, it will be - I promise - much more effective than storming off in a huff and putting my nom de plume in the gutter somewhere in the distance.
For Chad. I didn't mean to mortally offend you, I certainly didn't notice doing or saying anything to that effect.
But then, the ownership of the grievance lies with the aggrieved. If you feel that you've been bushwhacked, then that's how you feel.
I can't promise you that won't happen again, because, I really didn't notice doing or saying anything especially powerful.
If you take offense at what I say, I'd recommend telling me openly about your feelings, it will be - I promise - much more effective than storming off in a huff and putting my nom de plume in the gutter somewhere in the distance.
I told you when I took offense. You blew it off.
I told you I wanted to stop this. You blew it off.
If you're ready to stop now, I won't blow it off.
I told you I wanted to stop this. You blew it off.
If you're ready to stop now, I won't blow it off.
on release, in fact incurring the debt is quite probably a condition of release.
Now if you don't pay it off and then borrow more for version 1.1, 2 , 2.4 and 3, then that little improvement that would have taken a week or so becomes a total rewrite.
Now if you don't pay it off and then borrow more for version 1.1, 2 , 2.4 and 3, then that little improvement that would have taken a week or so becomes a total rewrite.
I am consistently seeing people replying in the wrong spot on the new design, on the old design it was fairly rare.
J.Ja
J.Ja
... just jump down to the comment form, without clicking the appropriate "Reply" link first. Others might object, but I'd prefer that the comment form remain hidden until you click the "Reply" link -- and then perhaps there could be a separate link for "Reply in new thread".
... which is why it needs to be part of the plan, instead of being swept under the rug as something that doesn't happen.
I'm pretty sure I replied to Tony on the previous one.
Standing before the board reporting how you spent their money, and having to say we missed that, bodged this and screwed up those, well bad for the career.
There are people who want to apply get it right first time to software, disappointingly many of them are IT managers.
Or clueless numpties, it's often hard to tell the difference
There are people who want to apply get it right first time to software, disappointingly many of them are IT managers.
Or clueless numpties, it's often hard to tell the difference
is that you must have perfect knowledge of requirements in advance. In the real world, those requirements move. Nevertheless, nowhere more than in IT is it important to 'do it right the first time' as often as you can.
One of the causes of this problem, I think, is the fact that we have progressed from designing tools that each perform one task well, chaining them together as needed to produce more complex automated task workflows, to developing highly complex integrated tools that duplicate a lot of functionality found in other highly complex integrated tools. It's much easier to get it right the first time when you're writing wc . It's not so easy when you're trying to incorporate a word-count feature into MS Word.
. . . and yet, I was just recently involved in a discussion on a Linux User Group mailing list where someone tried to claim that the amount of code in a project has literally no effect on project maintainability. Of course, the people who make such claims are the same idjits who seem to think we can "get it right the first time" when writing an application the size and complexity of an entire office suite from the ground up in under two years, with a team of four hundred (not strictly concurrent) developers.
. . . and yet, I was just recently involved in a discussion on a Linux User Group mailing list where someone tried to claim that the amount of code in a project has literally no effect on project maintainability. Of course, the people who make such claims are the same idjits who seem to think we can "get it right the first time" when writing an application the size and complexity of an entire office suite from the ground up in under two years, with a team of four hundred (not strictly concurrent) developers.
I think I'd have to squint real hard (as in shut my eyes) to agree with that even though we differ somewhat on our definitions of complexity.
The more code there is means it either does a lot of things, or it does the same things lots of ways, neither of which are aids to comprehensibilty and therefore maintainability.
I suppose you could come up with some theoretical situation where it might be true, and probably some abtruse piece of mathematics to prove it, in the vast majoroty od cases in the real world, such a contention is at best wishful thinking.
The more code there is means it either does a lot of things, or it does the same things lots of ways, neither of which are aids to comprehensibilty and therefore maintainability.
I suppose you could come up with some theoretical situation where it might be true, and probably some abtruse piece of mathematics to prove it, in the vast majoroty od cases in the real world, such a contention is at best wishful thinking.
To that I'd respond: show me that project.
I try not to do it really badly instead.
If I'm allowed....
I'll be happy to 'go back' to getting it right first time. Once we have unambigous agreed definitions of it and right, and enough time to do it, and of course neither of them are going to change.
Should be shortly after me being adopted by Bill Gates as his heir and my marriage Cheryl Cole...
If I'm allowed....
I'll be happy to 'go back' to getting it right first time. Once we have unambigous agreed definitions of it and right, and enough time to do it, and of course neither of them are going to change.
Should be shortly after me being adopted by Bill Gates as his heir and my marriage Cheryl Cole...
between 'doing it right' and 'capturing the business logic correctly'. The latter obviously amounts to meeting the actual project requirements, and usually entails multiple phases of delivery (just typed 'devilry' by mistake, whoops - how Freudian) and testing by the client. Anyone with development experience will tell you that 'meeting the spec correctly' often does little but satisfy a need that was incompletely defined, or has drifted in the interim while you were developing the solution. You might even have enough for sign-off but you are unlikely to have met all the client's actual expectations.
If you ask me, 'doing it right' is a measure of which of the myriad ways you chose to solve the necessary problems as you perceived them at the time. I'm speaking of the age old question of when a piece of software is complete - 'when it compiles' being the classic misinterpretation of this concept. I frequently find I've cobbled together something that compiles and even does the job correctly, but needs rationalising into a properly delineated application.
Whether this means commenting, refactoring, assembling proper classes, or simply tidying your first clumsy attempts to use a new technology or feature after a few months experience, there is much that can be done to improve the efficiency and - dare I say it - elegance of the code. This is what reduces the ongoing support and extension burden for future work.
If you ask me, 'doing it right' is a measure of which of the myriad ways you chose to solve the necessary problems as you perceived them at the time. I'm speaking of the age old question of when a piece of software is complete - 'when it compiles' being the classic misinterpretation of this concept. I frequently find I've cobbled together something that compiles and even does the job correctly, but needs rationalising into a properly delineated application.
Whether this means commenting, refactoring, assembling proper classes, or simply tidying your first clumsy attempts to use a new technology or feature after a few months experience, there is much that can be done to improve the efficiency and - dare I say it - elegance of the code. This is what reduces the ongoing support and extension burden for future work.
.. and there are probably other finer distinctions we could draw within the many meanings of "doing it right". Certainly, we developers can create the tightest, most elegant implementation, but if it doesn't meet the client's need they will consider it "wrong" -- even if the lack of specification of their need is none of our fault. Conversely, it can do everything the client wants, and still be "wrong" from the perspective of maintainability.
- Keyboard Shortcuts:
- Prev
- Next
- Toggle

































