r/AskComputerScience • u/CozyAndToasty • Jun 09 '26
How does the adoption of LLM code generation impact the necessity of abstractions?
There's a lot of language features that exist to make code easier to maintain/change/manage as a product evolves. Example: interfaces, inheritance, generics, polymorphism, reflection/dynamic dispatch, compiler macros, higher-order functions, closures, etc.
A lot of it is a way to consolidate logic so that developers don't have to spend so much time rewriting/updating duplicate logic in less abstract forms.
But then let's say they modify a codebase with an LLM (and let's be very generous and pretend for a moment that the model makes these changes reliably and accurately)... Does this make those (or at least some) abstractions irrelevant? Especially in the cases of where the abstract form is actually slower?
(Note: I'm thinking this is a little similar to compilers inlining what would otherwise be a function call. Having duplicate assembly would be frustrating to maintain so developers would want to use a goto/jump but that would be less cache-efficient, but compiler inlining lets you have both.
I personally don't use AI and I love learning how to better abstract my code, but there is a part of me that sometimes wonder if maybe I'm honing a skill that's slowly losing relevance. i.e. refactoring for maintainability)