this post was submitted on 31 Mar 2026
173 points (99.4% liked)

Programming

26316 readers
908 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

A client’s team spent a full week adding a CSV export to their admin panel. Two engineers, clear requirements, maybe a day of actual work. The rest of the time went to understanding existing code well enough to change it safely. That’s what I call codebase drag: when the codebase makes every task take longer than it should. It doesn’t show up in any dashboard or sprint report.

you are viewing a single comment's thread
view the rest of the comments
[–] FrederikNJS@piefed.zip 132 points 1 day ago (2 children)

"Codebase drag" formerly known as "technical debt".

[–] panda_abyss@lemmy.ca 62 points 1 day ago (4 children)

Oh hey, next sprint we’re going to work on that!

Oh, there’s a feauture request from sales you say? Hard due date of Thursday? But that’s a really big feature we can’t just… okay fine, but the next sprint we’re need to work on tech debt.

[–] chuckleslord@lemmy.world 29 points 1 day ago

When developing code for first release, we had a dedicated HIP Sprint (Hardening, Innovation, Planning) and we had the most productive team in the company. Other teams were struggling cause they were just using the HIP as another Sprint. So what did we do? Got rid of the HIP, naturally. You see, some teams weren't using it and it's unfair to those teams that we're not doing work when they are. Now everyone's suffering!

Also had legitimate agile practices (budgets are for HR, work on what you need to work on and let someone else worry about paying for it) and we were the most productive team in the company. So, naturally, they need to get a bunch of C-suite guys to come over and run things cause it would be really embarrassing for them if they weren't involved in the new hotness. Naturally, though, we gotta go back to funding buckets, cause those c-suite guys don't understand why they got to talk to the developers when they want something fixed instead of handing things down from on high. Oh no! Suddenly all these issues are popping up in the workflow, guess we gotta force in ai to fix the problems.

[–] Shirasho@lemmings.world 21 points 1 day ago (1 children)

Last place I worked we were promised a sprint where all we would do is tech debt fixes. Guess what never happened since the top brass kept pushing new feature requests on us. Features kept taking longer and longer to implement and every release we had more and more bugs make it into production.

[–] atzanteol@sh.itjust.works 5 points 1 day ago (1 children)

Well, yeah - that never happens. You do tech debt cleanup "as you go". Slip in a few tickets to cleanup specific things and have a policy to update code that is touched when adding features / fixing bugs.

It needs to be a continual cleaning process. That's why it's called debt - the longer you let it go un-paid the harder it is to do.

[–] jtrek@startrek.website 4 points 21 hours ago

I suggested at my current job that we adopt a policy of fixing things as we go. Boss wasn't interested. He said his boss said "he doesn't want people gold plating things".

Okay. I guess we'll keep this tower of bash scripts that breaks once a month.

[–] bestboyfriendintheworld@sh.itjust.works 9 points 1 day ago (3 children)

Why do engineers do this?

Simply fix the relevant technical debt as part of implementing a feature or fixing a bug. That way you can chip away at it over time.

Waiting for the big removal of technical debt will never come. It’s an ongoing process.

Leave the code base better than you found it – always.

due date next Thursday

The answer is to say “We will try our best, but this is very ambitious.” Then you let the deadline pass, usually it’s artificial in the first place. When the deadline passes say: “As we feared this took longer than we hoped for.”

[–] red_tomato@lemmy.world 8 points 1 day ago (1 children)

The answer is to say “We will try our best, but this is very ambitious.”

If there’s some urgent feature request coming from sales then that means the Thursday deadline is in the contract and it’s already signed.

[–] bleistift2@sopuli.xyz 5 points 1 day ago (1 children)

So what? If you weren’t consulted when the deadline was set, it’s not your problem. Have some balls and rip your bosses a new one when they pull bullshit like this. “That deadline was unattainable when it was set. Had our team been consulted, we could’ve worked on a solution. But since sales went over our heads, this is their mess to clean up.”

[–] Poik@pawb.social 6 points 1 day ago (1 children)

You don't with in software do you? The software guy always gets blamed anyway.

[–] bitjunkie@lemmy.world 1 points 3 hours ago

