zlacker

[parent] [thread] 10 comments
1. lockni+(OP)[view] [source] 2026-02-03 07:11:17
> I keep hearing this but I don’t understand. If inelegant code means more bugs that are harder to fix later, that translates into negative business value.

That's a rather short-sighted opinion. Ask yourself how "inelegant code" find it's way into a codebase, even with working code review processes.

The answer more often than not is what's typically referred to as tech debt driven development. Meaning, sometimes a hacky solution with glaring failure modes left unaddressed is all it takes to deliver a major feature in a short development cycle. Once the feature is out, it becomes less pressing to pay off that tech debt because the risk was already assumed and the business value was already created.

Later you stumble upon a weird bug in your hacky solution. Is that bug negative business value?

replies(2): >>lmm+h1 >>friend+83
2. lmm+h1[view] [source] 2026-02-03 07:21:57
>>lockni+(OP)
Of course a bug is negative business value. Perhaps the benefit of shipping faster was worth the cost of introducing bugs, but that doesn't make it not a cost.
replies(1): >>anonzz+h3
3. friend+83[view] [source] 2026-02-03 07:39:09
>>lockni+(OP)
You not only stumble upon a weird bug in your hacky solution that takes engineering weeks to debug, but your interfaces are fragile so feature velocity drops (bugs reproduce and unless you address reproduction rate you end up fixing bugs only) and things are so tightly coupled that every two line change is now multi-week rewrite.

Look at e.g. facebook. That site has not shipped a feature in years and every time they ship something it takes years to make it stable again. A year or so ago facebook recognized that decades of fighting abuse led them nowhere and instead of fixing the technical side they just modified policies to openly allow fake accounts :D Facebook is 99% moltbook bot-to-bot trafic at this point and they cannot do anything about it. Ironically, this is a good argument against code quality: if you manage to become large enough to become a monopoly, you can afford to fix tech debt later. In reality, there is one unicorn for every ten thousand of startups that crumbled under their own technical debt.

replies(1): >>lockni+5l
◧◩
4. anonzz+h3[view] [source] [discussion] 2026-02-03 07:40:36
>>lmm+h1
If a bug is present but there is no one who encounters it, is it negative business value?
replies(2): >>lmm+j5 >>coffee+16
◧◩◪
5. lmm+j5[view] [source] [discussion] 2026-02-03 07:55:30
>>anonzz+h3
If you can see the future and know no-one will ever encounter it, maybe not. But in the real world you presumably think there's some risk (unless no-one is using this codebase at all - but in that case the whole thing has negative business value, since it's incurring some cost and providing no benefit).
◧◩◪
6. coffee+16[view] [source] [discussion] 2026-02-03 08:02:08
>>anonzz+h3
That’s not how this goes.

Because the entire codebase is crap, each user encounters a different bug. So now all your customers are mad, but they’re all mad for different reasons, and support is powerless to do anything about it. The problems pile up but they’re can’t be solved without a competent rewrite. This is a bad place to be.

And at some level of sloppiness you can get load bearing bugs, where there’s an unknown amount of behavior that’s dependent on core logic being dead wrong. Yes, I’ve encountered that one…

replies(1): >>lockni+9r
◧◩
7. lockni+5l[view] [source] [discussion] 2026-02-03 09:54:09
>>friend+83
> You not only stumble upon a weird bug in your hacky solution that takes engineering weeks to debug, but your interfaces are fragile so feature velocity drops (bugs reproduce and unless you address reproduction rate you end up fixing bugs only) and things are so tightly coupled that every two line change is now multi-week rewrite.

I don't think you fully grasp the issue you're discussing. Things don't happen in a vacuum, and your hypothetical "fragile interfaces" that you frame as being a problem are more often than not a lauded solution to quickly deliver a major feature.

The calling card of junior developers is looking at a project and complaining it's shit. Competent engineers understand tradeoffs and the importance of creating and managing technical debt.

replies(2): >>WD-42+401 >>friend+TQ3
◧◩◪◨
8. lockni+9r[view] [source] [discussion] 2026-02-03 10:44:53
>>coffee+16
> That’s not how this goes.

Once you gain some professional experience working with software development, you'll understand that that's exactly how it goes.

I think you are failing to understand the "soft" in "software". Changing software is trivial. All software has bugs, but the only ones being worked on are those which are a) deemed worthy of being worked on, b) have customer impact.

> So now all your customers are mad, but they’re all mad for different reasons, and support is powerless to do anything about it.

That's not how it works. You are somehow assuming software isn't maintained. What do you think software developers do for a living?

replies(1): >>coffee+Wh1
◧◩◪
9. WD-42+401[view] [source] [discussion] 2026-02-03 14:32:30
>>lockni+5l
This has always been true. I just don’t see how AI makes accumulating tech debt more attractive, as the original poster seems to be implying. If anything it seems to make things worse. At least when you write shit code by hand you know it so you can remember to go back to it, keep it in mind as a potential source of bugs. But YOLO from AI and you probably have no idea.
◧◩◪◨⬒
10. coffee+Wh1[view] [source] [discussion] 2026-02-03 15:51:47
>>lockni+9r
Nothing I just described was hypothetical. I’ve been the developer on the rewrite crew, the EM determining if there’s anything to salvage, and the client with a list of critical bugs that aren’t getting fixed and ultimately killed the contract.

If you haven’t seen anything reach that level of tech debt with active clients, well, lucky you.

◧◩◪
11. friend+TQ3[view] [source] [discussion] 2026-02-04 06:53:45
>>lockni+5l
> Competent engineers understand tradeoffs and the importance of creating and managing technical debt.

I would disagree on the engineering point, as this ultimately falls on project management. Yes, engineers should provide professional expertise, but if management decides to yolo then engineers do not have the capacity to remove tech debt, regardless of their competence. Management of technical debt is, at the end of the day, managing short term versus long term velocity.

> Things don't happen in a vacuum, and your hypothetical "fragile interfaces" that you frame as being a problem are more often than not a lauded solution to quickly deliver a major feature.

Nothing I said disagrees with this, however that quick delivery of a major feature has downstream effect: anything that touches said feature is harder / slower / error-prone to implement. The more the team embraces "move fast and break things" the harder the wall it hits. Slower teams tend to be consistently average. Neither is better and this competence in managing technical debt is more often than not coupling/decoupling over fragile/robust interfaces.

This shows in LLM coding assistant use. Drop them in a well structured codebase and they implement features relatively well. Drop them in a bowl of spaghetti and they hurt themselves over confusion. With LLM coding assistants becoming more prevalent this managing of tech debt becomes even more important topic. You just cannot tell the LLM "pls implement well, no tech debt bro" or "yolo this, move fast, make it work 80% of the time".

If my career has taught me anything is that it takes competent engineering to push back against management pushing for every possible shortcut. A worry here is that detachment from the final output will reduce buy-in and produce "bad" code that will eventually grind feature velocity to a halt.

[go to top]