|
Consider the following scenario: a customer has orders of type A and B and they should be handled (slightly) differently.
You think to yourself, I'm going to apply a strategy pattern with a factory and gracefully handle every edge-case without if-else logic and without the risk of changes to A will affect B and vice versa and where adding C is a breeze and you wouldn't even need to compile or re-deploy the application.
Instead, due to time constraints, you write a simple if-else.
And the code works and nothing changes in the logic for the lifetime of the application and you never see the code again.
Is it technical debt?
Now say you were able to implement your first idea and you're really happy about it, but then they say A has to change, but B too, and we'll add C and D all the way through Z and they change weekly and your code, while it works and follows best practices, becomes unwieldly and impossible for anyone else to understand.
Is it technical debt?
Now let's say you have and if-else branch and C, D all the way through Z are added, but adding another if-branch is easy as pie (though not necessarily best-practice).
Sure, you need to deploy a new version of the software every time, but that's easy as you use best DevOps practices.
Basically, a request for change could be written in a day and most developers would have no trouble adding an if-branch.
Is it technical debt?
I think technical debt is defined by how the code is used, how often it changes (and how easy it is to change), and by the team supporting it.
Sometimes you just know it'll be a problem, sometimes you don't.
Sometimes you'll expect something to be a problem, but it won't (and vice versa).
It's the same as weeds in your garden, it's only weed if you don't want it there (otherwise it's known as a plant, insects love them!).
|
|
|
|
|
maze3 wrote: But can technical debt be observed before hand? Yes. Not to be flippant, but it's like how a car you are buying drops in value the minute you drive it off the dealer's lot. In my opinion, technical debt starts the minute the first line of code is written. It is immediately obsolete because the future will bring a new way of doing things. An example is how Microsoft removed the need to wrap Main in a namespace.
I suppose that's not a good example because the definition, from wikipedia:
Quote: In software development, technical debt (also known as design debt or code debt) is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. is more about your code than the changes in tooling/frameworks. I think the question is, is the quick fix a "simple" change because of a requirements change, or does the the quick fix inform you of a larger structural problem in the code base? Somewhere there's a balance. A one-off fix can later be refactored into a structural change if there is more evidence that a structural change is needed. That my 2c and how I've approached code changes in the past.
[longish story]
As a concrete example, a lot of what I do is write "parcel updaters." This involves taking data in other DB's or CSV files, correlating a record there to the appropriate parcel, and updating the parcel information. Originally, this work was done by others as SQL statements with no logging of errors, like "parcel not found" or of the changes being made. Lots of bugs, no way to figure out what the issue was. I started implementing new parcel updaters in C# with a lot of pre-checks to verify data integrity. It was all C#, and often slow because everything was loaded into memory. At some point, we started dealing with really huge and complicated datasets and I ended up writing SQL queries for things like "missing parcels" and many more complicated queries for parcel contacts, etc. This was really fast, and the insert/updates were still done in C#, but the C# code is now informed by SQL queries that anyone can run to see what parcel updater thinks it should be doing.
Now, am I going to go back and rewrite the existing C# parcel updaters to use this clearly improved process of dumping the CSV or other source into a DB table and writing the queries? No, but it is an example of how, after many use cases where these parcel updaters needed to be written, I've improved the process over the last two years, and frankly, yes, wish I had figured out then what I know now.
[end longish story]
|
|
|
|
|
If you look at the books on software engineering, the thing is that once you reach a level of code and have tested enough with test driven programming and the new devops.. and not to forget documentation and the new buzz words like continuous improvements over the air etc... your product will always be indebted to the people keeping it running.... no more gold master disks and iso's
But can technical debt be observed before hand ?
You have metrics for that in software development ? and you as a program manager need to keep track of such things if so... (google ...How to Reduce Technical Debt in Your Software Development Project?
its usual when a new person comes into a existing project..first think he would like to do is runway..just like the rest of us...
Caveat Emptor.
"Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
|
|
|
|
|
Indeed - possibly the most famous work, the mythical man month, basically says you should plan on throwing one away, but also warns of the second system effect, where you cram in all the things you had to leave out of the first.
|
|
|
|
|
Technical "debt" implies something that has to be paid back. If something is hard to maintain, say so. Doesn't mean it has to be fixed or rewritten. A user can also relate better to an outstanding "bug" report than "technical debt" ("Is he going to fix things or what?")
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
the debt must be paid back in some way by somebody.
I will escape it by changing a new job
diligent hands rule....
|
|
|
|
|
Southmountain wrote: I will escape it by changing a new job The new way of doing friends...
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
I will use some current technical debt. PostgreSQL is an awesome DB system.
But early on, they decided to use FORK() [processes] over threads. It made a lot of things easier.
Now the hard part is that threads are smaller, lighter and don't need as much initialization.
But they also don't work the same. So, if you have a parallel query, they are FORKING a process,
with all that baggage, because it's the easiest thing to do.
But now the number of DB connections become constrained more before you run out of resources.
And what makes it a great example. To change this to use Threads would be a gigantic rewrite,
with a lot of inherent risk and expense. Other tools show up (pgBouncer) to do session pooling, etc.
So you can push this off for a future day. One that may never arrive!
Times change, and older software shows it's age.
Also, I think OpenSource is the right model to view Technical Debt through. If you can add a feature that you are NOT getting paid to add, and there are 2 approaches to handling it. One with obvious technical debt, and the other approach that would take you so much longer that you would abandon the original project over... There's you choice. Now, you can sale both of those options inward towards each other.
And the purpose of the community and the maintainers is to pick a reasonable level of limiting the accumulation of Technical Debt. I believe PG does this pretty well, although I have heard many complain that they will NEVER bother submitting anything because it's just such a long, drawn out, and painful process... And even after jumping through the hoops, the code may never be accepted.
I believe the Point Martin Fowler made was: There is always a level of Technical Debt... And we can choose to build our software in ways that allows us to address it safely! (TDD, etc). He was using this as the Iron Man for test-driven development... And why testing adds confidence, which increases developer productivity.
I think he would chuckle at 100% debt-free code as the goal. Like PG. When will we see the debts? (mostly when things change, or the software becomes WILDLY popular)
|
|
|
|
|
W8 taking strongly contested sport? (13)
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
weightlifting
// TODO: Insert something here Top ten reasons why I'm lazy
1.
|
|
|
|
|
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
You are up tomorrow!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
This crossed my desk today:
A significant testing omission for a new iPhone feature: the rollercoaster test[^].
It may sound funny, but false calls to emergency services are not a joking matter. Responding to calls for help, real or false, places the responder at risk of collisions due to careless and distracted drivers.
__________________
Lord, grant me the serenity to accept that there are some things I just can’t keep up with, the determination to keep up with the things I must keep up with, and the wisdom to find a good RSS feed from someone who keeps up with what I’d like to, but just don’t have the damn bandwidth to handle right now.
© 2009, Rex Hammock
|
|
|
|
|
|
OriginalGriff wrote: Don't know what the situation is in the US ...
It's mandatory in many states. Source: I worked on a eCall/Networking ECU for the NAFTA market.
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
eCall system is great help indeed. Only challenge I have is that the SOS button is right next to hazard and I have to be very careful.
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
OriginalGriff wrote: But Mercedes had it as standard since 2012: Faster help at the scene of an accident: Mercedes-Benz emergency call system[^]
AFAIK GM Onstar has been doing something similar since it was released in 96.
OriginalGriff wrote: Don't know what the situation is in the US ...
After a just severe enough to trigger the air-bags accident a few years ago my '17 Honda refused to power off until the tow person disconnected the battery. Apparently because it was desperately trying to connect to a - since replaced - phone that the sales droid at the stealership talked me into pairing over BT. I found no value in having done so, and never bothered to setup my replacement phone.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
|
|
|
|
|
Pairing my phone is about the first thing I do with a new car, if only to get handsfree.
Over here, touching your phone while driving (i.e. not parked with the engine off) is 6 points on your licence and £200. A full licence is taken away when you reach 12 points, except in the first two years after passing the test when it goes away at 6 points.
I currently have a clean licence, and want it to stay that way - as well as the safety considerations!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Despite the huckstering when it first became available making a call or listening to and dictating texts proved to have equivalent safety penalties, thinking about something other than driving not fondling a slab of glass is the real danger.
Most of the time (probably 98-99% pre-covid, ~90-95% now with my work commute permanently gone) I'm driving my phone is in one of the two safest modes: at home on the desk or in pocket and on silent + no vibrate. The remainder, it's suction cupped to the glass far enough away I couldn't touch it from a normal seated position if I wanted and running a nav app while notifications pile up ignored until I stop.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
|
|
|
|
|
Dan Neely wrote: two safest modes: at home on the desk or in pocket and on silent + no vibrate Same here.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Well, we should also note that geo-fencing an amusement park is NOT that expensive.
But don't worry, in the end 911 will request "remote access to camera and audio",
so they can validate the situation for the safety of the phone owner...
And like e911 in the states, they will add a monthly fee that pays for it to be
developed, and never goes away, so they can continue...
|
|
|
|
|
Never been on a roller-coaster, never wanted to. However if the experience is similar to being in a car crash, I seriously wonder why anyone would want to. I wonder how Kings Island feel about this news?
[Fortunately, I wasn't drinking coffee when reading that the iPhone was in the fanny pack of dentist Sara White. It's a term I'm aware of but wasn't expecting at that moment ]
|
|
|
|
|
A 2.87 trillion dollar company releases a feature that they forgot to write a use case for and test.
Caveat Emptor.
"Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
|
|
|
|
|
Easy to do. Those insurance company "safe driving" software packages missed the fact that most EVs can use engine regeneration to decelerate so fast that the software would record a harsh braking event when the driver had no feet on the pedals.
|
|
|
|
|
obermd wrote: Easy to do. Those insurance company "safe driving" software packages missed the fact that most EVs can use engine regeneration to decelerate so fast that the software would record a harsh braking event when the driver had no feet on the pedals.
And they would be right to do so to the same extent that they're right to do so when you stomp on the brake yourself. Why the car is slowing fast enough to increase it's risk of being rearended doesn't make getting crunched any less likely.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
|
|
|
|
|