Unless you meant that AI won’t remove entire features from the code. But AI can do that too if you prompt it to. I think the bigger issue is that companies don’t put enough value on removing things and only focus on adding new features. That’s not a problem with AI though.
Please don't do this :) Readable code is better than clever code!
I should also note that development style also depends on tools, so if your IDE makes inline functions more readable in it's display, it's fine to use concisely defined lambdas.
Readablity is a personal preference thing at some point after all.
I think what you're looking for is "x or 1"
At least with human-written clever code you can trust that somebody understood it at one point but the idea of trusting AI generated code that is "clever" makes my skin crawl
And was the code they were writing before they had an LLM any better?
My guess would be engineers who are "forced" to use AI, already mailed management it would be an error and are interviewing for their next company. Malicious compliance: vibe code those new features and let maintainability and security be a problem for next employees / consultants.
And I know it's intentional, but yes. Add some mindfulness to your implementation
Map["blah"] = fooIsTrue;
I do see your example in the wild sometimes. I've probably done it myself as well and never caught it.
var ageLookup = new Dictionary<AgeRange, List<Member>>();
foreach (var member in members) {
var ageRange = member.AgeRange;
if (ageLookup.ContainsKey(ageRange)) {
ageLookup[ageRange].Add(member);
} else {
ageLookup[ageRange] = new List<Member>();
ageLookup[ageRange].Add(member);
}
}
which could instead be: var ageLookup = members.ToLookup(m => m.AgeRange, m => m); var ageLookup = new Dictionary<AgeRange, List<Member>>();
foreach (var member in members) {
ageLookup.getOrCreate(member.AgeRange, List::new).add(member);
}
is more readable in the long-term... (less predefined methods/concepts to learn).Readability incorporates familiarity but also conciseness. I suppose it depends what else is going on in the codebase. I have a database access class in one of my solutions where `ToLookup` is used 15 times; yes you have to learn the concept, but it's an inbuilt method and it's a massive benefit once you grok it.
As a side note, I've had coworkers disappear for N days too and in that time the requirements changed (as is our business) and their lack of communication meant that their work was incompatible with the new requirements. So just because someone achieves a 10x speedup in a vacuum also isn't necessarily always a good thing.
A declarative framework for testing may make sense in some cases, but in many cases it will just be a complicated way of scripting something you use once or twice. And when you use it you need to call up the maintainer anyway when you get lost in the yaml.
Which of course feels good for the maintainer, to feel needed.
u/justonceokay's wrote:
> The solution to bad code is more code.
This has always been true, in all domains.
Gen-AI's contribution is further automating the production of "slop". Bots arguing with other bots, perpetuating the vicious cycle of bullshit jobs (David Graeber) and enshitification (Cory Docotrow).
u/justonceokay's wrote:
> AI will never produce a deletion.
I acknowledge your example of tidying up some code. What Bill Joy may have characterized as "working in the small".
But what of novelty, craft, innovation? Can Gen-AI, moot the need for code? Like the oft-cited example of -2,000 LOC? https://www.folklore.org/Negative_2000_Lines_Of_Code.html
Can Gen-AI do the (traditional, pre 2000s) role of quality assurance? Identify unnecessary or unneeded work? Tie functionality back to requirements? Verify the goal has been satisfied?
Not yet, for sure. But I guess it's conceivable, provided sufficient training data. Is there sufficient training data?
You wrote:
> only focus on adding new features
Yup.
Further, somewhere in the transition from shipping CDs to publishing services, I went from developing products to just doing IT & data processing.
The code I write today (in anger) has a shorter shelf-life, creates much less value, is barely even worth the bother of creation much less validation.
Gen-AI can absolutely do all this @!#!$hit IT and data processing monkey motion.
During interviews one of my go-to examples of problem solving is a project I was able to kill during discovery, cancelling a client contract and sending everyone back to the drawing board.
Half of the people I've talked to do not understand why that might be a positive situation for everyone involved. I need to explain the benefit of having clients think you walk on water. They're still upset my example isn't heavy on any of the math they've memorized.
It feels like we're wondering how wise an AI can be in an era where wisdom and long-term thinking aren't really valued.
I would argue that a plurality, if not the majority, of business needs for software engineers do not need more than a single person with those skills. Better yet, there is already some executive that is extremely confident that they embody all three.
No, because if you read your SICP you will come across the aphorism that "programs must be written for people to read, and only incidentally for machines to execute." Relatedly is an idea I often quote against "low/no code tooling" that by the time you have an idea of what you want done specific enough for a computer to execute it, whatever symbols you use to express that idea -- be it through text, diagrams, special notation, sounds, etc. -- will be isomorphic to constructs in some programming language. Relatedly, Gerald Sussman once wrote that he sought a language in which to discuss ideas with his friends, both human and electronic.
Code is a notation, like mathematical notation and musical notation. It stands outside prose because it expresses an idea for a procedure to be done by machine, specific enough to be unambiguously executable by said machine. No matter how hard you proompt, there's always going to be some vagueness and nuance in your English-language expression of the idea. To nail down the procedure unambiguously, you have to evaluate the idea in terms of code (or a sufficiently code-like notation as makes no difference). Even if you are working with a human-level (or greater) intelligence, it will be much easier for you and it to discuss some algorithm in terms of code than in an English-language description, at least if your mutual goal is a runnable version of the algorithm. Gen-AI will just make our electronic friends worthy of being called people; we will still need a programming language to adequately share our ideas with them.
In the same way that we use AI to write resumés to be read by resumé-scanning AI, or where execs use AI to turn bullet points into a corporate email only for it to be summarised into bullet points by AI, perhaps we are entering the era where AI generates code that can only be read by an AI?
This sounds inefficient and untidy when the only human things left to do are to take up space and consume resources.
Removing the humans enables removing other legacy parts of the system, such as food production, which will free up resources for other uses. It also allows certain constraints to be relaxed, such as keeping the air breathable and the water drinkable.
Now tell that to your compiler, which turns instructions in a relatively high-level language into machine-language programs that no human will ever read.
AI is just the next logical stage in the same evolutionary journey. Your programs will be easier to read than they were, because they will be written in English. Your code, on the other hand, will matter as much as your compiler's x86 or ARM output does now: not at all, except in vanishingly-rare circumstances.
The one actual major downside to AI is that PM and higher are now looking for problems to solve with it. I haven't really seen this before a lot with technology, except when cloud first became a thing and maybe sometimes with Microsoft products.
If you do this you are creating a rod for your own back: You need management to see the failures & the time it takes to fix them, otherwise they will assume everything is fine & wonderful with their new toy & proceed with their plan to inflict it on everyone, oblivious to the true costs + benefits.
If at every company I work for, my manager's average 7-8 months in their role as _my_ manager, and I am switching jobs every 2-3 years because companies would rather rehire their entire staff than give out raises that are even a portion of the market growth, why would I care?
Not that the market is currently in that state, but that's how a large portion of tech companies were operating for the past decade. Long term consequences don't matter because there are no longer term relationships.
I suspect he is pretty unimpressed by the code that LLMs produce given his history with code he thinks is subpar, but what do I know
It's the front-end of the hype cycle. The tech-debt problems will come home to roost in a year or two.
Ah yes, maintenance, the most fun and satisfying part of the job. /s
new 2025 slang just dropped
The market can remain irrational longer than you can remain solvent.
Use LLM to write Haskell. Problem solved?
Wasn't it like that always for most companies? Get to market fast, add features fast, sell them, add more features?
> Wasn't it like that always for most companies? Get to market fast, add features fast, sell them, add more features?
This reminds me of an old software engineering adage.
When delivering a system, there are three choices
stakeholders have:
You can have it fast,
You can have it cheap,
You can have it correct.
Pick any two.That, right here, is a world-shaking statement. Bravo.
However I wouldn't say refactoring is as hands free as letting AI produce the code in the first place, you need to cherry pick its best ideas and guide it a little bit more.
But the sentiment is true, by default current LLMs produce verbose, overcomplicated code
You can't win an argument with people who don't care if they're wrong, and someone who begins a sentence that way falls into that category.
I am sure assembly programmers were horrified at the code the first C compilers produced. And I personally am horrified by the inefficiency of python compared to the C++ code I used to write. We always have traded faster development for inefficiency.
This created a league of incredibly elitist[0] programmers who, having mastered what they thought was the rules of C, insisted to everyone else that the real problem was you not understanding C, not the fact that C had made itself a nightmare to program in. C is bad soil to plant a project in even if you know where the poison is and how to avoid it.
The inefficiency of Python[1] is downstream of a trauma response to C and all the many, many ways to shoot yourself in the foot with it. Garbage collection and bytecode are tithes paid to absolve oneself of the sins of C. It's not a matter of Python being "faster to write, harder to execute" as much as Python being used as a defense mechanism.
In contrast, the trade-off from AI is unclear, aside from the fact that you didn't spend time writing it, and thus aren't learning anything from it. It's one thing to sacrifice performance for stability; versus sacrificing efficiency and understanding for faster code churn. I don't think the latter is a good tradeoff! That's how we got under-baked and developer-hostile ecosystems like C to begin with!
[0] The opposite of a "DEI hire" is an "APE hire", where APE stands for "Assimilation, Poverty & Exclusion"
[1] I'm using Python as a stand-in for any memory-safe programming language that makes use of a bytecode interpreter that manipulates runtime-managed memory objects.
And even among languages that do have a full virtual machine, Python is slow. Slower than JS, slower than Lisp, slower than Haskell by far.
There is a Common Lisp implementation that compiles to bytecode, CLISP. And there are Common Lisp implementations that compile (transpile?) to C.
It was only much later that optimizing compilers began using it as an excuse to do things like time travel, and then everyone tried to show off how much of an intellectual they were by saying everyone else was stupid for not knowing this could happen all along.
When they look at the calendar and it says May 2025 instead of April
I'm currently reading an LLM generated deletion. its hard to get an LLM to work with existing tools, but not impossible
LevelsIO's flight simulator sucked. But his payoff-to-effort ratio is so absurdly high, as a business type you have to be brain-dead to leave money on the table by refusing to try replicating his success.
They will not feel old because they will enter into bliss of Singularity(TM).
I think we'll be okay and likely better off.
There is no place for me in this environment. I’d not that I couldn’t use the tools to make so much code, it’s that AI use makes the metric for success speed-to-production. The solution to bad code is more code. AI will never produce a deletion. Publish or perish has come for us and it’s sad. It makes me feel old just like my Python programming made the mainframe people feel old. I wonder what will make the AI developers feel old…