But What About AI?
The Setup
Just to manage expectations: This is not yet another hot take about "AI". I don't have one. This is my attempt to find my own voice in a cacophony of noise and maybe, just maybe, attaining some amount of clarity on the subject. Also I do not claim to be an expert about any of this and some of my assumptions may be plain wrong.
First of all: I dislike the term "AI" because, in my humble opinion, it's just a merketing gag and has little to do with intelligence as we humans tend to understand the word. So let's just call them large language models (LLMs), shall we?
For the most part I ignored the developments in this sector. I was not oblivious to them but I saw no reason to engage. Also, I was very skeptical as to the actual use one could get out of asking a machine random questions. To this day, this has been the case (with very few exceptions) in my private life. I simply don't use LLMs for anything in my daily life and see ne reason why I should. Or differently put: LLMs seem like yet another solution in search of a problem. They are crammed into every nook and cranny of the tech space, as far as I can tell without any rhyme or reason as to why that should be beneficial, let alone necessary.
At my day job, however, the story is a bit different. I am a Cloud Engineer, a glorified sysadmin, if you will, just without actually touching the sys part. I work with a lot of different technologies, some of them being accused of very similar things than what I outlined above, e.g. Kubernetes or containers in general. Go to The Cloud they said, it will be fine, they said. But that is a conversation for another time.
The Slide
Until fairly recently I was just chugging along, doing my job, administrating workloads, wiring up components, managing infrastructure, dealing with permissions and access management, you know, the stuff you do in this kind of job. And then suddenly LLMs happened.
Suddenly, we are having a team day, exploring the new opportunities provided by LLMs, my company apparently goes all-in on the technology, we subscribe to various services for that purpose, we are building an "AI team" and hiring new people for it (but no new ops people, of course). I still mostly ignore all this but I start to dabble with these LLM thingies out of curiosity but also in response to a certain amount of peer pressure.
Turkish Delight
I came to realize that the LLMs I tried (I'm not giving names, that's absolutely beside the point here) were decent at some things, pretty good at others and pretty bad at yet others. Or to put it differently: it seemed to me that they have utility but also their limits which I also came across frequently enough. I know, a very underwhelming and unsurprising take. But I did get into the habit of getting assistance from an LLM every now and then. Stuff like:
- Finding syntax errors in YAML
- Interpreting stack traces to figure out why code crashed
- Writing hundreds repetetive code blocks for moving Terraform state around
- Suggesting refactorings for code snippets to make them more concise
- Analyzing an unfamiliar code base, figure out what it does and where something specific happens
- Write shell one-liners for a specific task (did I mention I hate shell scripting?)
- Scaffold a new project in an unfamiliar language and provide ideas how to get started
This is a non-exhaustive list, obviously, but it covers my use cases quite well.
I did notice other things, too: as I used LLMs more I also started to depend on them to a certain degree. I never did any "vibe coding", as in, I always read code that was produced. However, I didn't always understand it fully and sometimes I decided that if it did what it was supposed to, that was good enough. I generated a bunch of shell one-liners and small scripts that way, some of which were pretty cursed. On the other hand, I never liked shell scripting so I wasn't sad that I didn't have to do it myself.
I also got in the habit using an LLM chat bot as substitute for a partner for pair programming. I'd ask it questions in the brainstorming phase of an issue I wanted to solve or asked it to suggest ways to simplify a piece of code I had written, that sort of thing. I found that the feedback was frequently helpful, especially if the problem space was restricted and I was in a position to directly verify the output.
The Big Bang
And then came a different kind of project. As I said, I'm an ops person nowadays but I found myself in the position of managing a software project. It's limited in scope but it concerns a critical piece of infrastructure so the demands in terms of quality are high. Initially I struggled because it's a quite different kind of work. I wasn't used to being in charge of a software project, coordinating with team members on it (even if there are only 1.5 to coordinate with) meticulously documenting concepts, decisions and progress. I'm used to mostly doing my thing, using my own judgment and implementing things how I think it's best. If in doubt, I'd ask a person or the whole team (which is five people, myself included) for comment and that was that. In addtion to that, since this was a project I'd been working with for many months now, I have the most domain knowledge about it and became frustrated that the person who was supposed to work with me on it devoted so little time to it whereas I wanted it all done as quickly as possible.
All of that taken together did not make for a great start but it got worse when my boss threw an AI-generated blob of code at my feet that he had generated over the weekend and asked me to take a look. He thought it was quite good, fulfilled all our requirements and was decidedly better than what I had written. I disagreed. We had lengthy discussions about it, about the ethical and technical aspects of the whole LLM thing. I took the time to review the whole thing and take notes on all the small and not quite so small things that I thought were problematic with it. How I felt that the issues largely stem from the fact that an LLM doesn't (or rather cannot) understand the actual problems, how it may produce syntactically sound code but does not seem to have a sense of perspective of what's appropriate, what the whole context is, what the ultimate purpose behind certain decisions are and so on. Also, how it sometimes produces things of ridiculous complexity, at least that's what I felt.
At the end of the day, it didn't amount to much. I wasn't able to convince my boss of my point of view, he rather seems to think that I'm salty because an LLM is a better coder than me and that I blame the thing for not being able to read my mind. And right there there is an essential issue, as I see it: an algorithm cannot read my mind. It cannot think or reason in the sense that we humans understand the term. It cannot know intentions, implications, broader context, it is not, you know, human.
We had a proper argument, my boss and I and I still carry it with me though I don't quite know why it resonated with me so much. I feel like we are at a turning point. We as a team, we as a company, probably we as people in tech, maybe even we as a society. We started with this technology because it was marketed to us relentlessly, then we found it has certain uses, now we're at a point where we keep using it because it's "too valuable and useful to disregard" and because "it isn't going away" so we might as well. But I have to wonder what the consequences are. Already I feel that reaching for that chatbot inside my IDE made me lazier because I research online less, I think less about the possible solutions to my problem and I write less code myself.
So... What?
There is a flip side to this, in that it is quite difficult to identify a solution to a coding problem, if you're not aware it exists. Especially when you're not proficient with a programming language or piece of software it can be quite difficult to come up with a good way to make use of it. The traditional solution would have been to RTFM, learn how stuff works and then implementing your thing. Now you can ask some random chatbot to do it and have a working solution in a minute. That's both impressive and scary to me. I have read that people say that LLMs lower the barrier of entry into a field or that they democratize coding (or something of that sort) and I think this sort of experience is what these people are talking about. I can absolutely see how that might seem as a good thing. But...
Look. We humans are amazingly complex creatures in certain ways but in others not so much. If you give a human a tool that kinda does their job for them, they'll probably use it. It's simple, easy, takes less time. And before you know it, you've rewired your brain to be worse at your own job because you're actually doing your job less or even not at all, you delegated it. If you stop doing your own research about something but ask some algorithm for the final answer instead, you will lose everything you would have obtained on that particular journey. It's no secret that knowledge that you aqcuired yourself is better than knowledge you are simply presented. It's a fundamentally different process. So if we keep using LLMs for stuff, will we get dumber and worse at our jobs? Won't we stop striving for expertise, won't we stop diving deeper and deeper into that one particular rabbit hole that tickles our fancy? Will we come to a point where no one understands anything about what makes our world (i.e. our machines) run because we outsourced it all? Yes, that is hyperbole but I think it holds a kernel of truth.
And... your point is?
So with all that said, here's where I currently land on things: Underneath all the hype, the marketing and the plain bullshit LLMs are a technology that's not exactly new in principle, it's all machine learning and fancy autocomplete. And for certain types of application this is a great fit. For others this is terrible and I think, this "let's use LLMs as replacements for search engines or wikis holding actual information and get users to regard them as personal companions" is a prime example for the latter. In this particular niche that I reside in I perceive a similar pattern. Generating code can be a bit hit or miss, specific, well-controlled and well-defined tasks tend to work better, I think. What's more, using LLMs not for generating code at all but for review, suggestions of alternatives or possible solutions can be very helpful, especially if the human is familiar with the problem space so they can evaluate the quality of the output right away. If this is not given, it's much more murky. Just the other day I read that Greg Kroah-Hartman, a Linux kernel maintainer, stated that LLM-generated bug reports recently stopped being completely useless but quite suddenly got pretty good. And despite all the very reasonable critique you can direct at LLMs in general, I think this is worth bearing in mind.
I have not addressed the elephant in the room. The ethical aspects of it all. The theft, the copyright infringement, the labour exploitation, the enormous energy and water usage, just to name the most obvious ones. There are also a host of security implications as everyone pushes for "agentic AI" and whatnot, handing their credentials and everything to some random chatbot that then proceeds to delete the database holding their whole stock of business data. Another thing is training data quality, inherent bias that is then propagated or amplified resulting in an increase in sexism, racism, ableism and more. There's the firing of workers left and right and replacing them with LLMs that are meant to do the same job but probably do it worse. These issues (which I have touched only suferficially at best) are very real and worth knowing about and discussing, I feel like this is glossed over by way too many people.
All this taken by itself is enough reason for many people to not want to touch any LLM with a ten foot pole and frankly, I cannot blame them, rather I'm inclined to agree.
Are we done yet?
But what about actually sensible use cases? Let's assume these exist and have merit for the moment. Are these worth burning the planet for? Clearly, they cannot be. But what if there was a way to have the cake and eat it too? Might it not be possible to build such technology that can do all these useful things without funding a fascist regime and their cronies, vaporising our water, exacerbating the climate crisis, increasing inequality? Maybe something more distributed and focused, one targeted model per use case? Something built with training data that was carefully selected and vetted by experts with the consent of the people who produced the data, whatever it might be? What if every reasonably capable person or entity could do this, given a reasonable amount of resources? That would definitely not do away with the various issues that are inherent in the technology, the hallucinations for example. But if we stopped anthropomorphing the ubiquitous chatbots and instead built other solutions for our problems that use a different interface?
I admit, I have absolutely no idea if anything of the above is reasonable or even possible. It might be that there are several contradictions in there that are unsolvable because they are inherent to the technology. But I do feel that underneath all the numerous layers of nonsense and egregious disregard for the good of humanity that is very clearly displayed by many of the actors in this space, there may well be something that could and should be build into technologies and solutions that would be a net benefit for the world.
As it stands now, to me this does not seem to be where we are and definitely not where we are headed. Currently, it does not feel like the benefits, such as they may be, justify the costs that we are already paying which are only increasing with compound interest the further we take this. So if my lazy self might like to have their silly bash scripts generated for them, there still is a lingering feeling of deep unease about it in my gut. And maybe, just maybe, I should listen to it for once?