Rust in the Linux Kernel at Scale: Two Years of Merge Commits Later, What the Kernel Mailing List Drama Actually Tells Us

The Numbers Tell a Story of Velocity, Not Victory

When Rust support officially merged into the Linux kernel in late 2022 with version 6.1, it arrived with roughly 13,000 lines of code. That was symbolic. A foundation. A proof of concept wrapped in enough abstraction layers to make any systems programmer’s head spin. I remember reading Linus Torvalds’ acknowledgment of the merge at the time with the kind of careful neutrality that only someone who has fought a thousand technical battles can muster. It wasn’t enthusiasm. It was pragmatism.

Rust in the Linux Kernel at Scale: Two Years of Merge Commits Later, What the Kernel Mailing List Drama Actually Tells Us
Rust in the Linux Kernel at Scale: Two Years of Merge Commits Later, What the Kernel Mailing List Drama Actually Tells Us

Three years later, that 13,000 lines has become over 600,000. The acceleration isn’t linear. It’s exponential in a way that matters. Drivers. Filesystem abstractions. Core subsystem bindings. GPU drivers, most notably NVIDIA’s Nova effort, written entirely in Rust. When Linus confirmed in December 2025 that Rust driver contributions had genuinely accelerated past the experimental phase, he wasn’t making a casual observation. He was acknowledging that something structural had shifted. The kernel maintainers had stopped treating Rust as an experiment and started treating it as infrastructure.

But here is what matters more than the raw numbers: what they represent. This is not the trajectory of a language being forced into an ecosystem where it does not belong. This is what adoption looks like when the fundamental problem Rust solves is severe enough that experienced engineers, people who have forgotten more about C than most developers will ever know, decided the integration cost was worth paying.

Illustration for Rust in the Linux Kernel at Scale: Two Years of Merge Commits Later, What the Kernel Mailing List Drama Actually Tells Us
Illustration for Rust in the Linux Kernel at Scale: Two Years of Merge Commits Later, What the Kernel Mailing List Drama Actually Tells Us

The Memory Safety Equation Becomes Measurable

For years, the argument for Rust in the kernel was philosophical. Memory safety matters. Undefined behavior is bad. Buffer overflows are expensive. These were true statements that made little impact on people whose livelihoods depended on shipping C code that worked. Philosophy does not move kernel maintainers. Data does.

The University of Waterloo published a study in 2025 that analyzed 150 Linux kernel CVEs from 2020 through 2024. Their finding was specific enough to matter: 67 percent of those vulnerabilities fell into memory safety categories that Rust’s ownership model structurally prevents. Not fixes. Not catches. Prevents. The distinction is crucial. A memory-safe language does not give you a security layer you can remove or disable. It gives you categories of bugs that simply cannot exist in the first place.

This landed with particular weight because it arrived alongside data from Google’s Android team. In a 2025 blog post, they reported that the proportion of new Android OS code written in memory-safe languages had reached 77 percent, with Rust accounting for the majority of systems-level additions. More concretely: memory safety vulnerabilities in Android dropped below 24 percent of total CVEs for the first time. That is not a rounding error. That is a fundamental shift in the vulnerability profile of one of the world’s most widely deployed operating systems. When you can point to those numbers and say “this is what happens when you prioritize memory safety,” the debate stops being theoretical.

Where the Real Tension Actually Lives

This is where I need to be direct with you. The kernel mailing list drama of the past two years has not been about whether Rust belongs in the kernel. That argument was largely settled by the data and by the sheer momentum of contributions. The real tension, the one that matters for anyone trying to understand where systems programming is actually headed, lives somewhere more subtle.

Ted Ts’o, one of the most respected maintainers in the kernel, posted a detailed technical critique in late 2025 that crystallized what has been whispered in private conversations and hallway discussions for months. Rust’s abstraction layers, he argued, were creating hidden performance regressions in I/O paths that benchmarks were not capturing. Not dramatic performance cliffs. Subtle degradations. The kind that accumulate across millions of operations and become apparent only when you are staring at cycle counts with the obsession of someone who has spent decades optimizing kernel code.

This is the real conversation. Not “should Rust be in the kernel” but “at what cost in cognitive load and runtime efficiency are we buying memory safety.” Both of these things matter. Memory safety prevents entire categories of bugs. But abstraction layers have costs. Trait objects carry runtime overhead. The borrow checker forces you into certain patterns, and those patterns do not always map cleanly onto the performance characteristics you need in a storage driver or a network subsystem.

The depth of this conversation is what separates the serious technical discussion from the Twitter-tier debate. Nobody is arguing that Rust is a mistake. What people like Ts’o are arguing is that Rust in the kernel is a tradeoff, not a pure upgrade, and we need to understand the tradeoffs clearly enough to know where it belongs and where it does not.

Building Abstractions That Actually Scale

If you want to understand what the kernel maintainers are actually doing right now, stop reading blog posts and read the Linux kernel Rust documentation. Not for the concepts. For the specific choices. The way they have designed the safety abstractions. The decisions about where C interop happens and where it does not. The patterns they have established for driver writers trying to write Rust code that does not pay a runtime cost for features they do not need.

What you will see is not a language being forced onto a codebase. What you will see is a community learning how to integrate a memory-safe systems language into an ecosystem where every cycle counts and every abstraction layer is contested. That is harder than either pure-C development or pure-Rust development. It requires conversations between people who think very differently about problems, and it requires genuine technical rigor to make it work.

The Nova GPU driver is instructive here. It is not a translated C driver wrapped in Rust syntax. It is written natively in Rust, from the ground up. And it works. Performance is competitive. Maintainability is better. The code is less prone to the subtle memory corruption bugs that have plagued GPU drivers for decades. But the path to getting there required the Rust community and the kernel community to have specific, detailed conversations about abstraction costs and performance requirements.

What This Actually Means for the Future

The kernel mailing list drama that has played out over the past two years is not drama in the sense of personal conflict or ego. It is the sound of a community working through a genuine technical problem. And the resolution, as best we can see it in early 2026, is neither “Rust everywhere” nor “Rust nowhere.” It is much more interesting than that.

