The junior developer extinction: the missing seniors of 2035

Entry-level developer hiring has collapsed by 73% whilst companies celebrate AI as a replacement for junior talent. But senior developers do not materialise from thin air—they are grown from juniors over five to ten years. We are watching an industry cannibalise its own future.

Senior developers are made, not hired. Every experienced developer carries knowledge that cannot be documented—why that particular abstraction exists, why the "obvious" refactor would break hidden dependencies, which mistakes are worth making and which must be avoided. This knowledge transfer happens through years of mentorship: asking questions, pair programming on complex problems, watching experienced developers debug production incidents. It cannot be compressed into documentation or tutorials. It requires time, proximity, and patience.

Now I watch companies eliminate those seats entirely. Junior developer positions have become endangered species, sacrificed on the altar of AI efficiency. The logic seems sound: why hire someone who needs training when an AI can generate code instantly? Why invest in a developer who won't be productive for six months when a language model is productive immediately?

The flaw in this logic is so fundamental that it astonishes me how many intelligent people miss it. Senior developers are not hired. They are grown. Every senior developer you have ever worked with was once a junior who knew nothing, who made stupid mistakes, who needed patient mentorship and years of practice to become valuable. If we stop growing juniors today, we will have no seniors tomorrow.

The numbers tell a stark story. Entry-level developer hiring has collapsed by 73.4% whilst overall tech hiring dropped only 7.4%.1 A Harvard study examining 285,000 firms found that when companies adopt generative AI, junior employment drops approximately 8% within six quarters—whilst senior employment barely changes.2 Stanford's Digital Economy research shows employment among young developers aged 22-25 has declined nearly 20% from its 2022 peak.3 We are witnessing the systematic elimination of the bottom of the career ladder.

This is not a temporary correction. This is a structural shift. According to a recent LeadDev survey, 54% of engineering leaders actively plan to hire fewer juniors because AI copilots enable seniors to handle more work.4 Seventy percent of hiring managers believe AI can do intern jobs, and 37% would rather "hire" AI than a recent graduate.5 Tech internships have dropped 30% since 2023.6 The message to new graduates is clear: you are being replaced before you even start.

The pipeline problem

Here is a question that should keep every CTO awake at night: where will your senior developers come from in 2035?

The typical journey from junior to senior takes five to ten years. A developer needs one to three years to master the basics, another two to four years to develop architectural thinking and mentoring skills, and several more years to build the judgement that comes only from shipping software, watching it break, and learning from the wreckage. There are no shortcuts. You cannot compress this timeline by reading documentation or watching tutorials. The skills that make a senior developer valuable—debugging intuition, system design instincts, the ability to navigate organisational complexity—are developed through practice, mentorship, and time.

If companies stopped hiring juniors in 2024-2025, those absent juniors cannot become mid-level developers in 2028 or senior developers in 2033. The pipeline doesn't pause; it empties. And once emptied, it cannot be quickly refilled. You cannot hire experience that does not exist.

The industry is creating what researchers call a "self-inflicted talent drought". Without junior employees learning from senior ones and eventually replacing them, organisations risk hollowing out their own talent ecosystems. We have seen this pattern before. When companies offshored entry-level development work in the 2000s, they created a "missing middle" in domestic career development—a gap in the career ladder that persisted for years.

Matt Garman, CEO of AWS, pushed back hard on the idea of replacing entry-level developers with AI, calling it "one of the dumbest things I've ever heard."7 His question cuts to the heart of the problem: "How's that going to work when ten years in the future you have no one that has learned anything?"

The assumption driving these decisions is that AI will continue improving until it can handle all the work currently done by juniors, then mid-level developers, then perhaps seniors too. But this assumption ignores what junior developers actually do and why it matters.

Junior developers are not just cheap labour producing simple code. They are the learning ground for the entire profession. They ask naive questions that expose assumptions seniors have forgotten they made. They bring fresh perspectives uncorrupted by "we've always done it this way." They force senior developers to articulate knowledge that has become unconscious, making that knowledge transferable. They provide the redundancy that allows organisations to survive when senior developers leave.

When you eliminate junior positions, you don't just save salary costs. You lose the questioning, the fresh thinking, the knowledge formalisation, and the organisational resilience. You create a team of seniors who can maintain what exists but struggle to explain, document, or transfer their knowledge because they have no one to transfer it to.

The retirement cliff compounds the crisis

The junior developer extinction is occurring simultaneously with another demographic crisis: the retirement of experienced developers. Roughly 75 million Baby Boomers are expected to retire by 2030.8 In technology specifically, with the developer workforce heavily concentrated in the 25-34 age range, the experienced cohort is smaller than in many industries—and shrinking.

