At SINAPTIA, we started enforcing a no “AI code in production” directive.
LOL, no. We are not the next tier of Luddites! We started using AI-assisted code generation a little over a year ago, and from the looks of it, we are going to use it even more in the near future. AI is here to stay, and programming will never be the same, what a time to be alive and so on, and so on…
But also, in a couple of years, we’ll all lose our jobs. What a time to be alive, indeed.
We continually ask ourselves: what’s the AI capable of? Can it really replace us? Can it change the way we work? Will it make our problems simpler? Or there will be another kind of problems, more problems? Are we attending the death of software engineering?
There’s only one way to find out.
Initially, we were somewhat skeptical about coding agents. We tried them, but the autocomplete feature was usually annoying, and the chat mode wasn’t smart enough to understand the context of the code. But then, at some point, Claude Code and Cursor became smart enough to be of massive help while building features: they could explain things easily in the context they were in, and they could edit text nicely.
Since then LLMs and coding agents became a key part of our daily routine and we started building more and more features using AI, and growing tools for the RubyLLM ecosystem (such as RubyLLM::Instrumentation, RubyLLM::Monitoring, and RubyLLM::Evals) that we use in our projects and we open-sourced for the larger community in hope to make Ruby one of the top languages for building with AI.
The problem with AI-generated code
I bet at some point you stumbled upon a piece of code that achieved something, but it was hard to understand, poorly thought out, or just ugly (eg, for us, Rubyists, seeing Ruby code that doesn’t feel Ruby). That happened a lot in the StackOverflow era.
With AI-generated code, it’s the same as with any code you didn’t write yourself. You might find AI-generated code hard to understand, poorly thought out, or even solving problems that no one asked to solve.
We’ve seen coding agents working without oversight and proper feedback going down paths that ended up in code that no one would be able to manage. Neither the coding agents nor the humans. Discard and regenerate is a possibility, yes, but tokens are not actually free, and budgeting and financials are something coding agents cannot fix either.
Models and agents will become better over time, and the barrier might be farther away each time, but the problem will always be there.
The hard parts
After more than a year of using coding agents for our daily work, developing AI-powered features, and running several experiments, we feel that AI is truly a multiplier force, but it isn’t changing the most fundamental bits of programming and software production: the hard parts of software production are still hard.
The power of solving a complex problem with a simple and elegant solution/architecture is what makes a good engineer a great one. And AI can help one do so, but is not able to come up with such architectural decisions on its own (at least not yet).
But in the areas where the AI excels, we should try to leverage it. I, honestly, cannot care less if you wrote the code we just deployed to production by punching holes in a card, taping keys in a keyboard letter by letter, copying-pasting snippets from StackOverflow, or you used a high-rate probabilistic word predictor that can produce hundreds of words per second. Tools are not at trial here. But, regardless of how that code came to life, I do care you don’t fall prey to the laziness of not curating the code you produce, of validating it and understanding it (There are many ways to do this, and they are changing, but isn’t this what engineering is about?)
Striving for quality and good architectural decisions is still central. Simplicity is still the only way software remains workable in the long run. For humans, yes, but for AI agents too.
Simple was hard in the pre-AI era and is still hard today (perhaps even harder), but what’s simpler for humans is also simpler for agents. And it is still worth all the effort.
So we say: There is no such thing as AI code. We just have code: good, bad, simple, or complex. And we have tools and processes to deal with it. Like we always did.
So, long live power tools. Long live software engineering.
At SINAPTIA, we specialize in helping businesses implement AI solutions that deliver real value. If you’re facing challenges with prompt engineering or AI integration, we’d love to help.