We are watching the kernel community establish the boundary conditions for memory-safe languages in systems programming. Where Rust makes sense, they are using it. Where the abstraction overhead is too high or the problem domain does not map well onto Rust’s guarantees, they are continuing with C. The Rust abstractions are maturing. The tooling is improving. The patterns that work are being codified and shared.

This is how technology actually advances. Not through proclamations or declarations of victory. Through messy, detailed, sometimes contentious technical work. Through people like Ted Ts’o pushing back on performance regressions and people like Linus acknowledging when a new approach is producing measurable value. Through data like Google’s Android report and the University of Waterloo CVE analysis that let us move beyond ideology into engineering judgment.

If you have been following this debate from a distance, uncertain whether to take it seriously or dismiss it as language wars, look at the actual numbers and the actual code. The memory safety story matters. The performance questions matter. Neither one is settled, and that is precisely why the conversation is worth having. What questions do you see emerging from your own systems work that might shift with a memory-safe language in the mix?

Salt Typhoon’s Real Lesson: Why Your Network Architecture Decisions Today Will Define Your Compliance Tomorrow

What Actually Happened, and Why It Matters Beyond the Headlines

When federal investigators and CISA confirmed in late 2024 that Chinese state-sponsored actors had maintained persistent access to at least nine major US telecommunications carriers for over a year, the immediate reaction was shock. AT&T, Verizon, and their peers are the backbone of American communications infrastructure. But shock fades. What remains is the harder question: how did this happen, and what does it tell us about the decisions we’ve been making in network architecture for the past decade?

The Salt Typhoon intrusion wasn’t sophisticated in the way that Hollywood imagines. It wasn’t a zero-day cascade or some unprecedented cryptographic break. What made it devastatingly effective was far more pedestrian: legacy SNMP configurations left running on production equipment, edge devices from Cisco and Fortinet that hadn’t seen patches in months or years, and network segmentation strategies that looked good on paper but failed under adversarial pressure. This is the kind of access that persists because it solves a problem that nobody wanted to be responsible for fixing.

The next eighteen months will separate organizations that truly learned from this breach from those that merely checked compliance boxes. The federal mandates coming in 2026 aren’t punitive exercises. They’re a structural reckoning with how we’ve been building network-adjacent systems, and they’re going to reshape engineering priorities in ways that many teams haven’t fully reckoned with yet.

The Specific Vectors, the Specific Failures

Let’s talk specifics, because specificity is where the real lessons live. CISA’s December 2024 advisory identified three primary attack surfaces that Salt Typhoon exploited: legacy SNMP implementations, unpatched edge devices, and inadequate network segmentation. None of these are novel vulnerabilities or architectural surprises. They’re failures of maintenance discipline, and they’re endemic across the industry.

Consider the Cisco vulnerability alone. CVE-2023-20198 in IOS XE carried a CVSS score of 10.0, the highest possible severity rating. A patch existed for over a year before Salt Typhoon operators actively exploited it. That gap between patch availability and actual exploitation isn’t a technical problem. It’s a management problem. It’s the result of patch management cycles that can’t keep pace with carrier-grade operations, testing protocols that create bottlenecks, and risk tolerance calculations that consistently underweight the possibility of state-sponsored intrusion. The CISA Salt Typhoon advisory walks through these vectors in detail, and if you haven’t read it as an engineer, you should. It’s uncomfortably specific about how thoroughly access persisted.

The network segmentation failures are equally instructive. When you design a carrier-grade network, segmentation isn’t theoretical. It’s supposed to be the primary control that contains lateral movement. But in practice, segmentation creates operational friction. It makes management harder. It requires coordination across teams that historically haven’t had strong incentives to cooperate. So shortcuts accumulate. A management interface stays on the main network because moving it requires vendor recertification. A legacy system gets exempted from segmentation because its traffic patterns don’t fit neatly into the segmentation scheme. And before long, you have a network where persistent access to a single edge device puts an attacker in position to access critical infrastructure.

The Regulatory Response: Mandates That Will Actually Change How You Build

In January 2025, the FCC issued new cybersecurity rules under Section 105 of the Communications Act. These aren’t advisory guidelines or best practice recommendations. They’re mandatory annual cybersecurity risk management plans, enforceable requirements with real compliance obligations. This is the first time the FCC has moved from voluntary cybersecurity frameworks to hard mandates. That’s significant, and it’s going to ripple through organizations in ways that go far beyond telecommunications carriers.

What makes these mandates different from previous compliance regimes is their specificity about architecture. They don’t just ask whether you have a cybersecurity program. They require documented risk assessment, incident reporting within specific timeframes, and explicit remediation timelines for identified vulnerabilities. For engineers, this translates into something concrete: the business case for architectural decisions is now tied to compliance risk in ways it wasn’t before. A design that made sense from an operational efficiency standpoint might no longer be defensible if it introduces compliance risk.

The FCC cybersecurity rulemaking proceeding is the official channel where these rules are being refined, and it’s worth following if you’re designing systems that touch telecom infrastructure or that might eventually be subject to similar mandates in other sectors. The agencies are learning in real time what’s enforceable and what creates perverse incentives, and the rules are still in refinement phases.

The Real Cost: What Remediation Actually Looks Like

A February 2025 Mandiant report analyzing post-Salt Typhoon remediation efforts found something sobering: 73% of affected organizations required complete architectural re-engineering of their carrier-grade network management interfaces. Average remediation costs exceeded $47 million per carrier. That’s not a typo. That’s the price of finding out that your network architecture doesn’t actually contain intrusions the way you thought it did.

These aren’t abstract numbers. They represent months of engineering effort, vendor certifications, testing cycles, and operational validation. They represent the discovery that legacy systems you thought were isolated are actually integrated into critical paths in ways that weren’t fully documented. They represent the painful process of designing segmentation strategies that work in theory, then discovering all the ways that operational reality pushes back against them.