The COBOL situation offers a preview of our broader future. The typical COBOL programmer is now around 58-60 years old, with the vast majority expected to retire by 2030.9 Very few schools still teach COBOL, and many colleges have not taught it in their computer science departments since the 1980s. Yet 95% of ATM transactions and 70% of banking systems still run on COBOL. We are facing a knowledge cliff with no one to catch the falling expertise. The industry spent decades calling COBOL obsolete whilst continuing to depend on it. Now it scrambles to find anyone who can maintain the systems it refused to replace.

Research shows that 72% of managers across retail and manufacturing are not confident their companies can retain knowledge when experienced workers retire. The same dynamic applies to software development. When senior developers retire, they take with them decades of institutional knowledge—why that system was built that way, what happens if you change this configuration, which vendor promises to trust and which to ignore.

In healthy organisations, this knowledge transfer happens naturally. Senior developers mentor juniors, who become mid-level and take on more responsibility, who eventually become seniors themselves as the previous generation retires. The knowledge passes from generation to generation like an oral tradition.

But we have broken this tradition. We are simultaneously losing seniors to retirement and refusing to create new juniors. The result will be a catastrophic loss of institutional knowledge with no mechanism for replacement.

The AI productivity paradox

The cruel irony is that the AI tools supposedly replacing junior developers do not work as well as claimed, particularly for experienced developers working in familiar codebases.

A recent METR study found something remarkable: experienced developers using AI tools (Cursor Pro, Claude 3.5/3.7 Sonnet) on projects where they had an average of five years of prior experience were actually 19% slower than when working without AI.10 Before starting tasks, these developers forecast that AI would reduce completion time by 24%. After completing the study, they estimated AI had reduced time by 20%. The objective measurement showed the opposite—AI slowed them down.

This aligns with other findings about AI-generated code quality. Analysis of Fortune 50 companies found that AI-assisted developers produced three to four times more code but generated ten times more security issues.11 GitClear's analysis of 211 million lines of code showed code clones rising from 8.3% to 12.3% whilst refactoring dropped from 25% to less than 10%.12 We are generating more code of lower quality.

The joke that "two engineers can now create the tech debt of fifty" contains a grain of truth. AI amplifies productivity in generating code—including generating technical debt, security vulnerabilities, and maintenance nightmares. Without junior developers learning proper practices and senior developers having time to review and mentor, the code quality spiral will accelerate.

Even Andrej Karpathy, who popularised the term "vibe coding" for AI-assisted development, stepped back from his own creation.13 His latest project was entirely hand-coded. "I tried to use Claude/Codex agents a few times but they just didn't work well enough at all," he posted recently.14

Junior developers learning to debug often spend hours on issues that experienced developers solve in minutes. This apparent inefficiency is actually investment. The learning happens through struggle—forming hypotheses, reading stack traces, eliminating possibilities systematically. This develops debugging instincts that transcend any specific bug fix. That learning cannot be compressed into an AI prompt. It requires the struggle.

The hidden costs of short-term thinking

When companies eliminate junior developer positions, they typically calculate savings based on salary differential. A junior developer might cost 150,000. Replacing one senior's capacity with AI tools might cost $2,000 annually. The spreadsheet math looks compelling.

But this accounting ignores the full cost structure. Direct costs of not hiring juniors include future senior developer scarcity—by 2035, the supply of experienced developers will be drastically reduced, and those who exist will command premium salaries. Knowledge transfer failure means institutional knowledge leaving with retiring seniors cannot be replaced. The recruiting cost explosion is coming; when everyone needs seniors and no one has grown them, recruiting becomes a zero-sum competition that drives costs up for everyone.

Indirect costs compound the problem. Innovation capacity degrades because junior developers bring fresh perspectives and challenge assumptions; without them, organisations calcify. The quality spiral accelerates as AI-generated code reviewed only by overworked seniors accumulates technical debt faster than it can be addressed. Senior burnout rises as experienced developers take on more work without support, leading to higher turnover and further knowledge loss.

The organisations cutting junior positions are engaged in tragedy of the commons thinking. Each individual company benefits from not paying to train juniors whilst benefiting from the juniors trained by others. But when every company adopts this strategy, no juniors are trained, and the entire industry suffers. Everybody assumes somebody else will train the next generation. Everybody is wrong.

The choice ahead

The solution is not complicated, though implementing it requires rejecting short-term thinking. Companies must treat junior hiring as pipeline investment rather than cost centre elimination. Entry-level positions need to be maintained even when AI tools reduce immediate productivity needs. Knowledge transfer systems must be formalised before retiring seniors leave. And the industry collectively needs to recognise that training the next generation benefits everyone—including competitors.

