A junior engineer, despite successfully shipping a production-ready feature with passing tests and green metrics, appeared exhausted and somewhat lost. “I can't explain how it works,” he admitted.
It wasn't for lack of trying. He had spent twenty minutes before our meeting attempting to trace the logic and reconstruct the reasoning behind the function. The code compiled, tests passed, but when he tried to dissect it line by line, genuine understanding eluded him. The logic felt borrowed, alien, like reading someone else’s handwriting and realizing you don't recognize your own name.
The code was his. He had written it. But he hadn't truly written it.
The Friction Is Gone
He recounted how he tackled a problem he didn’t fully grasp by describing it to an AI assistant. The AI generated plausible code, which compiled, passed tests, and was shipped. This entire cycle took a mere fraction of the time it would have taken him to wrestle with the problem independently, get stuck, unstick himself, and genuinely comprehend what he was building.
The critical friction that once compelled understanding was gone.
A poignant observation I heard stuck with me: “weak devs plus AI equals weak output … faster.” Junior engineers feeling this impact aren’t struggling because AI is complex; they’re struggling because AI made it too easy to bypass the essential work that builds judgment and deep understanding.
The friction that used to force understanding was gone.
What Gets Lost When Speed Wins
This isn't an isolated incident; the pattern is becoming widespread. Pull requests (PRs) are growing larger, while review comments are shrinking. The underlying energy of engineering work is shifting, and not towards better practices.
In a discussion thread involving over 500 experienced engineers, consistent stories emerged about the rollout of AI tools without thoughtful guardrails. PRs ballooned as AI generated more code than humans could reasonably review. Codebases became riddled with inconsistent patterns, as each engineer, through different prompts, arrived at slightly varying solutions for the same problem. Service boundaries blurred, and error handling became a patchwork. The codebase began to resemble less of an intentional system and more of a “junk drawer with a CI/CD pipeline.”
One engineer's description resonated deeply: the first sign wasn’t a missed deadline or an overnight quality collapse. It started earlier and more subtly. Engagement dropped first. People began to disengage. Then, the quality of the work...