I’m dwelling on these costs not to be discouraging, but to be clear-eyed about what preparation for 2026 actually requires. Organizations that wait until next year to address these issues will find themselves in the position of the carriers in 2024: reactive, expensive, and playing catch-up under deadline pressure. Organizations that start now have time to plan remediation thoughtfully, integrate it into existing modernization roadmaps, and spread costs and engineering effort across multiple budget cycles.

What This Means for How You Design Going Forward

If you’re building network-adjacent systems now, the regulatory landscape is changing the calculus for architectural decisions in several concrete ways. Legacy system integration is riskier. You need segmentation baked in from the start, not added as an afterthought. Patch management cycles need to be tighter and more formal. Network management interfaces need to be architected with the assumption that they’ll be under adversarial scrutiny, not just operational stress.

The shift here is generational. For the past ten years, network architecture has often optimized for operational simplicity and cost efficiency. The next five years will optimize for resilience and compliance. That means different tooling, different testing protocols, different trade-offs. SNMP configurations that would have seemed reasonable in 2020 are now indefensible. Edge devices require more aggressive patch cycles. Network segmentation moves from “best practice” to “non-negotiable requirement.”

None of this is surprising once you sit with the technical facts. The surprise is that it took a major state-sponsored intrusion to formalize mandates that were already implicit in security architecture principles. But that’s how the industry works. We learn through breach, we formalize through regulation, and we rebuild through engineering effort.

The mandates coming in 2026 aren’t punishment. They’re structure. They’re an opportunity to build network systems that are actually defensible against persistent adversaries, rather than just defensible against the threat models we were designing for five years ago. If you’re starting that work now, you’re ahead of the curve. If you haven’t started, the next eighteen months are going to be intense. What’s your organization’s current timeline for remediation?

AWS re:Invent 2024’s Graviton4 and Nova: Six Months In, the Economics Actually Hold Up

The Hardware Bet That Actually Paid Off

When AWS announced Graviton4-powered R8g instances last November, I approached it the way I approach most vendor performance claims: with measured skepticism. I’ve seen enough marketing slides get divorced from reality in production environments to know that benchmark percentages and actual workload improvements rarely align perfectly. But six months later, something unexpected happened. The cost savings are real, and more importantly, they’re predictable.

AWS re:Invent 2024's Graviton4 and Nova: Six Months In, the Economics Actually Hold Up
AWS re:Invent 2024’s Graviton4 and Nova: Six Months In, the Economics Actually Hold Up

The architecture jump from Graviton3 to Graviton4 is substantial enough to warrant attention. The new chips are built on a 4nm process and pack 96 Arm Neoverse V2 cores, compared to Graviton3’s 64-core design. That’s not incremental refinement. That’s a meaningful generational leap. AWS claims up to 30% better performance per dollar on memory-intensive workloads compared directly to equivalent Graviton3 instances, and initial field data suggests they’re being conservative with that number.

What matters more than raw specs, though, is that this isn’t another case of AWS pushing customers toward marginal gains at the cost of operational complexity. Early adopters from Datadog and Snap reported 20 to 28 percent compute cost reductions after moving containerized workloads to the R8g and C8g families in Q1 this year. Those numbers came from production environments, not lab conditions. When respected companies in the monitoring and infrastructure space publicly commit to numbers like that, it tells you something: the economics work without requiring architectural contortions.

Understanding Why This Matters for Your Infrastructure Team

Cost optimization sits at the center of how engineering organizations justify infrastructure spending in 2025. According to the Flexera 2025 State of the Cloud Report, 59 percent of enterprises identified cost optimization as their primary cloud initiative. That’s the dominant conversation happening in board rooms and engineering planning meetings right now.

Infrastructure work has shifted because of this. It’s no longer enough to make things work. You need to make them work efficiently, and you need to articulate that efficiency in financial terms that non-technical leaders actually understand. The engineer who can point to a migration that reduced per-container costs by 25 percent while improving latency metrics isn’t just someone who did a solid job. They’re someone making the business case for infrastructure as a strategic advantage rather than a cost center to minimize.

Graviton4 is the first time in recent memory where the performance-per-dollar narrative wasn’t a squeeze play. You’re not being asked to accept worse performance for cheaper compute. You’re being asked to evaluate a chip that genuinely performs better on your actual workloads while costing less to operate. That’s rare, and it changes the calculus entirely.

The Nova Pricing Shock and What It Signals

Amazon Nova arrived with a pricing structure that made more than a few infrastructure leaders do a double-take. The entry-level Nova Micro model launched at $0.000035 per input token, undercutting comparable foundation models hosted on Bedrock by somewhere between 60 and 75 percent depending on which comparison you examine. That’s not a 10 percent margin improvement. That’s a different order of magnitude.

The immediate reaction in many organizations was to treat Nova as a loss leader, a move by AWS to grab market share in the AI workload space before competitors solidified their positions. There’s probably truth to that. But there’s another interpretation worth considering: this is what happens when you build your own silicon and your own models from the ground up. AWS isn’t licensing someone else’s inference infrastructure. They’re running inference on their own hardware, optimized for their own models. The cost structure becomes fundamentally different.

For planning purposes, that distinction matters. It means the pricing you’re seeing isn’t likely to compress further through competition alone, because AWS has structural advantages that other cloud providers simply don’t have. It also means that if you’ve been hesitant to experiment with foundation models because of per-token costs, that barrier has essentially disappeared. A team wanting to build a proof of concept around Nova Micro now faces a negligible expense to do so, which shifts the risk calculation for innovation work significantly.

Migration Reality: What’s Genuinely Portable and What Isn’t

The honest conversation about Graviton4 adoption needs to acknowledge what’s actually portable and what requires real work. Containerized workloads, especially those built on Linux targeting standard frameworks like Node.js, Python, or Go, migrate with minimal friction. That’s why companies like Datadog and Snap saw such meaningful improvements so quickly. Their infrastructure was already built in a portable way.

But not every workload follows that pattern. Legacy applications built for x86-specific optimizations, custom binaries never compiled for ARM, or systems with memory access patterns optimized for Intel’s cache hierarchy will require more deliberate migration planning. Some workloads might not migrate at all without substantial engineering investment. This is where the real technical leadership conversations happen. You need to assess your environment honestly, identify which pieces can move, and make the business case for moving them based on real data from your own systems.