Yeah so there's absolutely no reason not to pipe up on bullshit like this

[–] panda_abyss@lemmy.ca 5 points 1 day ago (1 children)

To quote my manager from today: “I don’t want us to spin our wheels and turn this into a month long effort”

The request is to effectively rearchitect a foundational part of the system. It’s a large lift project that should take weeks.

Of course I pushed back, I have good rapport with him and I’m not worried about getting fired over this. Not everyone has that.

[–] bleistift2@sopuli.xyz 6 points 1 day ago (2 children)

“This isn’t a bazaar. We don’t haggle over deadlines. We professionally estimate them.”

[–] Poik@pawb.social 6 points 1 day ago

Nevermind, it does sound like you work in software. This is a very familiar quote. x.x And it always comes right before planning slows to a crawl.

[–] NocturnalMorning@lemmy.world 2 points 1 day ago* (last edited 1 day ago)

I've never heard the phrase "We professionally estimate deadlines", but I'm gonna start using it. Thanks for that little nugget!

[–] marlowe221@lemmy.world 3 points 1 day ago* (last edited 22 hours ago) (1 children)

As the tech lead at my company, I treat all deadlines as fake until proven otherwise.

Also, when they start pressing me for dates that things can be done, I start multiplying by 4…

Multiplying by Pi is what I do. :)

[–] resipsaloquitur@lemmy.world 2 points 1 day ago* (last edited 20 hours ago)

Why would you ask permission to do something necessary? Just do it any time you have a ticket in the area.

One place I worked at had a rule forbidding pure refactors. One, it’s no other department’s (or manager’s) business that you massaged something to be more useful. Two, what is QA supposed to do with a change that has no new features or bug fixes? Three, are you going to put “refactor” in your release notes? Four, why are you refactoring things out of the scope of a feature or bugfix?

[–] beeng@discuss.tchncs.de 3 points 1 day ago (1 children)

Not sure. Something can be written fine and technically good but it's difficult to get started in.. Its a headwind.. Ie drag.

I don't see that as debt?

[–] firelizzard@programming.dev 11 points 1 day ago (1 children)

Anything that makes the codebase harder to maintain than it should be is technical debt.

[–] beeng@discuss.tchncs.de 2 points 1 day ago* (last edited 1 day ago) (1 children)

Whilst true, I was not talking about maintenance...

Rather "getting started in" ie onboarding.

[–] firelizzard@programming.dev 3 points 22 hours ago (1 children)

“How easy is it to onboard?” is functionally equivalent to “How easy is it to understand?”. The biggest factor in maintainability almost always boils down to how easy it is to understand. So, difficult to onboard almost certainly means difficult to maintain, and thus is tech debt.

[–] beeng@discuss.tchncs.de 1 points 12 hours ago (1 children)

I see that as too idealist. When the rubber hits the road you cant spoon feed every newcomer with 100x docs per 1x code, so it's inevitably going to be difficult for some to approach.

So now cos it's hard for somebody you assume there is debt?... It can't be infinitely easy.

[–] firelizzard@programming.dev 1 points 4 hours ago (1 children)

If your project is easy to maintain (aka low tech debt) that means it should be easy to understand the overall structure and it should be easy to understand any given component. So a new dev should be able to quickly figure out what part they need to change and how to change that part.

Some large, complex systems (like an OS) are unavoidably complex. Maybe it’s not fair to call that tech debt, but it’s still functionally the same thing - stuff that slows down development velocity due to difficulty of understanding. It’s just (probably) unavoidable given the domain.

But the majority of software projects aren’t that complex. The majority of software is apps and libraries that aren’t terribly complex. Monsters like operating systems and million to billion user scale products are outliers.

[–] beeng@discuss.tchncs.de 1 points 2 hours ago (1 children)

So did we make it to "codebase drag" yet?

Something that isn't debt but is a headwind to making changes.

[–] firelizzard@programming.dev 1 points 49 minutes ago

If we’re talking about the Linux kernel or Netflix’s video delivery infrastructure, maybe. But the majority of developers are not working on those. And I’m still going to call it “unavoidable technical debt” because for all intents and purposes that’s what it is.