I have been programming for 30 years and it has rarely felt boring. Seeing an abstract design come to life in the form of a functional application has always brought me joy like very few other things in life have been able to do. Learning new technologies and building things with them has always been exciting and fulfilling - it has been one of the most important driving forces in my life.
For the past month I have been actively involved in building an agentic AI system based on OpenAI's LLM services. I have built workflows, agents, tools and all that goes with them. And I have built it all twice, as I wasn't happy with the infrastructure of the first attempt. It was brand new ground for me - I had never built anything like it. And it's brand new tech for our company, too. And the system works wonderfully! What the system does is incredible! I should be excited about it. I'm not. I'm frustrated.
The problem is, the LLM - the service provided by OpenAI - is the core of the system, not the things I've built. The things I have built are simple and straightforward. Don't get me wrong, I like simple and straightforward but in this case what I've built is just some cruft on the side. The LLM is the main event.
And what about the core of the system, the LLM? It's a massive, mythical beast I can't even begin to understand. I feed it information and tell what I want it to do but, like all mythical beasts, it does what it wants. And what it wants is constantly shifting.
There's no way to know how the system performs before running the code. It may produce the correct results or it may produce something totally bonkers. There's some correlation between the inputs and the outputs but it's a gamble every time you run the code. And what's the fix to this? Just run the code again. It'll work evetually.
Not only are the results completely separated from the data going into the system, there is also quite a lengthy temporal divide between them. Executing agentic workflows is slow. They gather their own context and take multiple turns to do the tasks they are assigned. And the more they do the longer it takes.
So, the experience from my point of view is this: I have written some really simple code that runs extremely slow and fails more often than not. And there's absolutely no way to test this system without actually running the entire thing. It's so fucking frustrating.
Because building this kind of agentic system is so frustrating, it should be a great fit for vibe coding. Just let the artificial idiot command the lagging language mangler and focus on things you enjoy, right? Nope. I like coding. It brings me joy. I don't want to outsource it to AI as it's the only part of the process I've actually liked. Removing myself from the equation will also remove my vision from the result. And reinjecting vision into a project is next to impossible.
What's the solution, then? I honestly don't know. Just suck it up and suffer through it? Probably. The only thing I can come up with is to just seek joy in the process - no matter how frustrating it feels.
.png)