The pragmatic approach is to treat Graviton4 migration as a portfolio decision rather than an all-or-nothing transition. Start with the workloads that are portable and well-understood. Get your teams comfortable with the migration process, measure the actual cost reductions in your specific environment, and then use that data to justify broader platform changes. The evidence from Snap and Datadog gives you credibility in those conversations, but your own numbers will carry more weight with your leadership team.

The Real Test Ahead

The performance claims and pricing structures are holding up. The question now is whether AWS maintains this trajectory or whether Graviton4 becomes another example of strong initial execution followed by marginal improvements and slow feature parity with x86-based offerings. That’s the pattern worth watching over the next 12 to 18 months.

For your own career development, the lesson here is that architectural decisions made by cloud providers create opportunities for engineers who understand them deeply. Being the person on your team who genuinely understands the Graviton4 trade-offs, who can articulate the Nova pricing model to non-technical stakeholders, and who can quantify the actual cost savings from migration isn’t a narrow specialization anymore. It’s increasingly table stakes for infrastructure leadership.

The evidence suggests this wasn’t hype. But the real test isn’t whether the technology works. It’s whether you can translate it into business value in your specific context. Start with the AWS Graviton4 instance family documentation, run some benchmarks against your actual workloads, and measure the results. That’s how you build the credibility and expertise that shapes infrastructure decisions at your organization.

Salt Typhoon Still Has the Keys: What the Telecom Breach Means for Your API Strategy in 2026

The Breach That Won’t Go Away

In December 2024, the U.S. government confirmed what security researchers had been quietly studying for months: Salt Typhoon, a Chinese state-sponsored threat group, had successfully compromised at least nine major U.S. telecommunications providers. We’re talking about AT&T, Verizon, and others that form the backbone of American communications infrastructure. The breach didn’t just expose call logs or billing information. It gave attackers access to metadata spanning over one million individuals. That’s not a contained incident. That’s a persistent structural weakness in systems that billions of people rely on daily.

I’ve been building distributed systems long enough to recognize what this looks like from the inside. You find one vulnerability, you patch it, you move on. Except Salt Typhoon didn’t leave after being discovered. The attackers established footholds deep enough that they’re still there. According to Mandiant’s February 2026 report, ongoing persistence comes directly from unpatched edge devices. Cisco IOS XE and Fortinet FortiGate appliances keep showing up as the initial access vectors. These aren’t exotic zero-days that only nation-states know about. These are known vulnerabilities that vendors have patched. But patches don’t install themselves, and networks this massive operate under real constraints.

The Authentication Reckoning

Here’s where this hits your codebase directly. CISA released updated guidance in January 2026 that formally recommends deprecating authentication flows that depend on SS7, the ancient signaling protocol that powers SMS. If your application sends a one-time code via text message for two-factor authentication, you’re using a system that’s been fundamentally compromised at the network level. The Salt Typhoon breach revealed that attackers with access to telecom infrastructure can intercept SMS traffic. They didn’t need to break your application. They just needed to read the message your application was relying on.

I remember the debates from years past about why SMS-based 2FA was so widespread despite its obvious weaknesses. The answer was practical: SMS reaches every phone, requires no additional software, and works everywhere. But practicality and security exist in tension, and that tension resolved itself the moment attackers could reach into the telecom backbone. The CISA guidance on People’s Republic of China telecom intrusions spells this out plainly. End-to-end encrypted communications. No more SS7 dependencies. This is no longer advisory. This is the direction institutions are moving, and your API surface needs to move with them.

The industry response has been swift. The FIDO Alliance tracked a 210% increase in passkey adoption among the top 1,000 websites between Q1 2025 and Q1 2026. That’s not hype. That’s enterprises and startups both looking at the breach reports and reaching the same conclusion: we need authentication that doesn’t rely on telecommunications infrastructure controlled by someone else. Passkeys work locally. They don’t transit through networks you don’t control. They’re cryptographically bound to specific devices and services.

The Cryptography Question Arriving Early

While you’re rearchitecting authentication, there’s another timeline squeezing down on you. NIST finalized its post-quantum cryptography standards in August 2024. On their own, these are academic accomplishments. Organizations publish standards constantly. But then they get cited in procurement requirements. As of 2026, at least 14 state and federal procurement requirements now mandate post-quantum readiness for contracts involving critical infrastructure, financial systems, or federal agencies. If you’re building APIs for any of those sectors, you’re not planning a migration for 2030. You’re planning one for right now.

The reason this matters isn’t abstract. Current encryption standards rely on the difficulty of factoring large numbers. Quantum computers, if they reach sufficient scale, would make this problem trivial. Your encrypted data doesn’t need to be decrypted today for this to matter. An attacker can capture your encrypted traffic now, store it, and decrypt it later when quantum computers become available. The intelligence value of data captured in 2026 and decrypted in 2035 is real. Governments know this. They’re not waiting.

The NIST post-quantum cryptography standards give you concrete algorithms to migrate toward. But migration timelines for cryptography across distributed systems measure in years, not months. The calculations that protect your customer data, your authentication tokens, and your inter-service communications need to be audited now. You need to understand which cryptographic components you’re using, where they live in your stack, and what the replacement path looks like. This isn’t a year-end project. It starts in your architecture review meetings this quarter.

What You Actually Need to Do

Let me be direct about what this looks like in practice. First, audit your authentication layer. If you’re still accepting SMS for 2FA, understand the timeline for migrating users to a passwordless or hardware-backed solution. This doesn’t mean cutting off SMS overnight and breaking existing deployments. It means starting the migration now, communicating the change clearly, and having a deprecation timeline customers can work with. FIDO2 and passkey infrastructure exists. App-based 2FA exists. Hardware security keys exist. Pick your approach based on your user base, but pick one and start moving.

Second, inventory your cryptography. Know what encryption standards you’re using in transit and at rest. Know which protocols depend on assumptions that quantum computing would invalidate. Work with your infrastructure team to understand your TLS configurations, your key exchange mechanisms, and your long-term data storage encryption. This isn’t a security team problem. It’s an engineering problem that spans backend systems, database layers, and the protocols your APIs use to communicate with clients.

