I’ve been in the job market for a couple of months now, and I’m finding it incredibly frustrating how much this industry overhypes this technology. It’s basically all LinkedIn is these days. It even seems like there are major swaths of the industry that are demanding that their employees and the world at large mirror their excitement that seems to grow more and more detached from reality by the day. I’ve been keeping the policy of just shutting up and keeping my frustrations and opinions to myself, but I think I do actually have some things of value to say on the matter, and when I talk about it in person with friends and coworkers, people have generally responded well to my thoughts, so I figured I’d put them here too.
First off, while most people would probably categorize me in the broadly anti-AI camp, my opinion is a bit more nuanced than that, and it’s a position that I’ve arrived at after eagerly adopting AI in my development process with excitement for a while. I’m not going to say that LLMs are useless. They’re a tool, and like any tool, they have optimal use cases. And like any tool, there are more tasks unsuited for them than tasks they are suitable for. When used for the tasks they are appropriate for, they can be beneficial, but only if used by somebody with the skills to use them correctly. But there are environmental and resource consumption implications that cannot be ignored, and in a world already over-reliant on fossil fuels, it can be said that there is no truly ethical use of LLMs.
AI in Software Engineering
Since I’ve seen a lot of LLM critiques dismissed by people claiming that “oh, you never really gave modern AI tooling a chance, you just think ChatGPT is all AI is!” let me dispell that. I use LLMs more than incidentally, though less than a period when I let myself become overly reliant on them. I’ve used chatbots, sure, almost everybody has. I’ve used IDE-integrated coding assistants, but sure, that’s boring too. I’ve used coding agents. I am pretty happy with my custom AGENTS.md file, and my setup running OpenCode agents on top of GLM-5.2 or Qwen3.8-27b through OpenRouter. I’ve even got quantized versions of Qwen3.8-27b setup to run locally, because I am fortunate enough to have the hardware to do that. I’ve used it for ideating on software architecture, for diagramming, for implementing features, writing tests, finding and fixing bugs, exploring unfamiliar codebases, you name it.
I have no doubt there are loads of people out there more skilled in using agents than I am, but I am certain I can rightly call myself very proficient in it. But my real passion is for computer science, for designing software, for solving problems. And that’s where I’d rather spend my time building my expertise.
Rote code is one of the few areas where I think LLMs, as a tool, actually find legitimate uses. Unlike humans, LLMs don’t actually “think”, and this is something that it seems like people who don’t understand how AI actually works struggle the most. It doesn’t understand anything, and it doesn’t have the capacity for abstract thought like you or I do. Even with “reasoning” models, it’s not really thinking, it’s just writing itself an internal monologue that can help it to refine the predictions it ultimately makes. If you, the reader, are a human, and I ask you to picture an apple in your head, and spin it around, and describe it as you do, you know what an apple is, what it looks like, what it tastes like, feels like to hold in your hand, you can probably see it in your mind, picture it with some level of detail, and know exactly what would and wouldn’t make sense. Maybe you have specific memories associated with apples that color your perception. Maybe you have cultural associations that color your perception. There’s a lot going on before you even begin formulating words to describe what’s going on in your head. An LLM, even giving it the benefit of the doubt of one with reasoning, is simply using a very complex statistical simulation to predict what the most likely written internal monologue would follow the string “picture a rotating apple in your head and describe it to me” in a larger text corpus, generate that predicted monologue, then ask itself to re-read the original question and its monologue and generate the most likely summed up answer that would follow that monologue. It never pictures an apple at any point. It never even understands what an apple is. It knows where an apple sits in a vector space of tokenized ASCII text, and it’s able to extrapolate reasonable sentences about what an apple looks like because it’s read what actual people have written about apples, and those writings are tied to that same token in the same vector space. It’s all just numbers, equations, and statistical predictions about what tokens would come next. It looks intelligent because it’s very good at predicting human writing, because it’s read basically ALL of human writing. But writing is a drastic compression of the depth of human consciousness and thought, so it’s easy to deceive us through writing alone. But no thought actually ever occurred inside the LLM.
With that ACTUAL understanding of just what’s going on inside an LLM when it pretends to be “thinking”, you can start to realize exactly what use cases it would actually excel in, and which it is not.
LLMs are good at language-centered tasks that involve mostly following rigid patterns and replicating things that have been done numerous times before. The good news is that a lot of writing code is actually exactly that. You’re setting up a framework that’s been set up tens of thousands of times before. You’re configuring settings that every other codebase using that library has had to set before. You’re creating a component that does something simple that lots of other frontends have built before. Maybe you’re building whole complex features like an authentication service or a design system library or a discord bot that does something that’s easily broken up into smaller tasks that have been done repeatedly. Any of these are likely trivially solved by an LLM. You can write them by hand, and depending on the context, you often still SHOULD write them by hand (for example, if you’re learning, or you’re not on a time crunch and want to keep your skills sharp, or you want to minimize the little bits of tech debt or architectural goofiness that LLMs always seem to leave you to cleanup), but having an LLM solve them can be reasonable, presuming you have the technical skill to review what it does and understand how it works, what other architectural choices are available to you, and so on. LLMs can allow you to move fast, that’s what they excel at. But like all good things, it comes at a cost that you trade. It might do something suboptimally and you’ll need to go optimize that piece later. It might make funny architectural choices or re-implement something you actually already have built in a slightly different way that you need to reconcile. And it also might prevent you from properly thinking through the problem space as thoroughly as you would if you were writing the code yourself, which might prevent you from having not only the depth of understanding, but from making the actually transformative architectural decisions or creating the truly clean abstractions that come only from actual depth of understanding and not rote code writing. This tradeoff is often acceptable, because in business, often what you’re writing simply doesn’t need to be perfect, maybe what you’re building is simply a temporary means to an end. If it’s a task you’d be comfortable delegating entirely to a junior developer and where you can tolerate some imperfection, then it may well be a good fit for AI. Then again, it should be noted that even a junior developer will possess true understanding that an LLM will never have.
This is where vibe-coding is funny to me. Generally, this is a term for when somebody with little to no actual software engineering skill simply uses an LLM to generate code, which usually does actually work, and considers this engineering. In truth this is a lot more like a product manager delegating often poorly-written specs to a very confident but barely competent engineer who just completes the task at any cost, generally with little to no consideration of the actual maintainability of the system, or how optimal of a solution it actually finds. To actually get an LLM to produce something of meaningful quality, you need to understand software engineering well enough to actually understand how the system you want would work and tune your instructions to that end, and you also need to know how to review its work and critique it properly. Without this skill, I’ll be honest, whatever you’re building is doomed to collapse under the weight of its own tech debt in time, tech debt that you can’t understand, and your agents will not be able to clean up without burning all of your tokens a dozen times over. And this problem doesn’t go away just by picking a more powerful model. You might last longer, though your token costs will likely go up tenfold because, for the most part, more powerful models also means more electricity and more compute hardware needed to run it. So will you get more bang for your buck? Almost certainly not.
And there are plenty of vibe-coders who are convinced that the proper collection of agents working together and critiquing each other’s work will eventually replace the need for real skill. But that’s just not the case either. Sure, good agent workflows can definitely improve the quality of what you produce. Creating a good agent workflow requires a good amount of understanding of software engineering in general, but I suppose you can probably borrow somebody else’s workflow trivially. And as long as your codebase is small enough and simple enough to fit basically the entire context of the project in your agents’ context windows, this might go well. Of course, any reasonably complex project will quickly exceed your agents’ context windows, even if you do create documentation to compress and share context, and then you’ll again need to at least know how to review the outputs and critique them if needed. And if your project requires any genuinely unique engineering work, something the agents won’t have seen in their training data, well then they will create a poor solution, and the agent you task with reviewing the solution won’t know that it’s a poor solution, and you’ll commit bad work that will be built upon with more and more bad work until, even if you hire a professional software engineer to fix the problem, it will be a nightmare for even them to fix.
But AGI will solve all of this, you say. What am I going to do after AGI makes the whole field of software engineering obsolete? I don’t worry about that. AGI isn’t going to happen in our lifetimes. It probably won’t happen in the next several hundred years either. Grifters like Sam Altman and Elon Musk will probably redefine what AGI means so it’s just “a pretty knowledgeable LLM” instead of literally human-level intelligence as it was originally defined, and then declare victory while LLMs still fail to solve the vast majority of problems. People generally have a poor grasp of just how far even the most cutting edge LLMs are from being as powerful as the human brain, because LLMs are really good at mimicking the communication of an intelligent person, even though they actually are nothing like an intelligent person. You can call that cope if you’d like, but just like when I was told NFTs were about to change the global economic system completely, I’ll let the future unfold and speak for itself in my favor.
And frankly, even if AGI ever did exist, and ever did make software engineering totally obsolete, this is a comment usually hurled with some degree of smugness from somebody who feels bitter at the idea that software engineers deserve to be paid well. Often they’re the same people who say dumb shit like “AI is democratizing art” and calling actual artists gatekeepers. They are the sort who, rather than humbling themselves and realizing that to gain a skill requires time, learning, and practice, they would rather diminish the skills of those around them. Diminish every skill, even… except for whatever it is THEY do well, of course. AGI would make software engineering skills way less valuable? Sure. But it’d make EVERY skill less valuable, including whatever they’re good at. “Hehehe,” hypothetical guy chuckles, “well I build houses for a living, AI isn’t EVER going to replace MY job!” Well hate to break it to you buddy, I’m pretty sure if AGI ever becomes a reality, it won’t be but a couple hours before they’re rolling out robots to take yours too. We’d all be equal then, wouldn’t we? Well, all of us except for the like six deranged old guys who own the AGI and who now see all of us as impediments to their infinite growth and would doubtless rather eradicate all of humanity than uplift it. And if that’s the future, I’ll see you all in the trenches.
AI “Art”
Now we’ve talked enough about AI in software engineering though. What about AI art? Well this is where my criticism gets even sharper.
There is no such thing as “AI art”. It’s an oxymoron. Inherent to the definition of art is the meaning and soul imbued into a work by its intelligent creator. Artificial intelligence can only mimic skill, but it cannot and will not ever reproduce meaning.
Right now, image generators have been shaking up the graphic design industry because many corporations have unwisely decided that they can replace talented artists creating their visual brand with these image generators for much cheaper. But I predict that over time this trend will reverse dramatically.
As we speak, many companies are learning the hard way that selling out the artistic soul of what they create, and of their brand itself, only reflects poorly on their creations and their brand. They deluded themselves into believing that consumers are stupid and will consume their AI-produced content all the same. This is a fundamental failure to understand that art is more than just a collection of pixels that look like something. Art is inherent to what it means to be a conscious, sentient being. It’s so much more than it appears on the surface. And AI can only create the surface-level thing. What AI creates is permanently locked in the uncanny valley. It makes us uncomfortable. It feels gross and empty. It is detestable. And it is not art and never will be, no matter how much training data you shovel in, no matter how many trillions of parameters you make the model, no matter how many terawatt-hours and billions of dollars you waste on it.
Here’s my unadulterated opinion: AI image generators, and video generators, and music generators, and so on, are utterly worthless. You shouldn’t use them. It’s a stain on your reputation if you call yourself an artist and use one.
You draw your own art but you don’t like drawing backgrounds, so you use an image generator to do the background for you? I can understand the impulse, sure. But you’re diminishing the actual value of the thing you created. Just release what you made without a background. Or make a poor-quality background. Or even create a single background that you re-use between pieces. I’d value all of those much more.
You draw your own art but use image generators to create references for you? Listen, for this one, I can kind of see the value, and I personally am not going to roast you for it. Your work is still your creation here. But I’d implore you to consider not doing that, finding actual images for references, even if they’re not in exactly the same pose or angle, wherever possible, because, just like with software development, becoming overly-reliant on an LLM to solve these problems diminishes your own skill, and it can prevent you from developing or maintaining your own style. It may not directly dilute the value of your work, but it will do so indirectly, and with greater effect over time. It’s like wearing Tolkien’s One Ring, you could do it once or twice, sure, but you shouldn’t. And if you keep doing it it will not end well.
You make multi-media content, like YouTube videos, and you like filming and editing the video but don’t have any music you have license to use and don’t have the skill to make music you like, so you use a generator to make music for you? Guess what, just like the artist who actually can draw but uses generated backgrounds, you’re tainting the value of your work. Learn to make a song with GarageBand and add your shitty song instead. Leave the music track blank (until maybe you find something to go there later). Or better yet, as somebody who has made YouTube content myself, I can tell you right now that if you go on Bandcamp and give indie musicians a chance, you could have more royalty-free music in more musical varieties than you’ll ever know what to do with, for very little money, and while helping to support actual artists so they can create more of the type of art that you obviously would value.
The AI Bubble
Look around. Everybody is inventing problems so they can make the AI that solves it. AI is being embedded in every single tool no matter how innocuous, to the chagrin of most users who seem to increasingly just want to rip these “features” out. Real improvements and features people actually are begging for are being left of roadmaps so some kind of AI feature can be shipped. Does the feature get used? Sure, for as long as the company is willing to subsidize its use though.
And that’s kind of the core of why I think we’re, right now, sitting on the moment where we pivot from AI euphoria into what will likely be the AI capitulation. The popping of the bubble.
You see, machine learning models of the sizes that the sort of complex models that people actually think of when they hear “AI”, those are obscenely expensive to run. This is yet another thing I find that people not well-versed in how AI actually works misunderstand. In a lot of people’s minds, software and servers are things of negligible costs, it’s just code that runs on computers that do stuff, and computers aren’t that expensive to run, are they?
But LLMs of the scale of the more cutting edge models right now require absurd, unheard of amounts of energy to run. If you just say “Hello!” to one of these models, generating whatever goofy, useless reply it generates burns the sort of power your top of the line gaming rig would burn in time measured in hours, not seconds. Running your coding task that writes and tests a feature for you over the course of 10 minutes? No joke, that’s probably just burned more electricity than your entire household consumes in the course of an entire day.
The thing that I think made it really sink in for me that a lot of people in very high places don’t have even a rudimentary grasp on the economics at play here was the panic selling that the game industry segment of the stock market experienced when Google Gemini announced that they had a feature that could “generate playable games” using AI. LLMs had long been able to do game development work, because, believe it or not, that’s also software development. But what got daytraders quivering in their boots was the idea that you could just describe the experience you wanted and an LLM could just generate the whole experience, no code needed. Sure, it was a shaky implementation and if you looked at a door, then made a full 360 degree turn the door would potentially just not exist anymore, sure everything it made looked like an unhinged fever dream. But this was going to replace the whole game industry eventually.
Except, of course it wasn’t. I wonder why it was that Google Gemini, despite essentially subsidizing this entire feature, would only let you play in a “world” for up to 60 seconds at a time? You wanna guess how much electricity it burns to generate real-time video using an image generator running on top of a several-hundred-billion parameter model that needs terabytes of VRAM across dozens of enterprise-grade GPUs during the entire course of the gameplay? Because eventually Google wouldn’t want to pay for that compute anymore. Do you think people would genuinely be willing to pay on the order of hundreds of dollars per hour to play a video game, even if it was one they got to make up themselves? Of course not, it’s insane, and anybody who understood that should have known that it wasn’t a meaningful threat to the game industry. And yet, the stock market faltered.
I think this is the story of AI broadly. There is really interesting science behind it, and it does have the potential to solve some interesting problems. But it’s just a tool, suited for some use cases, being sold as a panacea that will solve every problem ever. The people who say AI is just a fad that will completely vanish, or that it has no value at all, they’re wrong. But the people who say that AI is going to revolutionize every industry and solve every problem and define the future are wrong as well.
Soon, very soon, the investors who poured literally tens of trillions of dollars into AI are going to expect it to start making money. Right now, broadly speaking, AI is wildly unprofitable, and to make it profitable requires paying customers, and price tags wildly higher than we’re seeing right now. The reality though, is that as the price tags tick ever higher, fewer and fewer paying customers will remain. Eventually, when the bills come due, the only survivors will be the products that actually solve a real problem in an economically viable way. And everything else will be so far underwater it’ll make your head spin.
The AI bubble will pop. Like the dotcom bubble before it, this isn’t a hyperbolic statement that nothing AI-related will exist in 10 years. But which AI products will still exist in 10 years? I suspect it’ll be far fewer than the investors of today are imagining.
Post feature image by Lalala666 at English Wikipedia – Transferred from en.wikipedia to Commons. Transfer was stated to be made by Ddxc., Public Domain, https://commons.wikimedia.org/w/index.php?curid=3189816