Back to Journal

April 2026 · AI at work

AI Can Write Code — But It Doesn’t Build Systems (Yet)

Tools like Claude and Codex are incredibly powerful for writing code. But as projects grow in complexity, the real work shifts from generating code to designing systems — and that still comes from you.

AI can write code.

But building a real product is something else entirely.

The Promise

Over the past few months, I’ve been using tools like Claude and OpenAI Codex to handle a significant portion of engineering work. And to be fair — they are incredibly good.

For simpler applications, they can:

Generate clean components Handle basic integrations Fix bugs quickly Speed up iteration significantly

If the architecture is straightforward and the logic is clear, you can move very fast.

In many ways, it feels like having a highly capable junior engineer — one that never sleeps.

Where It Works Really Well

For apps with:

Clear flows Limited dependencies Minimal edge cases Simple data structures

AI tools perform exceptionally well.

You describe what you want → they generate it → you refine.

The loop is fast. The output is usable. The experience feels almost magical.

Where Things Start to Break

But as the product becomes more complex, the experience changes.

Working on more sophisticated applications, I started to notice patterns:

The codebase becomes messy over time Redundant logic appears in different places “Quick fixes” start stacking up Edge cases are handled inconsistently

And one thing becomes clear:

If you are not precise, the AI will fill in the gaps — often in ways you didn’t intend.

This leads to:

Unnecessary exception handling Overwritten logic Conflicting structures Subtle architectural flaws

Individually, each piece looks fine. But collectively, the system starts to drift.

AI Is Not an Architect

One of the biggest realisations for me was this:

AI can suggest architecture.

But it does not *hold* architecture.

You can ask for best practices. You can ask for system design suggestions.

And the answers can be good.

But when the AI actually writes code across multiple steps, it does not consistently:

Enforce structure Maintain long-term design decisions Protect the integrity of your system

It optimises for the task you just gave it — not the system you are trying to build.

The Responsibility Shifts Back to You

As the builder, you still need to:

Define the workflow Design the schema Decide how components interact Set guardrails for how code should be written

Without this, the AI becomes reactive instead of intentional.

And over time, that creates friction:

Harder debugging Slower iteration Increased technical debt

In other words:

The smarter the tool, the more important your thinking becomes.

Precision Becomes a Skill

With more complex systems, prompting is no longer about:

“Build me this feature”

It becomes:

Modify this function only Do not change existing logic Follow this structure Ensure compatibility with this flow

You are no longer just describing outcomes.

You are guiding implementation.

And that requires a much deeper understanding of your own system.

The Missing Layer: DevOps & Production Reality

Another gap that becomes obvious:

AI helps you write code — but it doesn’t run your system.

For production-level applications, you still need to think about:

Deployment Environment configuration Data integrity Monitoring and logging Error handling at scale

And this is where things get real.

Because:

Getting something to work locally is easy.

Getting it to work reliably in production is not.

You will likely need:

Additional tools More structured workflows And a better understanding of infrastructure

What I’ve Learned

Despite the challenges, this journey has been incredibly valuable.

Not because AI made things easier — but because it made the gaps more visible.

It forced me to:

Think more clearly about systems Be more intentional with design Understand the trade-offs behind decisions

And in many ways, it accelerated learning.

The Philosophy I’m Keeping

AI is not replacing builders.

It is amplifying them.

A clear thinker with AI can move significantly faster. A vague thinker with AI can create problems even faster.

So the mindset I’m keeping is simple:

Use AI to execute.

But own the thinking.

Closing Thought

We are entering a phase where:

Building is more accessible Prototyping is faster Ideas can be tested quickly

But the fundamentals haven’t changed.

Good systems still require:

Clear structure Thoughtful design And intentional decisions

AI can help you build.

But what you build — and how well it holds together — still depends on you, at least for now.