Third, understand the edge devices in your deployment chain. The Salt Typhoon breach persists because of unpatched network equipment. If you’re running Cisco, Fortinet, or similar appliances, you’re not unique. Thousands of organizations run the same hardware, which makes you both vulnerable and a predictable target. Patching cadences matter. Vulnerability monitoring matters. This is infrastructure governance, and it matters at the API level because your APIs sit behind this equipment.

A Decade of Being Reactive

Looking back at the past decade of API security, we’ve largely been reactive. A vulnerability drops, we patch. An attack technique emerges, we add detection. But telecom infrastructure compromises at this scale force something different. They force you to consider that the baseline assumptions your security model rests on might not hold. The phone network isn’t as trustworthy as we assumed. Data persistence isn’t as temporary as we hoped. Future computing capabilities will unravel past encryption work.

This isn’t cause for panic. It’s cause for deliberate action. The organizations moving first on passkeys, on post-quantum planning, and on edge device hygiene aren’t overreacting. They’re seeing what the Salt Typhoon breach actually reveals: security exists in layers, and when one layer fails, the others have to work harder. Your API design decisions in 2026 will determine whether your systems can adapt to these realities or crack when the next structural weakness surfaces.

The work is real. The timeline is real. The stakes are real. What’s your current state, and where does your organization stand on these migrations? I’d be genuinely interested in hearing what you’re seeing in your own infrastructure assessments.

Vibe Coding Is Eating Junior Dev Hiring — And the Consequences Are Starting to Show Up in Production

The Term That Crystallized a Trend

In early February 2025, Andrej Karpathy published a characterization of a development practice that had been quietly spreading through tech teams for months. He called it “vibe coding” — the approach where developers delegate nearly all code writing to large language models and position themselves as directors rather than writers. The term landed immediately. Within weeks, it was everywhere: on Twitter, in Slack channels, in heated discussions on specialized engineering forums. People had a name for something they’d been observing but couldn’t quite articulate.

Vibe Coding Is Eating Junior Dev Hiring — And the Consequences Are Starting to Show Up in Production
Vibe Coding Is Eating Junior Dev Hiring — And the Consequences Are Starting to Show Up in Production

What made this framing so potent wasn’t that it was entirely new. Engineers have been experimenting with AI assistance for years. But vibe coding represented something different in degree and philosophy. It wasn’t about using an LLM as a tool within your workflow. It was about ceding the generation of logic itself to the model and treating code review and deployment as your primary responsibilities. Andrej Karpathy’s Original Vibe Coding Post became a cultural touchstone because it named something real that teams were experiencing.

Illustration for Vibe Coding Is Eating Junior Dev Hiring — And the Consequences Are Starting to Show Up in Production
Illustration for Vibe Coding Is Eating Junior Dev Hiring — And the Consequences Are Starting to Show Up in Production

The Paradox of Speed and Stability

The surface metrics look impressive. A 2025 survey by Uplevel, a developer analytics firm that tracks engineering productivity at scale, found that teams using AI coding tools heavily saw a 40% reduction in time-to-PR. Teams were shipping faster. Throughput increased. From a certain angle, the one most visible to non-technical leadership, the numbers worked. Feature velocity rose. Tickets closed faster. The system appeared to be working.

But the Uplevel research also captured something else: a 41% increase in post-merge bug reports within 30 days of deployment in those same teams. The speed wasn’t free. The bugs weren’t appearing in development or staging. They were appearing in production, after code had merged and shipped to users. This is the pattern that should concern every engineering leader. You can hide a slow development process. You cannot hide production bugs. They compound. They damage trust. They create technical debt that gets very expensive very quickly.

Uplevel Developer Productivity Research presents this data without overselling the narrative in either direction, which is why it matters. The researchers didn’t conclude that AI code generation is bad. They documented what happens when you prioritize velocity over correctness: you get more code and more problems, faster.

The Hidden Cost: What Happened to Junior Engineers

The most consequential effect of vibe coding’s rise may not be visible in any single codebase. It’s visible in the job market. Revelio Labs published data in 2025 showing a 22% year-over-year decline in new-grad software engineer job postings at companies with over 1,000 employees. Large organizations, the ones most likely to have the infrastructure to adopt vibe coding at scale, are hiring fewer junior engineers. The narrative is straightforward: if a mid-level engineer can prompt an LLM to write 80% of the code they would normally write, why hire someone to learn the craft the old way?

But this creates a structural problem. Junior engineers don’t just write code. They ask questions that force senior engineers to articulate assumptions. They catch problems precisely because they don’t know what’s “supposed” to be done and apply fresh scrutiny. They learn by writing bad code, getting feedback, and writing better code. Not an efficient process in the short term. Essential in the long term.

When you remove junior engineers from the equation, you remove a layer of cognitive friction that actually protects organizations from their own assumptions. You also remove the pipeline of talent that becomes tomorrow’s senior engineers. The implications compound over years, not quarters.

The Bugs That Escape Attention

Stripe’s engineering team published findings in late 2025 that deserve close attention from anyone shipping code at scale. Their internal audits identified a pattern: LLM-generated code introduced subtle categories of error that were disproportionately likely to escape static analysis and continuous integration checks. The bugs weren’t flashy. They didn’t crash the system. They were off-by-one errors in loops, incorrect exception handling patterns, and boundary condition failures that only manifested under specific data distributions.

These bugs have a particular quality that makes them dangerous. They’re exactly the kind of mistakes that human code reviewers, trained to look for specific classes of error, would catch. But when the person reviewing code isn’t the one who understood the architecture deeply enough to write it in the first place, when they’re reviewing AI output in high volume, the catch rate drops. The friction that used to exist is gone, and it took the safety with it.

An IEEE Software editorial published in late 2025 synthesized preliminary data from three large technology companies showing that codebases where more than 50% of commits were AI-assisted had statistically higher cyclomatic complexity scores within 12 months of adoption. The code got more complex, not simpler. Harder to reason about. This is the opposite of what you’d expect from a tool that’s supposed to increase productivity.

