upvote
Without getting into AI-for-work good or bad,

> update 42 if statements in 32 different files

is a silly behavior for a programmer or an AI to have to do more than twice. We have tools that very effectively remove the need for things like that: programming languages that allow modular and reusable code, good design, etc.

reply
Ideally. But that requires the correct abstraction, requires keeping it up to date.... that's basically an unachievable ideal. You either have overabstraction/overengineering (most codebases) or you have repetition. Repetition is actually more preferable in the LLM-world because you have to keep less stuff in your head. And the LLM's head too.

Even if something does look copypasted, it might actually be semantically distinct enough that if you couple them, you'll create a brittle mess.

Additionally, there's always going to be global changes (update the code style, document things, refactor into a new pattern, add new functionality to callers, etc.). The question isn't whether you use your lanuage's tools or you do it by hand, the question is whether you use an LLM or do it by hand :P

reply
Totally fair, but 42 if-statements across 32 files isn't something you need to fix with like ... a grand refactor or hexagonal architecture or event sourcing or whatever the overengineering pattern du jour is. You can fix that with a utility function or three, and a file/class/module/whatever that owns the code relating to some of those conditions.

I'm not some DRY zealot, but I've been in the "this system needs really similar changes to a ton of geographically distant code for simple changes" salt mines a lot. The people who say that kind of spaghetti is unavoidable are just as wrong as the ones who say it can only be fixed with a grand rearchitecture by a rockstar.

reply
Sure but even wiring that utility function in is work :D If you have even just a 2-3-million LoC codebase, not even something truly enormous - making global changes does require typing, and a whole lot of it...
reply
Such repetitions can regularly be deterministically automated, like find -exec sed and similar medium level tools.

If you spend a lot of time performing monotonic tasks, then your organisation needs to delete and refactor for a while until change in 'hot' areas of the code base are easy to make. Reaching for some code synthesis SaaS to paper it over will worsen the problem and should result in excommunication from the guild.

reply
If you have a codebase that big, can you even fit enough of it into a context window for the LLM to make correct and meaningful changes across all of it? Admittedly I've only used LLM-based coding for smaller projects.
reply
All of it hell no :D But just with any things, you break things down into subtasks. Then you break it down even more. You as a human don't hold all that stuff in your head either, so why would an LLM?

My current codebase is ~3 million LoC all in all (not greenfield, really old code), working on it by myself, the complexity is definitely manageable between Claude and me :)

reply
LLMs are great at replacing repetition with an abstraction.
reply
The AI needs to update the 42 statements to all use the same function so it can be updated in just one place going forward.
reply
Does your work primarily consist of updating 42 if statements in 32 different files? We all do that occasionally, but if you're doing it constantly, is it possible that a different system design would make your work much easier?
reply
Could you please show us an example of the change made to one of these if statements? I'm curious, because it seems absolutely wild to me to end up in such a situation (where that many changes are required and the usual refactoring tools of modern IDEs are insufficient) in the first place.
reply
> the usual refactoring tools of modern IDEs are insufficient

Cursor doesn't have refactorings, so

reply
deleted
reply
If you are 8x quicker by having the AI do these for you, I think you are a junior intern or something? It must mean most of your time is spent doing these things.
reply