The alternative is already visible. By 2035, we will face a severe shortage of senior developers, not because people stopped learning to code, but because we refused to let them start. The COBOL crisis will expand from legacy banking systems to modern web applications, mobile platforms, and cloud infrastructure. Knowledge will be lost not because it was never documented, but because no one remained to understand the documentation.

We are not watching AI replace human developers. We are watching an industry cannibalise its own future, one eliminated junior position at a time.

Footnotes

  1. Ravio. (2025). "Tech hiring trends in 2025: the 4 big shifts shaping the tech job market." Ravio.

  2. Lichtinger, G., & Hosseini Massoum, S. M. (2025). "Generative AI as Seniority-Biased Technological Change: Evidence from U.S. Résumé and Job Posting Data." Harvard University.

  3. Stanford Digital Economy Lab. (2025). "Canaries in the Coal Mine? Six Facts about the Recent Employment Effects of Artificial Intelligence." Stanford Digital Economy Lab.

  4. LeadDev. (2025). "The Engineering Performance Report 2025." LeadDev.

  5. Intelligent.com. (2025). "8 in 10 Companies Plan To Layoff Recent College Grads This Year Due to AI." Intelligent.com.

  6. Handshake. (2025). "Tech internship postings dropped by 30 percent from January 2023 to January 2025." SF Standard.

  7. Entrepreneur. (2025). "One of the Dumbest Things I've Ever Heard: Here's Why Companies Shouldn't Replace Entry-Level Workers With AI, According to the CEO of Amazon Web Services." Entrepreneur.

  8. Cogent. "The Great Retirement: Are Baby Boomers causing today's hiring shortage?" Cogent.

  9. FireHire. "How old is the average COBOL programmer?" FireHire.

  10. METR. (2025). "Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity." METR.

  11. The Register. (2025). "AI code assistants improve production of security problems." The Register.

  12. GitClear. (2025). "AI Copilot Code Quality: 2025 Data Suggests 4x Growth in Code Clones." GitClear.

  13. Wikipedia. "Vibe coding." Wikipedia.

  14. Karpathy, A. (2025). "I tried to use claude/codex agents a few times but they just didn't work well enough at all." X (formerly Twitter).

Published on:

Updated on:

Reading time:

11 min read

Article counts:

50 paragraphs, 2,075 words

Topics

TL;DR

A Harvard study of 285,000 firms found junior employment drops approximately 8% within six quarters of AI adoption, whilst senior roles remain stable. Entry-level tech hiring has plummeted 73.4% compared to 7.4% across all levels, with 54% of engineering leaders planning to hire fewer juniors. The industry is creating a "missing generation"—without entry-level developers learning the craft, there will be no senior developers in 2035. AWS CEO Matt Garman called replacing juniors with AI "one of the dumbest things I've ever heard." The solution requires treating junior hiring as pipeline investment, not cost centre elimination.

More rabbit holes to fall down

11 min read

The architecture autopsy: when 'we'll refactor later' becomes 'we need a complete rewrite'

Early architectural decisions compound over time, creating irreversible constraints that transform minor technical debt into catastrophic system failures. Understanding how seemingly innocent choices cascade into complete rewrites reveals why future-proofing architecture requires balancing immediate needs with long-term reversibility.
19 min read

The symptom-fix trap: Why patching consequences breeds chaos

In the relentless pressure to ship features and fix bugs quickly, development teams fall into a destructive pattern of treating symptoms rather than root causes. This reactive approach creates cascading technical debt, multiplies maintenance costs, and transforms codebases into brittle systems that break under the weight of accumulated shortcuts.
20 min read

The velocity trap: when speed metrics destroy long-term performance

Velocity metrics were meant to help teams predict and improve, but they have become weapons of productivity theatre that incentivise gaming the system while destroying actual productivity. Understanding how story points, velocity tracking, and sprint metrics create perverse incentives is essential for building truly effective development teams.

Further musings for the properly obsessed

15 min read

AWS sub-accounts: isolating resources with Organizations

Most teams dump client resources into their main AWS account, creating an administrative nightmare when projects end or security issues arise. AWS Organizations sub-accounts provide hard security boundaries that separate resources, limit blast radius from incidents, and make cleanup trivial—yet many developers avoid them, assuming the setup complexity outweighs the benefits.
9 min read

The 2038 problem: when time runs out

At exactly 03:14:07 UTC on January 19, 2038, a significant portion of the world's computing infrastructure will experience temporal catastrophe. Unlike Y2K, this isn't a formatting problem - it's mathematics meets physics, and we can't patch the fundamental laws of binary arithmetic.
18 min read

