DEV Community

Cover image for Most Engineers Use AI. Few Engineer With It.
Jeel Vankhede
Jeel Vankhede

Posted on • Originally published at jeelvankhede.hashnode.dev

Most Engineers Use AI. Few Engineer With It.

The shift from syntax to system design

Most software engineers I know use AI in some form now.

Maybe it is for debugging, boilerplate, tests, docs, SQL queries, shell commands, or quick code reviews. Some use it daily. Some use it quietly. Even the skeptical ones have probably pasted a confusing stack trace into a chat window once.

So I do not think the interesting question is:

“Do engineers use AI?”

The better question is:

“Has AI changed how they engineer?”

Because those are not the same thing.

Using AI is easy.

Engineering with AI is much harder.

The hard part was not code generation

I noticed this while using AI around real repository tasks where a wrong change was not just “bad output”; it could break structure, tests, naming, or future maintainability.

The code generation part was easy. A broad prompt could produce a lot of code quickly. Sometimes the output even looked clean at first glance.

But the useful results came only when I had already done the boring engineering work: define the requirement, limit the scope, explain constraints, and decide how I would verify the change.

The hard part was not asking AI to write code.

The hard part was giving enough context without dumping everything into the prompt. It was making the task small enough. It was asking for tradeoffs before implementation. It was reviewing the output without getting impressed by clean formatting.

Most importantly, it was checking whether the solution actually belonged in the system.

That changed how I looked at AI-assisted development.

Prompting was not the real skill.

Shaping the work was.

AI makes output faster, not verification stronger

There is nothing wrong with using AI for small tasks.

I use it for debugging direction, naming, boilerplate, test ideas, documentation drafts, and exploring unfamiliar code. Those are useful tasks. They reduce friction.

But the risk starts when faster output gets mistaken for better engineering.

AI can generate code quickly. It can produce clean-looking functions, structured files, confident explanations, and reasonable test cases. But it does not automatically know whether the change fits your product, your architecture, your constraints, or your long-term maintenance cost.

That part is still engineering work.

The problem is not simply that AI may produce bad code. Engineers already deal with bad code from humans, libraries, tutorials, Stack Overflow answers, and their own tired brains.

The bigger problem is that AI increases the speed of output without increasing the quality of verification.

If code becomes faster to generate, unclear requirements become more expensive. Weak review becomes more dangerous. Missing tests become more painful. Poor architecture becomes easier to copy and harder to undo.

AI does not automatically improve engineering.

It amplifies the engineering loop that already exists.

Think twice, code once

AI makes it easier to produce code before we have fully understood the problem.

That is useful when the task is clear.

It is dangerous when the task is vague.

If the requirement is unclear, AI will still produce something. If the architecture is messy, AI will still copy the mess. If the engineer cannot review the output properly, speed becomes risk.

This is why I think “AI will replace engineers” is the least useful version of the conversation.

A better question is:

“What parts of engineering become more important when code becomes cheaper to generate?”

My answer is: thinking clearly before implementation.

AI makes the old advice more important, not less:

Think twice, code once.

Before asking AI to build, define the problem.

Before accepting the answer, check the tradeoffs.

Before merging the change, verify the behaviour.

The value of engineering is shifting away from simply writing code and more toward shaping the right change.

What engineering with AI looks like

For me, engineering with AI means treating it less like a magic answer box and more like a collaborator that needs structure.

The work starts before implementation: write the requirement, narrow the scope, give useful context, ask for risks, and force a plan before code.

After implementation, the responsibility comes back to the engineer: review the diff, run the checks, and decide whether the change belongs in the system.

A useful AI-assisted loop can be simple:

Requirement → gaps → plan → small change → review → checks → notes

This is not the glamorous version of AI development.

But it is closer to real engineering.

Because real engineering is not just producing code.

It is producing reliable change.

The real shift

The next shift in software engineering will not be about who can generate the most code.

That advantage is already becoming cheaper.

The harder advantage is knowing what should be built, how it should fit into the system, and how to verify that it works.

That is where AI-assisted engineering becomes interesting.

Not because AI replaces engineering judgment.

Because it makes engineering judgment harder to skip.

Most major engineering tools became valuable only after teams changed the workflow around them. Git changed collaboration. Cloud changed infrastructure. CI/CD changed shipping.

AI is broader, messier, and moving faster than those shifts, so I do not want to pretend it will follow the exact same path.

But the lesson still feels familiar:

The tool matters.

The workflow around the tool matters more.

The engineers who benefit most will not necessarily be the ones who use AI the most. They will be the ones who design better loops around it: clearer specs, smaller changes, stronger reviews, better tests, and more deliberate decisions.

So yes, most engineers use AI now.

But only a few are starting to engineer with it.

The best engineers in this phase may not be the fastest prompt writers.

They may be the ones who can slow the problem down before speeding the implementation up.

Top comments (15)

Collapse
 
roshan_sharma_727f281cdd4 profile image
Roshan Sharma