What Senior Engineers Should Actually Be Watching

The danger of vibe coding isn’t that it exists. Tools always get adopted. The danger is the narrative that surrounds it. When speed becomes the primary metric, when hiring managers see reduced onboarding costs and teams see increased deployment frequency, there’s pressure to optimize purely for those measures. But engineering systems have delays built into them. The consequences of vibe coding are appearing now, 12 to 18 months after widespread adoption, in the form of production bugs, higher complexity, and a hollowed-out pipeline of junior talent.

The question senior engineers need to ask their teams isn’t whether they’re using AI coding tools. The question is whether they understand what they’re trading away. Are they maintaining code review rigor? Are they still hiring and training junior engineers? Are they measuring production stability alongside deployment speed? Are they actually reading the AI-generated code, or just processing it?

The data is starting to tell a story. Not a conclusive one yet, but a directional one. Teams that treated AI code generation as a tool within their existing engineering discipline are seeing benefits. Teams that treated it as a replacement for that discipline are starting to pay the price. If you’re leading an engineering team, now is the time to audit what’s actually happening in your codebase and your hiring pipeline. The consequences of getting this wrong compound. I’d be curious to hear what patterns you’re seeing in your own organizations.

Why GitHub Copilot Workspace Still Can’t Replace a Senior Engineer’s Judgment in 2026

The Promise Versus the Reality

GitHub Copilot Workspace reached general availability in late 2025, and the marketing materials were compelling. End-to-end task completion. From issue description to merged pull request. All without leaving the browser. Over 1.8 million developers adopted it within the first six months, which tells you something about the hunger in the market for tools that promise to compress the cognitive load of software development. I understand that hunger. I’ve felt it myself across twenty years of shipping code.

Why GitHub Copilot Workspace Still Can't Replace a Senior Engineer's Judgment in 2026
Why GitHub Copilot Workspace Still Can’t Replace a Senior Engineer’s Judgment in 2026

But hunger and reality are different things. I’ve spent the last few months watching how Copilot Workspace actually performs in the hands of capable teams, and what I’ve observed is a widening gap between what the tool can do and what senior engineers still need to do. The gap isn’t shrinking. If anything, it’s becoming more obvious.

Illustration for Why GitHub Copilot Workspace Still Can't Replace a Senior Engineer's Judgment in 2026
Illustration for Why GitHub Copilot Workspace Still Can’t Replace a Senior Engineer’s Judgment in 2026

The 76% Admission Nobody Wants to Talk About

A Stack Overflow Developer Survey conducted in late 2025 found something uncomfortable: 76% of developers actively using AI coding tools reported spending significant time fixing logic errors in AI-generated code intended for production or production-adjacent systems. Let that number sit for a moment. Three-quarters of the user base is spending material time on remediation work. That’s not a feature. That’s a tax on productivity that most teams are quietly absorbing without quite articulating what’s happening.

The errors follow predictable patterns once you start tracking them. Off-by-one mistakes in loop constructs. State management that works in isolation but breaks under concurrent access. Edge cases in data transformation logic that the AI never encountered during training. These aren’t exotic failures. They’re the kind of mistakes a mid-level engineer spots in a five-minute code review, and the kind a senior engineer prevents through architecture decisions made before a single line gets written.

Copilot Workspace doesn’t have access to your architecture decisions. It doesn’t know why you chose event sourcing over a traditional database transaction model. It doesn’t understand the implicit contracts between your service boundaries. It sees code. It generates more code that locally looks coherent. That’s the extent of its sight.

The Code Churn Problem That Metrics Are Starting to Expose

GitClear published research in early 2026 that should be required reading for any engineering leader evaluating AI-assisted development at scale. Their analysis showed that codebases developed with AI assistance exhibited a 41% increase in code churn rates compared to pre-AI baselines. Code churn measures how often code gets rewritten shortly after being committed. High churn rates are a leading indicator of instability, technical debt accumulation, and team friction.

Think about what that metric is actually telling you. It’s not saying AI is writing bad code that gets thrown out immediately. It’s saying AI-generated code tends to require more rework, more iteration, more context-switching after the initial commit. A senior engineer doesn’t just write code that works today. A senior engineer writes code that survives contact with reality, which includes evolving requirements, edge cases discovered in production, and architectural constraints that only become visible after a feature ships.

You can read the full GitClear 2025 AI Code Quality Report if you want the methodological details, but the headline is clear: teams using Copilot Workspace are making more edits to recently written code, not fewer. The tool is creating work downstream, even when it appears to save time upstream.

Where the Boundary Actually Sits

This isn’t an indictment of Copilot Workspace. I’ve used it. It excels at specific, bounded tasks. Boilerplate generation. Test case scaffolding. Refactoring patterns that are well-established in your language ecosystem. The GitHub Copilot Workspace documentation lays out its capabilities honestly, and the tooling itself is well-engineered. My critique is directed at the narrative building around it, not the tool itself.

The competitive landscape is also moving quickly. Anthropic’s Claude 3.7 Sonnet, released in February 2026, introduced an extended thinking mode that outperformed GPT-4o on the SWE-bench Verified benchmark with a 70.3% resolution rate. That’s real progress. But it’s progress on a benchmark designed to measure code generation capability, not progress on the harder question: can an AI system understand the business context, the performance requirements, the security model, and the long-term maintainability needs that a senior engineer carries in their head through years of experience?

Senior engineer judgment is orthogonal to code generation capability. A senior engineer looks at a proposed solution and asks questions that an AI system has no training data for. Will this scale to 100 million records? What happens when the external API we depend on goes down? How will the team on-board to this code in two years when everyone who wrote it has moved on? These questions aren’t about whether the code runs. They’re about whether the code survives.

The Honest Conversation We Need to Have

I’m not claiming that AI coding tools are useless. They’re not. They’re useful now, more useful than eighteen months ago, and they’ll keep improving. But usefulness on bounded tasks is different from the kind of judgment that separates a senior engineer from everyone else on the team.

