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.

ThenNow
Tabs vs spacesShould AI have written this?
React vs VueDo I trust this pull request?
OO vs functionalDo 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 QualityDecision Quality
What it isTurning a defined problem into working codeFiguring out what to build and how it should fit
Is AI good at it?Yes, increasinglyNot really
DirectionGetting easierBecoming the real differentiator
Who owns itAI + developerDeveloper, 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.

StandardOld wayNew way
SecurityChecklist in a wikiAutomated checks that block risky merges
ArchitectureDesign doc nobody readsTemplates and scaffolds that bake in the pattern
TestingTeam normPipeline blocks PRs without coverage
StyleWiki pageStatic analysis runs continuously
PolicyAspirationExecutable 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

I’m Mahesh

Welcome to MaheshNotes, a space on the internet where I like to share my knowledge and experience as a software engineer.

Let’s connect