Something is going on in software engineering, and it has nothing to do with which framework won this year.
The debates have changed. The skills that matter have changed. Even what we mean by “good code” has changed. And most of it happened in the last twenty-four months.
Here’s what’s actually going on — and why the developers who see it clearly are going to run the next decade.
The Vibe Has Shifted
Walk into any dev team meeting today and compare the conversation to five years ago.
| Then | Now |
|---|---|
| Tabs vs spaces | Should AI have written this? |
| React vs Vue | Do I trust this pull request? |
| OO vs functional | Do I need to code this myself anymore? |
| Which framework will dominate? | How do we test what AI just generated? |
Same rooms, same engineers, completely different questions.
How Fast Things Actually Moved
In roughly two years:
- Most professional devs got an AI assistant sitting inside their editor
- Hundreds of lines of working code appear in seconds
- Week-long prototypes now take an afternoon
- Boilerplate has basically disappeared
- Docs write themselves
- Unit tests show up on request
The last two years pushed software development further than the previous twenty.
The Real Question Has Changed
Here’s the surprise. Most developers I’ve talked to aren’t losing sleep over AI writing code. They’re wrestling with what happens after the code is written.
Writing code was never the mountain. The mountain was figuring out the right thing to build.
What “quality” used to mean
Ask a developer five years ago what “quality code” meant and you’d get a familiar list:
- Readability
- Maintainability
- Reliability
- Efficiency
- Sensible naming
- Modular design
- No code smells
- Adherence to design principles
None of that is dead. Good code should still be easy to read, easy to test, and easy to change. That craft still matters.
But the center of gravity moved
Clean, well-structured code is no longer the hard part — AI is genuinely competent at it. So the question that determines quality isn’t “is this code well written?” anymore.
It’s “is this even the right thing to be building?”
That’s a much harder question. And it’s the one AI is still bad at answering.
Implementation quality vs decision quality
| Implementation Quality | Decision Quality | |
|---|---|---|
| What it is | Turning a defined problem into working code | Figuring out what to build and how it should fit |
| Is AI good at it? | Yes, increasingly | Not really |
| Direction | Getting easier | Becoming the real differentiator |
| Who owns it | AI + developer | Developer, always |
The role of the engineer is shifting up the stack. From writing code, to being accountable for the decisions around it.
A Concrete Example: The Notification Feature
Your product team asks for a notification feature. Watch what happens.
What an AI assistant produces
In a few minutes, you get:
- An API endpoint
- A database schema
- A queue consumer
- A front-end integration
Looks great. Ships fast.
What an experienced engineer asks first
Before writing a line, they interrogate the design.
Technical questions:
- Should this be event-driven or synchronous?
- What happens when the downstream provider is down for an hour?
- How do retries work? Do we care about ordering?
- What’s the latency budget?
- What breaks when we go from 10K users to 10M?
Business questions:
- Is this the actual problem the customer needs solved?
- Are we optimizing for speed, cost, reliability, or UX?
- How will we know this feature is being used?
The gap between the code AI produces and the questions an engineer would ask is where quality now lives.
Code Review Isn’t About Files Anymore
The old model
Someone opens a PR. You skim the diff. Leave a comment. Approve. Merge. Move on.
Fine, when software was mostly a collection of files.
What modern software actually is
Modern software isn’t files. It’s a web of:
- APIs
- Infrastructure definitions
- Event streams
- Data contracts
- Cloud resources
- Monitoring hooks
- Security policies
- Dozens of downstream services
A one-line change in one place can ripple across half the platform.
The question you should be asking in review
Not “is this function correct?” but “what does this change do to the rest of the system?”
AI will generate whatever code you ask for. The person on the hook for understanding the system is still human.
Testing Isn’t a Best Practice Anymore. It’s the Proof.
The trust equation has changed.
- When a human wrote code, there was reasoning behind it. You could ask them why.
- When AI writes code, it might look beautifully composed. The PR might be huge. The comments read well.
- None of that tells you the code does what it’s supposed to do.
The only thing that tells you that is validated behavior.
What “validated behavior” means in practice
- ✅ Unit tests covering the meaningful cases
- ✅ Integration tests exercising the seams between systems
- ✅ Contract tests catching drift between services
- ✅ Security validation on risky patterns
- ✅ Performance testing that reflects real production load
- ✅ Runtime monitoring
- ✅ Observability that surfaces problems before users do
The subtle shift: We’re no longer trusting code because a trustworthy person wrote it. We’re trusting software because we’ve watched it behave correctly. Confidence now comes from evidence, not from authorship.
Standards Don’t Live in Wikis Anymore
Every engineering org has some version of the same document. And it doesn’t work.
The old approach
- A wiki page laying out naming conventions
- A security checklist somebody wrote three years ago
- A coding standards doc everyone swore they’d read at onboarding
- Half-fiction, went stale within weeks
AI will happily generate code that ignores all of it. Busy teams will happily ship that code.
The new approach: standards as code
Standards that actually matter now live inside the development process itself.
| Standard | Old way | New way |
|---|---|---|
| Security | Checklist in a wiki | Automated checks that block risky merges |
| Architecture | Design doc nobody reads | Templates and scaffolds that bake in the pattern |
| Testing | Team norm | Pipeline blocks PRs without coverage |
| Style | Wiki page | Static analysis runs continuously |
| Policy | Aspiration | Executable rules in CI |
Why this matters more than compliance
- Keeps quality consistent across teams
- Makes it safe to lean into AI aggressively
- When guardrails are real, AI can move fast without bulldozing your data model
- Governance stops being a meeting and becomes part of the pipeline
- The goal isn’t to nag devs into compliance. It’s to make the correct path the easiest path.
When expectations are encoded into workflow, AI gets dramatically more useful — because it’s operating inside boundaries instead of guessing at tribal knowledge.
Quality Isn’t a Checkpoint. It’s a Habit.
The old model
- Final code review
- QA pass
- Release checklist
- Somebody signs off
- Ship
Fine when software shipped a few times a year. Broken now. AI has stretched it further past breaking.
What continuous quality looks like
Every stage of the cycle has to earn its own signal.
- ✅ Every commit triggers validation
- ✅ Every pull request kicks off automated tests
- ✅ Every deployment produces observable signals
- ✅ Every production system generates feedback the team learns from
- ✅ Every iteration folds that feedback into the next round of planning
The mindset shift: Quality isn’t the last step in shipping. It’s woven through planning, coding, review, deployment, and operations. If there’s a single moment where quality is “done,” you’re doing it wrong.
The Skill That Keeps Getting More Valuable
The public conversation still leans on the wrong question — is AI going to replace programmers?
The better question: what becomes more valuable as AI keeps getting better?
The answer is judgment.
Judgment shows up in the moments the notification example doesn’t cover:
- Knowing when an AI-generated solution is quietly wrong, not just when it works
- Reading the tradeoffs a piece of code is making — the ones no one wrote down
- Deciding which evidence to trust when the tests pass but the design is off
- Overriding a “correct” answer because it doesn’t fit where the system is going
- Choosing the simplest solution and refusing the flashier one
AI is getting genuinely excellent at generating solutions. The human job is deciding whether those are the right solutions — and having the confidence to push back when they aren’t.
The Takeaway
For the last decade, the compounding advantage went to the teams that could ship faster. AI has quietly leveled that playing field. Anyone can ship fast now.
The next compounding advantage goes to the teams that decide better. What to build, what to skip, when to trust the machine, when to override it — those calls are going to determine which products survive contact with users and which ones just accumulate features.
Shipping code was already cheap. AI made it nearly free. The scarce resource left is the good taste to know what deserves to ship in the first place.

Leave a comment