This is an incredible perspective, Jeel. There is a massive difference between just using an AI chatbot to generate basic syntax snippets and actually engineering fully autonomous system workflows.

I've been trying to bridge this exact gap on my current project (an interactive, live portfolio over at roshansharma.co.in). I built a Next.js frontend integrated with an autonomous chat agent backed by a Supabase vector database for a custom RAG pipeline, complete withElevenLabs voice guide sync.

Since you have such a sharp focus on real-world AI engineering over boilerplate generation, I’d love it if you could take a look at the layout and architecture breakdown in my recent post. I'm always looking to refine my state logic and context retrieval methods—any technical feedback on areas I can improve or optimize would be huge!

Collapse
 
jeelvankhede profile image
Jeel Vankhede

Sure, I'll have a look and keep you posted. I have a lot to share, stay tuned! 🙂

Collapse
 
roshan_sharma_727f281cdd4 profile image
Roshan Sharma

Awesome, Jeel! I'm incredibly excited to hear your thoughts and dive into that feedback.

I actually just published a dedicated community update post detailing a major structural hardening pass I completed on the production environment (refactoring the UI/UX onboarding flow, handling client-side markdown parsing, and spinning up explicit data disclosures).

Since you have such a solid perspective on real-world engineering mechanics, I'd be incredibly grateful if you could check out the live site at roshansharma.co.in or drop your technical suggestions directly on that new write-up. If the implementation resonates with you, leaving a reaction or sharing your perspective on the post would mean the world. Looking forward to your insights!

Collapse
 
henry_dan_81513dd35a2f540 profile image
Ted

Really appreciate this perspective. It highlights a massive shift in how we need to train the next generation of engineers.

Historically, juniors learned by wrestling with the syntax and boilerplate (the "easy" part AI handles now). If the value has shifted entirely to "shaping the work" and "verification," we need to teach system thinking and critical code review much earlier in a developer's career. The prompt isn't the skill; the judgment is.

Collapse
 
ferdinand_mthodman_3249 profile image
Ferdinand Méthod-Man

Je pense que c'est exact, je conçois avec l'IA depuis déjà 3 mois et je comprends ce point de vu sur l'apprentissage. J'aimerais pouvoir augmenter mes compétences en vu de pouvoir mieux structurer mon travail et m'appliquer à la vérification du Code générer par l'IA.

Collapse
 
eryndrix profile image
Vladislav Malikov

I’m skeptical of trusting code generation to AI. In practice, models frequently violate established design patterns, break architectural boundaries, and introduce unexpected dependencies, which increases technical debt and reduces system predictability. Generated code may be syntactically correct but often fails to preserve critical invariants, module contracts, and non-functional requirements (performance, security, observability).

A far more acceptable paradigm is for an LLM to act as a tool to train and orchestrate a specialized model (LM) that performs strictly bounded, verifiable tasks within well-defined limits.

Collapse
 
unitbuilds profile image
UnitBuilds

Yip... I mean look at all the oopsie daisies from Claude... Deleting production DBs because someone just accepted, when Claude thought it was a test db. That being said, I do believe that how you use the AI is important to clarify. If you tell an AI "Make me a messenger app", it'll do just that, but without boat loads of context, it'll fail to create the product you envisioned as a simple example. It was one of the things I struggled with the most when I started UnitBuilds, is simply figuring out how to orchestrate LLMs to not step on eachother's toes, build an actually useful app, make sure it's actually tested and not just unit tests, make sure it's secure (ai loves AllowAnonymous), make sure it's robust (they also dont really do invalid data guards well), all things that honestly just make them more of a burden than effective. But it was because I treated AI like it knew everything and could do anything. Fact is, it cant, atleast not all at once. But when you tell it 'here's file 1, here's file 2, create a bridge for Parameter A', it'll do it flawlessly. Context is a burden to AI, not a silver bullet and people need to understand that. If you bloat your context, it hallucinates. If you keep it tight, it works much better. MCPs also help alot, knowledge graphs, codebase maps, dependency graphs, etc. So it can detect breaking changes before it makes them. All little things, each adding maybe 0.1% better output quality, but in the end it becomes a trial and error run, rather than a suicide bomber training camp.

Collapse
 
julianneagu profile image
Julian Neagu

This matches what I’ve seen in real repos. AI makes it easy to generate patches, but the real bottleneck is still understanding scope and boundaries before touching code.
Most breakages come from unclear requirements, not bad generation.

Collapse
 
kartik-nvjk profile image
Kartik N V J K

The line about already deciding how you'll verify the change before prompting is the whole game for me. Clean-looking output is the trap, because review effort scales with how much code you accepted, not how much you wrote, so a fast 200-line diff can cost more attention than it saved. I've started treating "what test or check proves this is right" as the first prompt instead of the last.

Collapse
 
brady_vitrano profile image
Brady Vitrano

Back to basics with domain modeling

Collapse
 
ferdinand_mthodman_3249 profile image
Ferdinand Méthod-Man

Je trouve aussi 👍

Some comments may only be visible to logged-in visitors. Sign in to view all comments.