The hard truth is that AI tools amplify the capabilities of engineers who already know what they’re doing. They compress time spent on mechanical coding work. But they don’t replace the judgment that prevents you from building systems that fail under stress or become impossible to maintain. If anything, the 41% code churn increase suggests that teams using AI tools without that senior judgment layer are actually working harder, not easier.

The engineers thriving with AI assistance right now are the ones using it as a paired coding partner, not as an autonomous engineer. They verify the output. They think about architectural implications. They know the gaps in the tool’s reasoning and don’t let those gaps propagate into production systems. That’s expertise in application, not a limitation of the tool itself.

Where are you seeing this play out in your codebase? I’m genuinely curious whether your team’s experience matches what the data is showing, or whether you’ve found approaches that change the equation. Drop a note if you’ve got examples of Copilot Workspace driving real leverage without the downstream churn.

GitHub Copilot Workspace at GA: Why Senior Judgment Still Isn’t Automatable

The Promise vs. The Reality We’re Living With

When GitHub Copilot Workspace reached general availability in late 2025, the pitch was clean and compelling: take an issue from your backlog, move it through to a pull request, all without leaving your browser. The tooling would handle the scaffolding, the implementation details, the test stubs. Over 1.8 million developers adopted the platform within six months. The enthusiasm was real. And yet, something fundamental about software engineering remains obstinately resistant to this vision of frictionless automation.

GitHub Copilot Workspace at GA: Why Senior Judgment Still Isn't Automatable
GitHub Copilot Workspace at GA: Why Senior Judgment Still Isn’t Automatable

I’ve been writing code long enough to recognize when a tool solves a real problem versus when it merely shifts the burden around. Copilot Workspace does the former in narrow domains and the latter everywhere else. The distinction matters, particularly when we’re asking whether this kind of tooling can actually replace the judgment that separates someone who writes code that works from someone who writes code that survives contact with production.

Illustration for GitHub Copilot Workspace at GA: Why Senior Judgment Still Isn't Automatable
Illustration for GitHub Copilot Workspace at GA: Why Senior Judgment Still Isn’t Automatable

The Data Point Nobody Wants to Acknowledge

Let’s start with a number that should genuinely alarm anyone running engineering teams at scale. According to a late 2025 Stack Overflow Developer Survey, 76% of developers actively using AI coding tools reported spending substantial time correcting logic errors in AI-generated code before it reached production or production-adjacent environments. That’s not a marginal problem. That’s a dominant pattern. The tool generates something that looks syntactically correct, passes basic linting, and then fails under conditions the model never properly reasoned about.

The issue isn’t that AI can’t write code. It clearly can. The problem is more subtle and more damaging: AI writes code that is locally coherent but globally incoherent. It understands the immediate context window well enough to generate something that compiles and runs on simple test cases. It doesn’t understand the full transaction flow, the edge case handling, the failure modes that exist three layers deep in the system architecture. A senior engineer reads a proposed change and immediately visualizes where it breaks. Copilot Workspace reads the same change and sees no reason it wouldn’t work, because it was trained on thousands of codebases where similar patterns did work, in different circumstances.

Code Churn and the Hidden Cost of Velocity Theater

There’s another metric worth paying attention to. GitClear published research in early 2026 examining code churn rates in AI-assisted development environments, and the findings suggest we should be thinking harder about what we’re optimizing for. Codebases developed with AI assistance showed a 41% increase in code churn compared to pre-AI baselines. That means substantially more rewriting of recently committed code. Code you thought was done is being revisited weeks later because it didn’t hold up under real conditions.

From the outside, this looks like velocity. Developers are shipping features faster. Copilot Workspace is doing what it was designed to do. But when you look at the actual trajectory of the codebase, you’re watching the engineering equivalent of technical debt compounding. The cost isn’t being eliminated. It’s being deferred and then paid with interest. A senior engineer’s role, particularly in larger systems, is partly about preventing this exact pattern. They say no to the seventeen-line solution that works today but will cost you eight hours next quarter.

Where Judgment Actually Lives

The gap between what Copilot Workspace does well and where it breaks down reveals something essential about engineering judgment at the senior level. The tool excels at code generation in well-defined domains where the problem space is constrained and historical solutions are abundant in the training data. Build a REST endpoint that conforms to standard patterns. Parse a common data format. Write boilerplate integration code. These are legitimate productivity gains.

Where judgment enters is upstream of the code. It’s in deciding whether the endpoint should exist at all. It’s in understanding that this particular data format was chosen for reasons that existed three years ago but don’t exist now, and changing it requires coordinating across five service boundaries. It’s in recognizing that the refactoring you’re about to undertake will touch forty files, and there are three subtle bugs hiding in how we handle null state transitions, and those bugs will only surface under specific user behavior patterns we’ve seen twice in production.

Recent advances in AI reasoning show the field is aware of these limitations and working to address them. Anthropic released Claude 3.7 Sonnet in February 2026 with extended thinking capabilities, and it achieved a 70.3% resolution rate on SWE-bench Verified, raising the competitive floor for what these systems can theoretically accomplish. The progress is real. But real progress on benchmark problems and real progress on the judgment problem are not the same thing. The benchmarks measure how well the model solves explicit engineering problems. They don’t measure whether the model understands why certain problems should never be solved the way the naive approach suggests.

What Senior Engineers Actually Do Now and Later

The practical reality for teams using Copilot Workspace in 2026 is that senior engineers have shifted their work, not disappeared. They’re no longer writing the straightforward implementation code. They’re spending more time in code review, more time reasoning about architecture, more time thinking about what shouldn’t be built. They’re also spending significant time fixing things the tool generated that looked reasonable but weren’t.

This is not a sustainable replacement pattern. A senior engineer becoming a specialized linter for AI output is not an efficient use of expensive expertise. The hope embedded in many teams is that this is a transitional phase, that as the tools improve, the review burden will decrease. It might. But it might also be that we’re discovering a real limit: the judgment that prevents systems from becoming brittle and unmaintainable requires understanding context, history, organizational constraints, and failure modes that are expensive to articulate and harder to encode.

