I (we?) am at a point where almost every line of code comes from AI π€
This leads to a critical shift for software engineers, more and more imminent: your expertise changes from code "producer" to "orchestrator".
Less writing and more reading. Less details, more board architecture. Less defining the solution, and more defining the problem ποΈ
Let's see how in practice π
What needs solving?
The bottleneck used to be implementing a solution. Now it's coming up with the right problem.
When implementation is fast, the real issue is defining the correct feature to implement π
Iteration speed is getting extreme. Let me give you a personal example.
I am working on an app (private for now): full stack effect, xstate, Cloudflare workers, Durable Objects, AI. Not a toy app anymore.
In the last 2 months all the iteration was about what features to build, not how π€
Like this: think of a concept (research with AI), define the features, write TODOs. Then launch AI agents and let them build, fast, all in less than 1 day.
Then push to users, get feedback, define new iteration, and repeat.
This loops in repeat. Notice how writing the code is just a small chore π
Two building blocks unlock this iteration speed:
- Solid architecture, patterns, type safety and automatic checks
- Software engineering expertise
Type safety matters, even more than before
The first "secret" is code architecture.
The number one concern: Strict Type Safety π
The AI cannot mess up if the type system does not allow it.
Unless it skips checks with wrong patterns like as any. And that's where the second piece enters the game:
Number two concern: Strict type checks and linting π
A linting steps stops any slop to reach production. Even if the AI can bypass tsc, another lint step awaits. And eventually, if needed, test.
One more: controlling the code π
You cannot control what you don't understand
After years of coding, you get to a point where you saw most of everything.
Database of all kinds, web APIs, auth, storage, http requests pitfalls. And more.
At this level, you generally have an idea of how something ought to be implemented π€
This unlocks super fast AI speed:
- I know how to describe the solution in technical details
- I know the codebase and which files to reference for the AI
- I know which files should be updated, and which not
- I know at a glance what patterns are fine and which not
When I launch an agent, I immediately see by its thinking logs if something is off, and I can interject immediately.
Then, when the feature is build, I know how to quickly review the patterns (not the details).
AI tend to copy patterns in the codebase, or create ones if nothing is found (bad ones usually) π
My role is now to keep a strict check on correct patterns, and make sure the AI follows them. Or steer the wheel when a new bad pattern creeps in.
In summary: understanding the code still matters. And the better you are at it, the faster you can move, without breaking things.
If anything, being able to read and understand code, fast, will be the next big engineering skill.
Some work going on behind the scenes, in my plan to make all more type safe:
I plan to make XState v6 work naturally with Effect (with @SandroMaglione's help)
See you next π
