I have been working with GenAI for the last few years, but I still believe Software Engineering should stay at the center of everything we build.

To be honest, some of the current industry hype is hard for me to fully understand.

LLMs are powerful. I do not deny that. I use them a lot. I have built with them. I have also seen them work surprisingly well in real systems.

But they are still not always correct.

They can produce wrong answers with a lot of confidence. And lately, we are even seeing a strange loop where something generated by one LLM gets reused, summarized, or cited by another LLM as if it were a reliable source.

At some point, it becomes difficult to tell where the actual truth started and where the generated confidence began.

That is why I tend to look at AI with a skeptical mindset.

Not because I do not believe in AI.

Actually, it is almost the opposite. I am skeptical because I have used it, built with it, and operated systems around it. I have seen both the value and the limitations.

Building an Agent Is Usually Not the Hard Part

People sometimes ask me:

What is the most complex agent system you have built?

My honest answer is that building an agent itself is usually not the hardest part.

In many cases, an agent is a workflow orchestration system with an LLM in the loop. Sometimes it is a variation of the ReAct pattern. You give the model tools, let it reason over the current state, execute an action, observe the result, and continue.

For a demo, this can be built quite quickly.

The Real Complexity Starts After That

The real complexity starts when the agent has to run as part of a real software system.

Then the questions become different.

  1. How do you know whether the agent is actually doing a good job?
  2. How do you build evals?
  3. Where does the test data come from?
  4. How do you control traffic?
  5. How do you handle bad tool calls?
  6. What happens when the model makes a wrong decision?
  7. When should the system stop?
  8. When should a human be involved?
  9. How do you manage cost and latency?
  10. Can you reproduce a failure?
  11. Can you trace what happened?
  12. Can an operator understand the system at 2 a.m. when something breaks?

These are the hard parts.

Building an agent and operating an agent system are two very different things.

It is similar to the difference between building a toy operating system and building something like Windows. Both may be called an operating system, but the engineering gap between them is enormous.

The Gap Between Demo and Production

I feel like this gap is often ignored in the current AI conversation.

“Agents will do everything.”

“Developers will not be needed.”

“Just ask AI to build it.”

These statements are easy to say, but they skip over the actual engineering work.

Of course, AI is already useful. Very useful.

It is great for repetitive work, boilerplate code, first drafts, code exploration, test generation, documentation, and many other tasks. I use it for these things myself.

But once AI starts touching core product logic, customer data, payments, permissions, security, or incident response, the conversation changes.

At that point, the important question is no longer just:

Can AI do this?

The better question is:

What happens when AI is wrong?

I Am Not Against AI

This is why I do not see AI systems as magic. I see them as software systems.

And once something becomes a software system, all the old engineering questions come back.

  • Testing
  • Observability
  • Access control
  • Failure recovery
  • Rollout strategy
  • Fallbacks
  • Audit logs
  • Cost control
  • Human-in-the-loop
  • Rollback

None of this is new.

But with AI, it becomes even more important.

Software Engineering Still Matters

The more code LLMs generate, and the more actions agents are allowed to take, the more disciplined we need to be as engineers.

We need to keep asking:

  • How does this system fail?
  • Is it safe when it fails?
  • Can we measure it?
  • Can we reproduce it?
  • Can we operate it?

Building an agent is only the beginning.

The hard part is turning it into a software system that people can actually trust.

Building AI Agent Is Not the Hard Part