Sprint overcommitment: the quality tax nobody measures

Three features in parallel, each "nearly done". The authentication refactor sits at 85% complete. The payment integration passed initial testing. The dashboard redesign awaits final review. None will ship this sprint—all will introduce bugs next sprint. Research shows teams planning above 70% capacity experience 60% more defects whilst delivering 40% less actual value.
12 min read

Technical debt triage: making strategic compromises

Simple CSV export: one day estimated, three weeks actual. User data spread across seven tables with inconsistent types—strings, epochs, ISO 8601 timestamps. Technical debt's real cost isn't messy code; it's velocity degradation. Features take weeks instead of days. Developers spend 17 hours weekly on maintenance from accumulated debt.
10 min read

Environment reproducibility: Docker vs. Nix vs. Vagrant

Production threw segmentation faults in unchanged code. Four hours revealed the cause: Node.js 18.16.0 versus 18.17.1—a patch version difference in native addon handling exposing a memory corruption issue. Environment drift creates space for bugs to hide. Docker, Nix, and Vagrant solve reproducibility at different levels with distinct trade-offs.
9 min read

Reproducible development environments: the Nix approach

Dozens of Go microservices in Docker, almost a dozen Node.js UI applications, PostgreSQL, Redis. Extensive setup process. Docker Desktop, Go 1.21 specifically, Node.js 18 specifically, PostgreSQL 14, build tools differing between macOS and Linux. When it breaks, debugging requires understanding which layer failed. Developers spend 10% of working time fighting environment issues.
10 min read

The hidden cost of free tooling: when open source becomes technical debt

Adding file compression should have taken a day. Three packages needed different versions of the same streaming library. Three days of dependency archaeology, GitHub issue spelunking, and version juggling later, we manually patched node_modules with a post-install script. Open source is free to download but expensive to maintain.
10 min read

Avoiding overkill: embracing simplicity

A contact form implemented with React, Redux, Webpack, TypeScript, and elaborate CI/CD pipelines—2.3MB production bundle for three fields and a submit button. Two days to set up the development environment. Thirty-five minutes to change placeholder text. This is overengineering: enterprise solutions applied to problems that need HTML and a server script.
10 min read

Terminal multiplexing: beyond the basics

Network drops during critical database migrations. SSH connections terminate mid-deployment. Terminal crashes destroy hours of workspace setup. tmux decouples your terminal interface from persistent sessions that continue running independently—network failures become irrelevant interruptions rather than catastrophic losses, whilst organised workspaces survive crashes and reconnections.
10 min read

SSH keys in 1Password: eliminating the file juggling ritual

SSH keys scattered across machines create a familiar nightmare—copying files between systems, remembering which key lives where, and the inevitable moment when you need to connect from a new laptop without access to your carefully managed ~/.ssh directory. 1Password's SSH agent transforms this by keeping encrypted keys available everywhere whilst ensuring private keys never touch disk outside the vault.
10 min read

Turbocharge development: the magic of SSH port forwarding

Security policies block database ports. Firewalls prevent external connections. Remote services remain inaccessible except through carefully controlled channels. SSH port forwarding creates encrypted tunnels that make distant services appear local—you connect to localhost whilst traffic routes securely to remote resources, maintaining security boundaries without compromising workflow efficiency.
9 min read

Streamlining local development with Dnsmasq

Testing on localhost hides entire categories of bugs—cookie scope issues, CORS policies, authentication flows that behave differently on real domains. These problems surface after deployment, when fixing them costs hours instead of minutes. Dnsmasq eliminates this gap by making local development behave like production, turning any custom domain into localhost whilst preserving domain-based security policies.
7 min read

SSH dotfiles: unlocking efficiency

Managing dozens of SSH connections means remembering complex hostnames, multiple keys, and elaborate commands you copy from text files. The .ssh/config file transforms this chaos into memorable aliases that map mental shortcuts to complete configurations, reducing cognitive load so you can focus on actual work rather than SSH incantations.
11 min read

Dotfiles: why and how

Working on someone else's machine feels like writing with their hands—common commands fail, shortcuts vanish, and everything feels wrong. Dotfiles transform this by capturing your accumulated workflow optimisation in version-controlled configuration files, turning any terminal into your terminal within minutes rather than days of manual reconfiguration.
10 min read

Downtime of uptime percentages, deciphering the impact

Understanding the real-world implications of uptime percentages is paramount for businesses and consumers alike. What might seem like minor decimal differences in uptime guarantees can translate to significant variations in service availability, impacting operations, customer experience, and bottom lines.