If you’re building systems that need to stay running under conditions you haven’t fully anticipated, you need someone on your team who can reason about unknowns. That person is not being replaced by Copilot Workspace in 2026. They’re being asked to do more thinking about less code. Whether that’s progress depends entirely on what you measure.

The GitHub Copilot Workspace documentation is detailed and worth reading in full if you’re evaluating the tool. So is the GitClear 2025 AI Code Quality Report if you want to understand the code churn dynamics at scale. I’d be interested to know what patterns you’re seeing in your own environment. These tools are here to stay, but the conversation about what they’re actually good for is still being written.

Claude 3.7 Sonnet’s Extended Thinking: Why Production Teams Should Pay Attention

The Quiet Release That Changes How We Think About AI Code

When Anthropic shipped Claude 3.7 Sonnet in February 2025, the announcement landed without the usual fanfare. No press conference. No coordinated media blitz. Just a capable model with an unusual new feature called extended thinking mode. I’ve been in this industry long enough to know that the most important shifts often arrive unannounced. They come from teams confident enough in their work to let the performance speak first and the narrative follow.

Claude 3.7 Sonnet's Extended Thinking: Why Production Teams Should Pay Attention
Claude 3.7 Sonnet’s Extended Thinking: Why Production Teams Should Pay Attention

Extended thinking mode is straightforward in concept but interesting in implication. The model can now reason through a problem for up to 128,000 tokens before it outputs anything you see. That’s the equivalent of a very long internal monologue happening in the background. For those of us who’ve spent years debugging production systems, the metaphor is obvious: this is what happens when an experienced engineer sits quietly with a problem for twenty minutes before saying a word. The difference is that now your AI collaborator can do it too.

Illustration for Claude 3.7 Sonnet's Extended Thinking: Why Production Teams Should Pay Attention
Illustration for Claude 3.7 Sonnet’s Extended Thinking: Why Production Teams Should Pay Attention

Real-World Performance Numbers That Matter

I’m naturally skeptical of benchmarks. They’re useful, sure, but they rarely capture what happens when you’re shipping features at 11 PM on a Tuesday. That said, the numbers on SWE-bench Verified leaderboard are worth taking seriously. Claude 3.7 Sonnet achieved 70.3% on real-world software engineering tasks in Anthropic’s testing. That puts it ahead of GPT-4o and Gemini 1.5 Pro. These aren’t toy problems. SWE-bench Verified pulls actual issues from live open-source repositories. Your code. My code. Code that matters.

Extended thinking mode is doing heavy lifting here. What’s happening under the hood is that the model can explore multiple approaches, backtrack, reconsider assumptions, and essentially think aloud before committing to an answer. In my experience, that’s exactly how the best code reviews work. Someone reads the proposed change, questions their first instinct, considers edge cases, and then offers a substantive response. We’re watching that behavior emerge from a language model.

The Production Reality: Latency as the Silent Cost

Here’s where I need to be direct with you. Extended thinking isn’t free. Nothing useful is. When you enable this mode on complex reasoning tasks, your average first-token response time climbs beyond 45 seconds. For some operations, it goes higher. If you’re accustomed to standard model responses arriving in two or three seconds, this is a material shift in how your systems behave.

I mention this not as a criticism but as the kind of engineering trade-off that should shape your decision-making. In a real-time chat interface, 45 seconds is an eternity. Users abandon contexts that slow. But in asynchronous workflows, CI/CD pipelines, code review automation, and background analysis systems, that latency becomes manageable. Acceptable. Worth it. The question isn’t whether extended thinking is fast. It isn’t. The question is whether the improvement in reasoning quality justifies the cost in your specific use case. That’s an architectural decision, not a feature decision.

Where Extended Thinking Produces Measurable Advantages

Developers on Hacker News and Reddit’s machine learning community have been running their own experiments. The pattern I’m seeing is consistent: when Claude 3.7 Sonnet uses extended thinking mode on queries about niche frameworks, lesser-known libraries, and non-standard APIs, it hallucinates those APIs less frequently. The informal tracking suggests error rates drop roughly 30% when the model has space to reason rather than answer immediately. That’s significant. Library hallucinations have been a persistent pain point in production AI-assisted development.

What’s likely happening is that extended thinking allows the model to catch itself mid-reasoning. It can simulate what happens when it suggests a non-existent method call, recognize the inconsistency, and course-correct before output. This is hypothesis-testing behavior, and it translates directly to code that’s less likely to break at runtime because the AI suggested something that doesn’t exist.

The Broader Context: AI Code Completion at an Inflection Point

GitHub published data in late 2025 showing that AI-assisted code completion now accounts for over 40% of code committed by Copilot users, up from 25% just two years prior. That’s not gradual adoption. That’s acceleration. The industry is clearly betting that AI code assistance will be part of the standard developer toolkit. At the same time, the quality bar is rising. Users are demanding fewer bugs, fewer hallucinations, fewer false suggestions that waste time rather than save it.

Claude 3.7 Sonnet’s extended thinking mode addresses that demand directly. You get the speed of immediate response when you need it, and you get the deliberation of careful reasoning when the stakes justify it. The Anthropic Claude 3.7 Sonnet announcement includes specific details about safety considerations and reasoning limitations, which suggests they’ve thought through failure modes most teams haven’t even considered yet.

Why This Matters for Your Codebase

If you’re evaluating AI models for production code work, extended thinking mode shifts the calculation. It’s not about whether the model is faster or cheaper. It’s about whether, in the specific contexts where your team spends time, the improvement in reasoning quality is worth the latency trade-off. For code review automation, complex refactoring analysis, and identifying security issues in unfamiliar codebases, I suspect the answer is yes.

This is the kind of capability that doesn’t revolutionize the industry overnight. Teams will integrate it into their deployment pipelines, use it for the hard problems and faster models for routine work. The model will improve based on real-world feedback. In two years, we’ll look back and wonder why we thought 40-second reasoning times were unusual. I’ve seen this pattern before, and it usually means we’re watching something real rather than marketing noise.

I’d be interested to hear how extended thinking performs in your environment. What problems have you found where the model needs to think longer? Where does the latency actually become unacceptable for your workflows? Those are the details that separate theory from practice.