Vibers hold language models wrong

As the weeks went and I found myself using language models more and more at work, I had to admit that the scope of my hate has narrowed.

In particular I started to use them more often to debug or find bugs I’m not aware of, and as result I’ve experience first hand the awe of reading something about my code that I didn’t know, but should have known, and that must be fixed. So it’s easier for me to understand why people are excited about these things to the point where they make exaggerated claims about their capabilities.

I still believe there’s nothing like understanding going on here, not in the sense that I previously used the word, yet it feels natural to talk in such terms after writing a prompt that lightly describes the problem I’m seeing, and getting back either an explanation, a solution, or both. And sometimes, even well argued bullshit. Uncanny, some people would say.

I’ve realised that the latter case, the random crap, is way more subtle than before, due to models improving. You have to be more weary of what you are getting because something may be wrong in a non obvious way, and because it’s non obvious it’s harder to catch. To avoid shipping a rushed solution that seems to work under certain circumstances or that makes the code surface to grow without reason, I still type everything myself. I still believe that writing is a rigorous way of thinking, and that slowing down is good.

But when I’m done, I request the model to make suggestions on the code I’ve worked on. Last time I got six, for a non trivial piece of UI and behaviour. One was completely useless even if technically correct, because the thing really doesn’t know what I’m doing. Two were good and I ended learning something, after manually testing the behaviour and checking the docs. The final three looked OK, but didn’t convince me, so I made some clarifications, tested every option, and ended changing the code in a different way than suggested, fixing the issues at the their source, instead of applying what now I know were ugly work-arounds.

Then I prompt it to find the bugs in the whole project. This is just a scale up version of the above, so it will take longer and the output will be often bigger. As a result, analysing it takes more time, yet I’m starting to feel more confident about what I ship. You have to consider that I’ve been working mostly alone and no review has been performed on my code for the last four years. Every new release makes me feel a bit anxious. I wish I had a colleague to back me up, but as stated by my employer, the idea here is that the current team becomes more efficient. Efficiency was never defined although «productivity» was suggested. I reject that idea and interpret efficiency as deploying something that will require less maintenance and less fixing, even if a bit late. And if I have to, it will be easier to perform both.

So, I still hate so called generative AI and I strongly oppose «generating» anything with it. I do the thinking, because I like to think, and I like to do it in programming languages. Yet language models sneaked into my toolbox—and whatever that comes after could do the same—in the form of AI, short for augmented intelligence. This is obviously not my term, there was a tradition of people thinking about computers in such a way1, 2, 3. It’s time for a renaissance, and it looks nothing like delegating neither thoughts nor techniques. Vibers are holding languages models the wrong way.