<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Remo H. Jansen</title>
    <description>The latest articles on DEV Community by Remo H. Jansen (@remojansen).</description>
    <link>https://dev.to/remojansen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F24875%2F8708b5ec-0a58-4900-9c87-6f5ab2540dd7.png</url>
      <title>DEV Community: Remo H. Jansen</title>
      <link>https://dev.to/remojansen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/remojansen"/>
    <language>en</language>
    <item>
      <title>The Gaming Industry Is Doomed</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Thu, 12 Nov 2026 07:38:34 +0000</pubDate>
      <link>https://dev.to/remojansen/the-gaming-industry-is-doomed-i2d</link>
      <guid>https://dev.to/remojansen/the-gaming-industry-is-doomed-i2d</guid>
      <description>&lt;p&gt;&lt;em&gt;The technological barriers protecting proprietary gaming platforms are collapsing. Emulation is becoming practical, games are being recompiled into native applications, hardware is becoming increasingly unaffordable, and platform holders are responding with increasingly anti-consumer strategies. The economics of the traditional gaming industry are starting to make very little sense.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A few weeks ago, I wrote about how Halo was becoming the new Doom and how most software would soon become effectively open source, whether its owners wanted it or not.&lt;/p&gt;

&lt;p&gt;My original argument was that AI had dramatically reduced the cost of reverse engineering, decompilation and software reimplementation. What previously required years of specialist work could increasingly be accomplished by small teams, assisted by coding agents, in days or weeks.&lt;/p&gt;

&lt;p&gt;I argued that software was losing its scarcity.&lt;/p&gt;

&lt;p&gt;At the time, I was primarily thinking about SaaS, proprietary applications and the economics of software development.&lt;/p&gt;

&lt;p&gt;I hadn't fully considered what this would mean for the gaming industry.&lt;/p&gt;

&lt;p&gt;Having watched what has happened over the past few weeks, I think the gaming industry might be facing an existential crisis.&lt;/p&gt;

&lt;p&gt;And I don't mean gaming itself. People aren't going to stop playing video games.&lt;/p&gt;

&lt;p&gt;I mean the traditional business model built around expensive proprietary hardware, exclusive software, digital storefronts, DRM and increasingly expensive AAA productions.&lt;/p&gt;

&lt;p&gt;I genuinely believe this business model is approaching a breaking point.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technological moat is disappearing
&lt;/h2&gt;

&lt;p&gt;For decades, console manufacturers enjoyed a relatively comfortable position.&lt;/p&gt;

&lt;p&gt;You bought a PlayStation to play PlayStation games. You bought an Xbox to play Xbox games. You bought a Nintendo console to play Nintendo games.&lt;/p&gt;

&lt;p&gt;The hardware was the distribution platform, the security boundary and the commercial moat.&lt;/p&gt;

&lt;p&gt;If you wanted to play a particular exclusive, you had to buy the corresponding hardware. There was no practical alternative.&lt;/p&gt;

&lt;p&gt;Piracy existed, jailbreaks existed and emulators existed, but there was usually a considerable time gap between a console's release, its security being compromised and its games becoming playable elsewhere.&lt;/p&gt;

&lt;p&gt;That time gap was incredibly valuable.&lt;/p&gt;

&lt;p&gt;Manufacturers could sell millions of consoles and games before alternative execution environments became practical.&lt;/p&gt;

&lt;p&gt;That assumption is now being challenged.&lt;/p&gt;

&lt;h3&gt;
  
  
  The PS5 is no longer the fortress it once was
&lt;/h3&gt;

&lt;p&gt;The September 2026 release of the Relapse jailbreak significantly expanded the number of exploitable PlayStation 5 consoles.&lt;/p&gt;

&lt;p&gt;The exploit works on firmware versions up to 13.60, enabling kernel access and arbitrary code execution.&lt;/p&gt;

&lt;p&gt;This is significant because previous jailbreaks often required consoles running considerably older firmware versions.&lt;/p&gt;

&lt;p&gt;It opens the door to homebrew, unofficial modifications, backups and alternative software environments.&lt;/p&gt;

&lt;p&gt;But the jailbreak itself isn't even the most interesting development.&lt;/p&gt;

&lt;p&gt;PS5 emulation is progressing at a remarkable pace.&lt;/p&gt;

&lt;p&gt;Consider Demon's Souls Remake.&lt;/p&gt;

&lt;p&gt;In early September, it was running at approximately one or two frames per second in the emulator. Within weeks, it had progressed through 30 FPS demonstrations to builds capable of exceeding 60 FPS at 1440p.&lt;/p&gt;

&lt;p&gt;By mid-October, my previous article documented custom builds approaching 120 FPS using frame generation.&lt;/p&gt;

&lt;p&gt;Read that again.&lt;/p&gt;

&lt;p&gt;We are no longer talking about waiting five or ten years for an emulator to become sufficiently mature to run commercial games.&lt;/p&gt;

&lt;p&gt;We are talking about going from barely playable to technically impressive performance within weeks.&lt;/p&gt;

&lt;p&gt;The historical economics of console exclusivity assumed that emulation would take years to catch up.&lt;/p&gt;

&lt;p&gt;What happens when that assumption stops being true?&lt;/p&gt;

&lt;h3&gt;
  
  
  Nintendo is experiencing the same problem
&lt;/h3&gt;

&lt;p&gt;Nintendo's Switch 2 has also experienced its first significant software jailbreak.&lt;/p&gt;

&lt;p&gt;The ns2jb exploit, developed by security researcher Sammy Hajhamid (Pepsipu), demonstrated native code execution through a software-only exploit involving the Switch 1 application SmileBASIC 4.&lt;/p&gt;

&lt;p&gt;OpenAI's Codex was reportedly used to assist with the development.&lt;/p&gt;

&lt;p&gt;The exploit demonstrated the ability to run homebrew, reverse-engineer and modify games, and access hardware functionality.&lt;/p&gt;

&lt;p&gt;Nintendo subsequently patched the vulnerability in firmware 23.5.0.&lt;/p&gt;

&lt;p&gt;But patching an individual vulnerability doesn't reverse the underlying technological trend.&lt;/p&gt;

&lt;p&gt;The barrier to understanding and modifying proprietary software is falling.&lt;/p&gt;

&lt;p&gt;And then came an even more interesting demonstration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ocarina of Time: Nintendo's exclusivity problem in miniature
&lt;/h2&gt;

&lt;p&gt;On November 5, Nintendo released its new version of The Legend of Zelda: Ocarina of Time, built from the ground up for Switch 2.&lt;/p&gt;

&lt;p&gt;It was a major exclusive release, tied to Nintendo's latest hardware and ecosystem.&lt;/p&gt;

&lt;p&gt;Yet independent developers rapidly began working on making the game available outside that ecosystem.&lt;/p&gt;

&lt;p&gt;The NX2navi project is a static recompilation of the Switch 2 version into a native x86-64 Windows application, complete with a Vulkan renderer.&lt;/p&gt;

&lt;p&gt;This is not traditional emulation.&lt;/p&gt;

&lt;p&gt;It translates the game's ARM64 code into native code that runs directly on PC hardware.&lt;/p&gt;

&lt;p&gt;The project is already playable in several areas at 60 FPS and above, although it remains under development and has visual issues and occasional crashes.&lt;/p&gt;

&lt;p&gt;There is also a broader Switch 2 recompilation toolchain emerging, building on the earlier SwitchRecomp work.&lt;/p&gt;

&lt;p&gt;The important point isn't whether every game will be perfectly recompiled overnight.&lt;/p&gt;

&lt;p&gt;It's that the technical process is becoming repeatable.&lt;/p&gt;

&lt;p&gt;Nintendo released an exclusive game for its proprietary hardware, and independent developers began producing a native PC execution environment almost immediately.&lt;/p&gt;

&lt;p&gt;This is the sort of development that should make every console manufacturer uncomfortable.&lt;/p&gt;

&lt;p&gt;The moat is no longer necessarily the hardware.&lt;/p&gt;

&lt;p&gt;It is becoming increasingly difficult to justify why software should remain tied to the hardware it was originally designed for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The economics of AAA development are already broken
&lt;/h2&gt;

&lt;p&gt;Now let's introduce another problem.&lt;/p&gt;

&lt;p&gt;AAA game development is becoming extraordinarily expensive.&lt;/p&gt;

&lt;p&gt;A 2024 Boston Consulting Group report compared the development costs of two major publishers.&lt;/p&gt;

&lt;p&gt;Between 2012 and 2021–2023, development costs increased by approximately 360% at one publisher and 449% at another.&lt;/p&gt;

&lt;p&gt;Meanwhile, the number of games released by those publishers fell by 73% and 63%, respectively.&lt;/p&gt;

&lt;p&gt;This is a worrying combination.&lt;/p&gt;

&lt;p&gt;The industry is spending dramatically more money producing fewer games.&lt;/p&gt;

&lt;p&gt;The traditional AAA model is based on enormous upfront investments, long development cycles and the expectation that enough consumers will purchase the finished product to generate an attractive return.&lt;/p&gt;

&lt;p&gt;But what happens when the market becomes increasingly fragmented?&lt;/p&gt;

&lt;p&gt;What happens when consumers have fewer reasons to buy expensive hardware?&lt;/p&gt;

&lt;p&gt;What happens when the games themselves become increasingly accessible outside their original platforms?&lt;/p&gt;

&lt;p&gt;And what happens when independent developers can use AI-assisted tools to recreate, port or extend software at a fraction of its original development cost?&lt;/p&gt;

&lt;p&gt;The problem isn't necessarily that every new game will be pirated.&lt;/p&gt;

&lt;p&gt;The problem is that the economic assumptions behind these investments are becoming less reliable.&lt;/p&gt;

&lt;p&gt;A publisher spending hundreds of millions developing an exclusive game needs to believe that exclusivity provides a meaningful commercial advantage.&lt;/p&gt;

&lt;p&gt;If consumers can increasingly play that game elsewhere, that advantage becomes harder to defend.&lt;/p&gt;

&lt;p&gt;The risk is particularly significant for single-player games.&lt;/p&gt;

&lt;p&gt;Online games have additional barriers: servers, matchmaking, competitive integrity, live services, player communities and continuous content delivery.&lt;/p&gt;

&lt;p&gt;A single-player campaign is fundamentally different.&lt;/p&gt;

&lt;p&gt;Once the software exists, the technical challenge is increasingly about understanding how it works and making it run elsewhere.&lt;/p&gt;

&lt;p&gt;That distinction matters enormously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consumers are running out of money
&lt;/h2&gt;

&lt;p&gt;Technology isn't the only problem.&lt;/p&gt;

&lt;p&gt;The economic environment is becoming increasingly hostile to expensive entertainment.&lt;/p&gt;

&lt;p&gt;Gaming is a discretionary expense. It competes with housing, food, energy, transportation, healthcare and everything else people need to pay for.&lt;/p&gt;

&lt;p&gt;When household budgets become tighter, entertainment expenditure is one of the things people reconsider.&lt;/p&gt;

&lt;p&gt;And the gaming industry seems determined to make its products more expensive.&lt;/p&gt;

&lt;p&gt;Consoles that historically became cheaper as their hardware matured are now experiencing the opposite trend.&lt;/p&gt;

&lt;p&gt;Sony increased the recommended European prices of its PlayStation hardware in April 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PS5: €649.99&lt;/li&gt;
&lt;li&gt;PS5 Digital Edition: €599.99&lt;/li&gt;
&lt;li&gt;PS5 Pro: €899.99&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The PS5 Pro is approaching the price of a capable gaming PC.&lt;/p&gt;

&lt;p&gt;And we are already seeing discussions about next-generation consoles potentially approaching €1,000 or even €1,200.&lt;/p&gt;

&lt;p&gt;Those figures are not confirmed retail prices, but the possibility itself should concern the industry.&lt;/p&gt;

&lt;p&gt;Memory, storage, semiconductor manufacturing, tariffs, energy costs and competition for components all contribute to the pressure.&lt;/p&gt;

&lt;p&gt;Meanwhile, geopolitical instability, including the conflicts involving Russia and Iran, creates additional uncertainty around energy prices and household purchasing power.&lt;/p&gt;

&lt;p&gt;I don't think it is unreasonable to expect consumers to become increasingly selective about how they spend money on gaming.&lt;/p&gt;

&lt;p&gt;Consider what a new console generation could mean for a family:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;€1,000 or more for the hardware.&lt;/li&gt;
&lt;li&gt;€80–€100 for individual games.&lt;/li&gt;
&lt;li&gt;Monthly subscriptions.&lt;/li&gt;
&lt;li&gt;Additional controllers and accessories.&lt;/li&gt;
&lt;li&gt;Expensive storage upgrades.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At some point, consumers will simply decide that this is too expensive.&lt;/p&gt;

&lt;p&gt;And when people want to play games but cannot justify the price of the official ecosystem, they will look for alternatives.&lt;/p&gt;

&lt;p&gt;Some will buy fewer games. Some will wait for sales. Some will move to older hardware, second-hand markets or PC gaming.&lt;/p&gt;

&lt;p&gt;And some will turn to piracy.&lt;/p&gt;

&lt;p&gt;This is where the technological developments become particularly dangerous for platform holders.&lt;/p&gt;

&lt;p&gt;Piracy is no longer necessarily a technically inferior experience that requires waiting years for emulation to catch up.&lt;/p&gt;

&lt;p&gt;The gap between the official product and alternative execution environments is shrinking.&lt;/p&gt;

&lt;p&gt;That changes the equation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Piracy is becoming a much more credible alternative
&lt;/h2&gt;

&lt;p&gt;I want to be clear about something: I am not suggesting that everybody will pirate every game.&lt;/p&gt;

&lt;p&gt;People pirate for different reasons, and many consumers will continue paying for games they enjoy, particularly when they value supporting developers.&lt;/p&gt;

&lt;p&gt;But the gaming industry has historically benefited from a combination of convenience, hardware exclusivity and technical barriers.&lt;/p&gt;

&lt;p&gt;Those barriers are weakening.&lt;/p&gt;

&lt;p&gt;Imagine buying a PC capable of running modern games.&lt;/p&gt;

&lt;p&gt;You can purchase games through Steam, GOG and other storefronts. You can play independent games, older games and modern releases. You can emulate previous generations of consoles. You can use native recompilations where they exist.&lt;/p&gt;

&lt;p&gt;You are no longer dependent on purchasing a separate machine every time a manufacturer releases a new generation.&lt;/p&gt;

&lt;p&gt;And you aren't necessarily dependent on the manufacturer's storefront to access every game.&lt;/p&gt;

&lt;p&gt;The situation becomes even more interesting when games can be recompiled into native applications.&lt;/p&gt;

&lt;p&gt;An emulator reproduces the environment expected by the original software.&lt;/p&gt;

&lt;p&gt;A static recompilation translates the original executable code into something that can run natively on another architecture.&lt;/p&gt;

&lt;p&gt;These are different techniques, but they lead towards the same commercial problem: the original hardware is no longer the only practical place where the software can execute.&lt;/p&gt;

&lt;p&gt;There is also an important distinction between technical access and legal ownership. A game becoming playable elsewhere does not make its copyrighted assets or code open source, nor does it automatically permit redistribution.&lt;/p&gt;

&lt;p&gt;But that doesn't change the underlying technological development.&lt;/p&gt;

&lt;p&gt;The cost of escaping proprietary execution environments is falling.&lt;/p&gt;

&lt;p&gt;And if the official ecosystem becomes increasingly expensive and restrictive, the incentive to explore alternatives becomes stronger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nintendo should be particularly concerned
&lt;/h2&gt;

&lt;p&gt;Of the three major console manufacturers, Nintendo arguably has the most concentrated exposure to the traditional console model.&lt;/p&gt;

&lt;p&gt;Nintendo's business is not literally 100% dependent on hardware. It has substantial intellectual property, licensing, films, merchandise and other activities.&lt;/p&gt;

&lt;p&gt;However, its core business remains closely tied to the relationship between proprietary Nintendo hardware and exclusive Nintendo software.&lt;/p&gt;

&lt;p&gt;People buy Nintendo consoles because they want to play Mario, Zelda, Pokémon and other Nintendo franchises.&lt;/p&gt;

&lt;p&gt;The hardware and software reinforce one another.&lt;/p&gt;

&lt;p&gt;This creates an interesting vulnerability.&lt;/p&gt;

&lt;p&gt;What happens if the software becomes increasingly accessible outside Nintendo hardware?&lt;/p&gt;

&lt;p&gt;Nintendo's competitive advantage isn't simply that it makes consoles.&lt;/p&gt;

&lt;p&gt;It is that it controls the primary execution environment for some of the most valuable intellectual property in gaming.&lt;/p&gt;

&lt;p&gt;If that control becomes harder to maintain, the business model comes under pressure.&lt;/p&gt;

&lt;p&gt;Nintendo can continue making excellent games. Its intellectual property isn't going to suddenly become worthless.&lt;/p&gt;

&lt;p&gt;But it needs to consider whether hardware exclusivity will remain an effective way of monetising that intellectual property.&lt;/p&gt;

&lt;p&gt;Its latest financial results demonstrate that the company is not currently collapsing: Nintendo sold 6.49 million Switch 2 consoles in the April–September 2026 period and reported higher net profit despite lower overall sales.&lt;/p&gt;

&lt;p&gt;That is precisely why this is a forward-looking argument rather than a claim that the collapse has already happened.&lt;/p&gt;

&lt;p&gt;The question is whether the economics supporting those sales will remain sustainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sony is fighting the wrong war
&lt;/h2&gt;

&lt;p&gt;Sony's position is different.&lt;/p&gt;

&lt;p&gt;PlayStation is an enormously important business, but Sony has other substantial sources of revenue, including music, films, entertainment, image sensors and electronics.&lt;/p&gt;

&lt;p&gt;It has more diversification than Nintendo.&lt;/p&gt;

&lt;p&gt;However, I find some of Sony's recent strategic decisions particularly difficult to understand.&lt;/p&gt;

&lt;p&gt;At exactly the moment when the barriers protecting proprietary gaming ecosystems are weakening, Sony seems increasingly determined to reinforce those barriers.&lt;/p&gt;

&lt;p&gt;Consider its recent decisions.&lt;/p&gt;

&lt;p&gt;First, Sony increased PlayStation hardware prices in an already expensive consumer electronics market.&lt;/p&gt;

&lt;p&gt;Second, it announced that physical disc production for new PlayStation games will end starting in January 2028.&lt;/p&gt;

&lt;p&gt;Third, Bloomberg reported that Sony was retreating from its strategy of bringing major single-player PlayStation releases to PC, returning towards console exclusivity.&lt;/p&gt;

&lt;p&gt;Individually, these decisions have commercial justifications.&lt;/p&gt;

&lt;p&gt;Sony wants higher margins, greater control over distribution and stronger incentives to purchase PlayStation hardware.&lt;/p&gt;

&lt;p&gt;But collectively, they are strategically contradictory.&lt;/p&gt;

&lt;p&gt;Sony is effectively asking consumers to pay more money for less control at precisely the moment when alternative platforms are becoming increasingly attractive.&lt;/p&gt;

&lt;p&gt;Digital-only distribution reduces the second-hand market and makes consumers more dependent on the platform's licensing infrastructure.&lt;/p&gt;

&lt;p&gt;Exclusivity makes hardware more important, but emulation and recompilation are undermining the technical barriers that make exclusivity enforceable.&lt;/p&gt;

&lt;p&gt;Higher hardware prices make the official ecosystem less accessible, potentially encouraging consumers to explore alternatives.&lt;/p&gt;

&lt;p&gt;This is not necessarily a recipe for immediate disaster.&lt;/p&gt;

&lt;p&gt;But it is a dangerous combination.&lt;/p&gt;

&lt;p&gt;When consumers have no viable alternative, platform restrictions are easier to enforce.&lt;/p&gt;

&lt;p&gt;When alternatives become technically credible, economically attractive and increasingly accessible, consumer-hostile practices become a liability.&lt;/p&gt;

&lt;p&gt;Sony seems to be operating under the assumption that its ecosystem is indispensable.&lt;/p&gt;

&lt;p&gt;That assumption deserves serious scrutiny.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft might be the biggest beneficiary
&lt;/h2&gt;

&lt;p&gt;There is an interesting irony in all of this.&lt;/p&gt;

&lt;p&gt;Microsoft spent decades competing in the console market against Sony and Nintendo.&lt;/p&gt;

&lt;p&gt;But Microsoft is structurally different from both companies.&lt;/p&gt;

&lt;p&gt;Xbox is a division of a much larger technology company.&lt;/p&gt;

&lt;p&gt;Microsoft owns Windows, Azure, Microsoft 365, LinkedIn and a substantial enterprise software business.&lt;/p&gt;

&lt;p&gt;Its gaming operations are important, but they aren't the foundation of the company.&lt;/p&gt;

&lt;p&gt;In fiscal 2026, Microsoft reported $331.8 billion in total revenue, while Xbox content and services revenue actually declined by 5%.&lt;/p&gt;

&lt;p&gt;Microsoft doesn't need the traditional console business to remain successful.&lt;/p&gt;

&lt;p&gt;And this puts it in an interesting position.&lt;/p&gt;

&lt;p&gt;If the future of gaming increasingly moves towards PC, Microsoft already owns the dominant desktop operating system ecosystem.&lt;/p&gt;

&lt;p&gt;If consoles become less relevant, Microsoft can continue participating in gaming through Windows, Xbox Game Pass, publishing, cloud services and its studios.&lt;/p&gt;

&lt;p&gt;It doesn't necessarily need everybody to buy an Xbox console.&lt;/p&gt;

&lt;p&gt;In fact, Microsoft has increasingly positioned Xbox as an ecosystem rather than just a physical device.&lt;/p&gt;

&lt;p&gt;This is strategically significant.&lt;/p&gt;

&lt;p&gt;The company that helped create the modern console market could end up benefiting from its decline.&lt;/p&gt;

&lt;p&gt;There is another important point here: Microsoft doesn't have to win the console wars to benefit from the outcome.&lt;/p&gt;

&lt;p&gt;It just needs Windows and its gaming ecosystem to remain relevant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The winner is PC
&lt;/h2&gt;

&lt;p&gt;I think the long-term winner is becoming increasingly obvious.&lt;/p&gt;

&lt;p&gt;PC gaming.&lt;/p&gt;

&lt;p&gt;Not because every consumer will suddenly build a gaming PC, but because PC offers something that traditional consoles increasingly struggle to provide: flexibility.&lt;/p&gt;

&lt;p&gt;A PC isn't tied to one manufacturer's hardware generation.&lt;/p&gt;

&lt;p&gt;It can run games from multiple storefronts, support emulators, run native recompilations, use mods, preserve older software and offer hardware upgrades without requiring consumers to abandon their existing libraries.&lt;/p&gt;

&lt;p&gt;It also benefits from an enormous ecosystem of independent developers and open-source projects.&lt;/p&gt;

&lt;p&gt;The PC platform doesn't need to convince consumers to buy a new proprietary device every few years to remain relevant.&lt;/p&gt;

&lt;p&gt;And the more games escape their original hardware environments, the more attractive PC becomes.&lt;/p&gt;

&lt;p&gt;Windows is particularly well positioned here.&lt;/p&gt;

&lt;p&gt;Valve has demonstrated that PC gaming can also flourish through alternative operating systems and distribution models, so I wouldn't claim Microsoft owns the future of PC gaming.&lt;/p&gt;

&lt;p&gt;But Microsoft owns Windows, and Windows remains an extremely important part of the gaming ecosystem.&lt;/p&gt;

&lt;p&gt;If the industry moves away from closed console environments towards more open execution platforms, Microsoft is already positioned to participate.&lt;/p&gt;

&lt;p&gt;Nintendo and Sony have to defend their hardware ecosystems.&lt;/p&gt;

&lt;p&gt;Microsoft can participate in the transition regardless of whether Xbox consoles remain commercially important.&lt;/p&gt;

&lt;h2&gt;
  
  
  The next generation of consoles could be a disaster
&lt;/h2&gt;

&lt;p&gt;Now consider what happens when these trends converge.&lt;/p&gt;

&lt;p&gt;The next generation of consoles could become substantially more expensive.&lt;/p&gt;

&lt;p&gt;There are already concerns about the cost of memory, storage and advanced semiconductor components.&lt;/p&gt;

&lt;p&gt;Consumers are increasingly price-sensitive.&lt;/p&gt;

&lt;p&gt;AAA games are becoming more expensive to produce.&lt;/p&gt;

&lt;p&gt;Emulation is improving at an unprecedented pace.&lt;/p&gt;

&lt;p&gt;Native recompilation is becoming increasingly practical.&lt;/p&gt;

&lt;p&gt;AI-assisted reverse engineering is reducing the specialist knowledge required to understand proprietary software.&lt;/p&gt;

&lt;p&gt;And the platform holders are still largely operating under the assumption that they can maintain the traditional relationship between hardware, software and distribution.&lt;/p&gt;

&lt;p&gt;What happens if the next PlayStation or Xbox costs €1,200?&lt;/p&gt;

&lt;p&gt;How many consumers will purchase one?&lt;/p&gt;

&lt;p&gt;How many will decide that their existing PC is good enough?&lt;/p&gt;

&lt;p&gt;How many will simply stop buying expensive games?&lt;/p&gt;

&lt;p&gt;How many will wait for discounts?&lt;/p&gt;

&lt;p&gt;And how many will discover that the games they want to play are already available through alternative execution environments?&lt;/p&gt;

&lt;p&gt;I think the industry is underestimating the cumulative effect of these pressures.&lt;/p&gt;

&lt;p&gt;A console generation is a massive investment for manufacturers.&lt;/p&gt;

&lt;p&gt;They need developers to support the hardware, consumers to buy the hardware and publishers to invest in increasingly expensive games.&lt;/p&gt;

&lt;p&gt;If any part of that ecosystem becomes significantly less attractive, the entire model becomes harder to sustain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why aren't gaming stocks collapsing already?
&lt;/h2&gt;

&lt;p&gt;This is perhaps the question I find most interesting.&lt;/p&gt;

&lt;p&gt;If the technological and economic trends are as significant as I believe they are, why aren't investors pricing in a much more dramatic structural change?&lt;/p&gt;

&lt;p&gt;I wouldn't pretend that every gaming company is equally exposed.&lt;/p&gt;

&lt;p&gt;Nintendo, Sony, Microsoft, Electronic Arts, Take-Two, Ubisoft and independent publishers all have different business models.&lt;/p&gt;

&lt;p&gt;Some have valuable intellectual property, recurring revenue, live services and businesses that are much less dependent on console hardware.&lt;/p&gt;

&lt;p&gt;But I find it difficult to understand why the market would assume that the traditional economics of the gaming industry will remain intact indefinitely.&lt;/p&gt;

&lt;p&gt;The industry is facing several simultaneous risks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hardware exclusivity is becoming harder to enforce.&lt;/li&gt;
&lt;li&gt;Digital distribution gives consumers less flexibility and control.&lt;/li&gt;
&lt;li&gt;AAA development costs are increasing.&lt;/li&gt;
&lt;li&gt;Hardware prices are increasing rather than decreasing.&lt;/li&gt;
&lt;li&gt;Consumer purchasing power is under pressure.&lt;/li&gt;
&lt;li&gt;Emulation and recompilation are becoming increasingly practical.&lt;/li&gt;
&lt;li&gt;AI-assisted reverse engineering is reducing the cost of recreating software.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are not isolated problems.&lt;/p&gt;

&lt;p&gt;They reinforce one another.&lt;/p&gt;

&lt;p&gt;If I were looking at gaming companies as an investor, I would be asking very difficult questions about their long-term valuations.&lt;/p&gt;

&lt;p&gt;I would be particularly interested in understanding how much of their future profitability depends on consumers continuing to accept the traditional console ecosystem.&lt;/p&gt;

&lt;p&gt;I wouldn't automatically short every gaming stock. That would ignore differences between individual companies, valuation, existing cash flows and the possibility that these threats take much longer to materialise than expected.&lt;/p&gt;

&lt;p&gt;But I would certainly be questioning the assumption that the industry's historical economics are a reliable guide to its future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gaming isn't dying. The old gaming industry might be.
&lt;/h2&gt;

&lt;p&gt;I want to finish by returning to the argument I made in my previous article.&lt;/p&gt;

&lt;p&gt;Software is losing its scarcity.&lt;/p&gt;

&lt;p&gt;AI is accelerating reverse engineering. Decompilation is becoming increasingly accessible. Native recompilation is making proprietary software portable. Emulation is becoming increasingly practical.&lt;/p&gt;

&lt;p&gt;Halo running on platforms it was never designed for was an early demonstration.&lt;/p&gt;

&lt;p&gt;Demon's Souls running at more than 60 FPS through PS5 emulation is another.&lt;/p&gt;

&lt;p&gt;Ocarina of Time being turned into a native Windows application shortly after its Switch 2 release is another.&lt;/p&gt;

&lt;p&gt;These are not necessarily isolated curiosities.&lt;/p&gt;

&lt;p&gt;They are evidence of a broader technological shift.&lt;/p&gt;

&lt;p&gt;The gaming industry has spent decades building business models around the assumption that controlling hardware means controlling software distribution.&lt;/p&gt;

&lt;p&gt;That assumption is becoming increasingly difficult to defend.&lt;/p&gt;

&lt;p&gt;And the industry is making things worse for itself by increasing prices, restricting consumer choice and doubling down on proprietary ecosystems.&lt;/p&gt;

&lt;p&gt;Consumers will continue playing games.&lt;/p&gt;

&lt;p&gt;They will continue buying great games, supporting developers and spending money on experiences they value.&lt;/p&gt;

&lt;p&gt;But they may become increasingly unwilling to pay the premium demanded by traditional platform holders.&lt;/p&gt;

&lt;p&gt;The future could look very different.&lt;/p&gt;

&lt;p&gt;PCs become the universal gaming platform. Consoles become optional devices rather than mandatory gateways. Games become increasingly portable. Communities preserve and extend software long after publishers abandon it. Developers monetise convenience, services, communities and continuous experiences rather than relying exclusively on controlling the execution environment.&lt;/p&gt;

&lt;p&gt;There will still be successful gaming companies.&lt;/p&gt;

&lt;p&gt;There will still be great games.&lt;/p&gt;

&lt;p&gt;But the economics of spending hundreds of millions developing a game, locking it to a proprietary platform and expecting consumers to purchase expensive hardware to access it may become increasingly difficult to justify.&lt;/p&gt;

&lt;p&gt;The console wars might not end because one manufacturer finally defeats the others.&lt;/p&gt;

&lt;p&gt;They might end because consumers simply stop needing the consoles.&lt;/p&gt;

&lt;p&gt;And if that happens, the biggest losers won't necessarily be the companies that make the worst games.&lt;/p&gt;

&lt;p&gt;They will be the companies that fail to understand that &lt;strong&gt;controlling where software runs is no longer the same thing as controlling the software itself.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
      <category>discuss</category>
      <category>security</category>
    </item>
    <item>
      <title>Buckle Up: Is the U.S.S. Enterprise About to Take Off?</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Thu, 12 Nov 2026 02:14:51 +0000</pubDate>
      <link>https://dev.to/remojansen/buckle-up-is-the-uss-enterprise-about-to-take-off-34n0</link>
      <guid>https://dev.to/remojansen/buckle-up-is-the-uss-enterprise-about-to-take-off-34n0</guid>
      <description>&lt;h1&gt;
  
  
  Buckle Up: Is the U.S.S. Enterprise About to Take Off?
&lt;/h1&gt;

&lt;p&gt;I recently came across a post by the &lt;a href="https://blog.aifutures.org/p/q35-timelines-update-looks-like-the" rel="noopener noreferrer"&gt;AI Futures Project&lt;/a&gt; with a rather unsettling title: &lt;em&gt;Q3.5 Timelines Update: Looks Like the Intelligence Explosion Will Happen in 2027 After All.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The basic idea is that we could be much closer than previously expected to AI systems capable of doing AI research better than the best human researchers. And, if that happens, those systems could help build even more capable AI, potentially accelerating the whole process.&lt;/p&gt;

&lt;p&gt;I honestly don't know how to feel about this.&lt;/p&gt;

&lt;p&gt;I've always been a fan of science fiction. I've loved imagining different versions of the future, whether it's the terrifying world of Terminator 2, the mind-bending reality of The Matrix, or the optimistic, technology-driven universe of Star Trek.&lt;/p&gt;

&lt;p&gt;But one particular science-fiction story has stayed with me more than any other: Isaac Asimov's short story &lt;em&gt;The Last Question&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It's a fascinating story that follows humanity and increasingly advanced computers across an almost unimaginable stretch of time. Throughout the story, humans repeatedly ask a computer whether the universe's entropy can ever be reversed. Each time, the computer becomes more sophisticated, but its answer remains the same: there isn't enough information to answer the question yet. Eventually, the story reaches a conclusion that is difficult to forget.&lt;/p&gt;

&lt;p&gt;What struck me about the story wasn't simply the idea of an incredibly powerful computer. It was the scale of what intelligence might eventually become, and how far beyond our current understanding it could take us. It made me think about a future in which technological progress reaches a point where we can no longer meaningfully predict what comes next.&lt;/p&gt;

&lt;p&gt;That's closely related to an idea known as the technological singularity.&lt;/p&gt;

&lt;p&gt;The term is borrowed from physics, where a singularity describes a point at which our existing theories can no longer adequately explain what is happening. In technology, it's used as a metaphor for a hypothetical point when progress becomes so rapid, and its consequences so profound, that our ability to predict what comes next breaks down.&lt;/p&gt;

&lt;h2&gt;
  
  
  But how could we get there?
&lt;/h2&gt;

&lt;p&gt;One proposed path is something known as an intelligence explosion.&lt;/p&gt;

&lt;p&gt;Imagine AI becoming capable enough to meaningfully contribute to developing the next generation of AI. That next generation would be even better at research and engineering, allowing it to build an even more capable generation after that. Each improvement could make the next improvement happen faster.&lt;/p&gt;

&lt;p&gt;In theory, this creates a feedback loop: AI helps improve AI, which makes AI even better at improving itself. If this process becomes sufficiently powerful, the pace of technological progress could accelerate dramatically.&lt;/p&gt;

&lt;p&gt;This is the intelligence explosion: a hypothetical period of extremely rapid growth in machine intelligence.&lt;/p&gt;

&lt;p&gt;And if that growth becomes powerful enough to fundamentally transform the pace and direction of technological development, it could lead to what we call the technological singularity.&lt;/p&gt;

&lt;p&gt;In other words, the intelligence explosion is a possible route to the singularity. The singularity is the hypothetical point beyond which our ability to predict technological progress breaks down.&lt;/p&gt;

&lt;p&gt;It's an extraordinary possibility. And it's also difficult to get our heads around.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is exponential growth so difficult to understand?
&lt;/h2&gt;

&lt;p&gt;Part of the problem is that exponential growth is not something humans are naturally good at understanding.&lt;/p&gt;

&lt;p&gt;We're pretty good at imagining one thing getting a little bigger, then a little bigger again. We're much worse at imagining something doubling over and over. The numbers look small at first, then suddenly become ridiculous.&lt;/p&gt;

&lt;p&gt;Perhaps that's because most of the things we encounter in everyday life don't behave this way. A tree grows gradually. A house gets built one brick at a time. Our salaries, savings and everyday experiences tend to change in ways that feel relatively linear. We rarely encounter something that appears almost insignificant at first and then grows to an unimaginable size in a surprisingly short period.&lt;/p&gt;

&lt;p&gt;But exponential growth can do exactly that.&lt;/p&gt;

&lt;p&gt;There's a famous legend that makes this easy to picture.&lt;/p&gt;

&lt;p&gt;A king offers a reward to the person who invents chess. The inventor asks for one grain of rice on the first square of the chessboard, two on the second, four on the third, and so on—doubling the amount on every square.&lt;/p&gt;

&lt;p&gt;The king thinks this sounds like a modest request. It isn't.&lt;/p&gt;

&lt;p&gt;A chessboard has 64 squares, so the total is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1 + 2 + 4 + 8 + ... + 2^63 = 2^64 - 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's 18,446,744,073,709,551,615 grains of rice. Around 18 quintillion.&lt;/p&gt;

&lt;p&gt;Suppose, very roughly, that each grain weighs 25 milligrams. The total would weigh about 461 billion metric tonnes. That's roughly 1.3 million Empire State Buildings' worth of rice, using a rough building-weight estimate of 365,000 metric tonnes.&lt;/p&gt;

&lt;p&gt;The first few squares barely matter. Almost all the rice is on the last few.&lt;/p&gt;

&lt;p&gt;That's the part of exponential growth our intuition misses: the ending can be so much bigger than the beginning that it's hard to believe they belong to the same process.&lt;/p&gt;

&lt;p&gt;And this is why discussions about an AI intelligence explosion are so difficult to evaluate intuitively. If AI development starts feeding into its own improvement, we might be looking at a process whose consequences are much harder to imagine than the technologies we're used to seeing develop around us.&lt;/p&gt;

&lt;h2&gt;
  
  
  A different way to think about the future
&lt;/h2&gt;

&lt;p&gt;There's another way to appreciate just how extraordinary this could become.&lt;/p&gt;

&lt;p&gt;In its recent assessment of Anthropic's AI research and development, &lt;a href="https://metr.org/blog/2026-11-05-anthropic-ai-rd-acceleration-assessment/" rel="noopener noreferrer"&gt;METR&lt;/a&gt; identified a striking change in the rate of progress. Its analysis of benchmark trends found that the more recent trend had approximately 1.9 times the slope of the earlier one.&lt;/p&gt;

&lt;p&gt;Now, let's take that 1.9 figure and consider a hypothetical scenario.&lt;/p&gt;

&lt;p&gt;Imagine that the rate of technological progress increases by a factor of 1.9 every year, and that this acceleration compounds.&lt;/p&gt;

&lt;p&gt;After ten years, we get:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1.9^10 ≈ 613&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In other words, the rate of progress in year ten would be approximately 613 times what it was at the beginning.&lt;/p&gt;

&lt;p&gt;Think about what that means. One year of progress at that future rate could potentially deliver as much advancement as 613 years at today's starting rate.&lt;/p&gt;

&lt;p&gt;Of course, this is a mathematical thought experiment, not a prediction. METR's 1.9 figure describes the relative slope of a particular benchmark trend, not a claim that all technological progress will compound by 1.9 every year. Progress doesn't necessarily accelerate at a constant rate, and technological breakthroughs don't translate neatly into units of time.&lt;/p&gt;

&lt;p&gt;But the exercise gives us a sense of the scale we're talking about.&lt;/p&gt;

&lt;p&gt;Now, consider how much the world has already changed.&lt;/p&gt;

&lt;p&gt;Much of what we consider modern technology today has emerged during the roughly 250 years since the Industrial Revolution. Electricity, telecommunications, aviation, computers, the internet and now artificial intelligence have transformed almost every aspect of human life.&lt;/p&gt;

&lt;p&gt;My own grandmother grew up in a remote area of Spain where electricity wasn't even available.&lt;/p&gt;

&lt;p&gt;Think about that for a moment.&lt;/p&gt;

&lt;p&gt;Within a single human lifetime, we've gone from a world where some people lived without electric lighting to one where we can interact with increasingly capable AI agents that can reason, write code, conduct research and perform tasks on our behalf.&lt;/p&gt;

&lt;p&gt;My grandmother has witnessed a transformation that would have seemed like science fiction to the world she was born into.&lt;/p&gt;

&lt;p&gt;And if humanity achieved so much in roughly a century, what could the next few decades bring if the pace of progress continues to accelerate?&lt;/p&gt;

&lt;p&gt;What happens if the next ten years deliver hundreds of times the technological progress we currently experience in a year?&lt;/p&gt;

&lt;p&gt;Perhaps the most difficult thing isn't imagining what AI might become. It's recognising that our own experience of technological change may be a very poor guide to what's coming next.&lt;/p&gt;

&lt;p&gt;Buckle up indeed.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, is AI about to do the same thing?
&lt;/h2&gt;

&lt;p&gt;Some people think AI could help accelerate the development of even better AI—and that this feedback loop might produce an intelligence explosion as soon as 2027.&lt;/p&gt;

&lt;p&gt;That sounds like a lot. But it helps to be precise about what the claim actually is.&lt;/p&gt;

&lt;p&gt;The recent &lt;a href="https://blog.aifutures.org/p/q35-timelines-update-looks-like-the" rel="noopener noreferrer"&gt;AI Futures Project timelines update&lt;/a&gt; forecasts that Superhuman AI Researcher (SAR) could arrive sometime in 2027, assuming there isn't a substantial slowdown in AI development.&lt;/p&gt;

&lt;p&gt;What exactly does that mean?&lt;/p&gt;

&lt;p&gt;The authors describe a Superhuman AI Researcher as roughly the point at which an AI system could perform the research work of the best human researchers at an advanced AI company, while also being able to automate its coding. In other words, a company could potentially prefer an entirely AI-based research team to even its best human-only research team.&lt;/p&gt;

&lt;p&gt;That's a pretty extraordinary milestone.&lt;/p&gt;

&lt;p&gt;There is some evidence behind the forecast. METR's recent assessment found that progress on certain well-specified AI tasks had accelerated substantially compared with an earlier period.&lt;/p&gt;

&lt;p&gt;More specifically, its benchmark-trend analysis suggested that the recent rate of progress was approximately 1.9 times the earlier rate, although there is considerable uncertainty around the estimate.&lt;/p&gt;

&lt;p&gt;This is particularly interesting because it suggests that AI isn't simply becoming more capable at helping us with everyday tasks. It may also be helping researchers build the next generation of AI systems more quickly.&lt;/p&gt;

&lt;p&gt;However, there are important caveats.&lt;/p&gt;

&lt;p&gt;METR's findings concern one company and particular kinds of tasks. Benchmark improvements don't necessarily translate directly into equivalent improvements in real-world research capabilities. The report also acknowledges significant uncertainty, and some of the evidence most relevant to its conclusions was redacted by Anthropic.&lt;/p&gt;

&lt;p&gt;Turning those findings into a forecast for when AI could outperform top human researchers requires additional assumptions and modelling.&lt;/p&gt;

&lt;p&gt;In fact, the AI Futures Project's different forecasting approaches don't all land on exactly the same date. Some point to late 2027 or even 2028; others give earlier estimates.&lt;/p&gt;

&lt;p&gt;The authors themselves acknowledge that their modelling is preliminary and that their forecasts depend on AI development not slowing down substantially.&lt;/p&gt;

&lt;p&gt;So I'd describe 2027 as a plausible, evidence-informed scenario—not a date we know is coming.&lt;/p&gt;

&lt;h2&gt;
  
  
  And what could this mean for our future?
&lt;/h2&gt;

&lt;p&gt;Something I've increasingly noticed is how normal it is becoming to hear incredibly wild predictions about AI.&lt;/p&gt;

&lt;p&gt;We're talking about machines that could outperform the best human researchers, technological progress accelerating beyond anything we've experienced before, robots potentially transforming the economy, and a future where traditional ideas about work, money and retirement might no longer make sense.&lt;/p&gt;

&lt;p&gt;Elon Musk, for example, has made some extraordinary predictions about AI and robotics creating a world of abundance, where goods and services become so cheap that everyone could enjoy a very high standard of living. He's even suggested that retirement savings might become largely irrelevant.&lt;/p&gt;

&lt;p&gt;The underlying argument is that if AI and robotics make production extraordinarily cheap and efficient, we could eventually reach a world where many of the economic constraints we take for granted today no longer apply.&lt;/p&gt;

&lt;p&gt;Imagine robots building houses, growing food, producing goods and providing services, while increasingly capable AI systems handle much of the intellectual work.&lt;/p&gt;

&lt;p&gt;In theory, the cost of producing many things could fall dramatically.&lt;/p&gt;

&lt;p&gt;But there's a rather large assumption hidden in this vision: that the benefits of all this productivity would be distributed widely across society.&lt;/p&gt;

&lt;p&gt;Technology alone doesn't guarantee economic equality. Even if we develop machines capable of producing extraordinary amounts of wealth, we still have to decide who owns those machines, who benefits from their productivity and how society adapts.&lt;/p&gt;

&lt;p&gt;For an example of the kind of claims Musk has made, see &lt;a href="https://www.businessinsider.com/" rel="noopener noreferrer"&gt;this report on his AI-abundance predictions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But this brings me back to something I've been wondering about.&lt;/p&gt;

&lt;p&gt;Are we actually approaching something extraordinary, or are we just getting caught up in the hype?&lt;/p&gt;

&lt;p&gt;Are these people genuinely convinced that we're approaching the technological singularity? Or is some of this simply hype, driven by companies, investors and people trying to capture our attention?&lt;/p&gt;

&lt;p&gt;I sometimes wonder whether we're becoming so accustomed to dramatic headlines that we've developed a kind of mental filter. We read that AI could outperform the best human researchers by 2027, or that robots could fundamentally change the economy, and our first instinct is to dismiss it as another exaggerated prediction.&lt;/p&gt;

&lt;p&gt;Perhaps that's because the implications are so enormous that we don't really know how to process them. It's easier to assume it's nonsense than to seriously consider that some of these things might actually happen.&lt;/p&gt;

&lt;p&gt;And that's what I find particularly fascinating, but also a little unsettling.&lt;/p&gt;

&lt;p&gt;There is genuine evidence that AI is accelerating parts of AI research and development. There are also serious researchers trying to understand what happens if that acceleration continues. But there is a huge difference between observing faster progress today and knowing exactly where it will lead tomorrow.&lt;/p&gt;

&lt;p&gt;We don't know whether the intelligence explosion will happen in 2027, in 2030, or at all. We don't know whether the technology will hit significant bottlenecks, whether progress will slow down, or whether some of the more extraordinary predictions will turn out to be wildly optimistic.&lt;/p&gt;

&lt;p&gt;The chessboard story teaches us why exponential growth can surprise us. The compounding thought experiment gives us a glimpse of how extraordinary the numbers could become. But neither tells us that AI progress will keep accelerating indefinitely.&lt;/p&gt;

&lt;p&gt;Personally, I find worrying endlessly about these possibilities rather stressful. There are enough things to worry about in the present without spending every day wondering whether we're approaching an event that could fundamentally change civilisation.&lt;/p&gt;

&lt;p&gt;So I'd rather remain optimistic.&lt;/p&gt;

&lt;p&gt;When I think about the future of AI, I'd much rather imagine a Star Trek-like future than a Terminator one. A world where technology helps us solve problems, explore the universe, improve medicine, eliminate scarcity and spend more time doing the things that make life worthwhile.&lt;/p&gt;

&lt;p&gt;Maybe that's wishful thinking. There are plenty of reasons to be cautious, and we shouldn't ignore the risks or assume that technological progress automatically makes the world a better place.&lt;/p&gt;

&lt;p&gt;But perhaps that's also the exciting part. We don't know exactly what comes next.&lt;/p&gt;

&lt;p&gt;The U.S.S. Enterprise isn't about to lift off, and science fiction isn't about to become reality all at once. But maybe, just maybe, we're getting closer to a future where some of the things that once seemed impossible start becoming ordinary.&lt;/p&gt;

&lt;p&gt;And I'd quite like to be around to see that.&lt;/p&gt;

&lt;p&gt;So, buckle up. It could be a wild ride.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>science</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Agents Have a Human Problem</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Fri, 06 Nov 2026 10:01:15 +0000</pubDate>
      <link>https://dev.to/remojansen/ai-agents-have-a-human-problem-17gh</link>
      <guid>https://dev.to/remojansen/ai-agents-have-a-human-problem-17gh</guid>
      <description>&lt;p&gt;We are entering a new era of software development. AI agents can write code, refactor existing systems, investigate bugs, implement features and perform tasks that previously required human developers.&lt;/p&gt;

&lt;p&gt;This has led to some interesting questions about the future of software engineering.&lt;/p&gt;

&lt;p&gt;Do we still need abstractions if AI can work directly with low-level implementations? Do we still need documentation if agents can read the source code? Do we still need to care about developer experience if developers are no longer the only ones writing code?&lt;/p&gt;

&lt;p&gt;I think we're asking some of the wrong questions.&lt;/p&gt;

&lt;p&gt;One of the assumptions behind these discussions is that AI agents are fundamentally different from human developers, and therefore the engineering principles we've developed over decades might no longer apply.&lt;/p&gt;

&lt;p&gt;But there's an important distinction worth making.&lt;/p&gt;

&lt;p&gt;AI agents are not limited in the same ways humans are. They already have considerably more reasoning bandwidth in certain dimensions. They can process more information, explore more of a codebase and handle levels of complexity that would be difficult for an individual developer.&lt;/p&gt;

&lt;p&gt;But they aren't unlimited.&lt;/p&gt;

&lt;p&gt;And that's the interesting part.&lt;/p&gt;

&lt;p&gt;Many of the engineering principles we've developed to manage complexity remain relevant, not because agents have human-like limitations, but because even greater reasoning capacity benefits from structure.&lt;/p&gt;

&lt;p&gt;The problem isn't that agents are just like us. It's that we're still building systems that can become too complex to reason about efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  We didn't invent abstractions just for humans
&lt;/h2&gt;

&lt;p&gt;Consider why we introduced abstractions in software engineering in the first place.&lt;/p&gt;

&lt;p&gt;We moved from machine code to assembly, from assembly to higher-level programming languages, and from low-level instructions to increasingly sophisticated abstractions.&lt;/p&gt;

&lt;p&gt;We introduced modules, interfaces, encapsulation, libraries, frameworks and architectural patterns.&lt;/p&gt;

&lt;p&gt;These developments weren't arbitrary. They helped us manage complexity.&lt;/p&gt;

&lt;p&gt;A developer working on a large system cannot keep every implementation detail in their head. They need ways to reason about parts of the system without understanding everything happening underneath.&lt;/p&gt;

&lt;p&gt;Abstractions make this possible.&lt;/p&gt;

&lt;p&gt;They allow us to focus on what something does rather than constantly having to understand how it works.&lt;/p&gt;

&lt;p&gt;This is one of the arguments I made in my previous article, &lt;a href="https://dev.to/remojansen/will-ai-make-abstractions-obsolete-5h87"&gt;Will AI Make Abstractions Obsolete?&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The argument was that AI doesn't make abstractions obsolete. The need to manage complexity doesn't disappear simply because we have a different way of producing code.&lt;/p&gt;

&lt;p&gt;But there's another reason why abstractions matter.&lt;/p&gt;

&lt;p&gt;They aren't exclusively useful to humans.&lt;/p&gt;

&lt;p&gt;They are useful to anything that needs to reason about complex systems.&lt;/p&gt;

&lt;p&gt;And that includes AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents have more bandwidth, but not unlimited capacity
&lt;/h2&gt;

&lt;p&gt;Human developers have limited working memory. When working on an unfamiliar codebase, we need to spend time understanding its structure, identifying relevant components, discovering conventions and building a mental model of how everything fits together.&lt;/p&gt;

&lt;p&gt;AI agents have considerably more bandwidth for this kind of work.&lt;/p&gt;

&lt;p&gt;An agent can inspect many files, trace dependencies across modules, compare implementations and maintain relationships between parts of a system that would be difficult for an individual developer to keep in working memory.&lt;/p&gt;

&lt;p&gt;In some dimensions, AI can already operate beyond human cognitive limits.&lt;/p&gt;

&lt;p&gt;But this doesn't mean it can handle complexity without constraints.&lt;/p&gt;

&lt;p&gt;Models have finite context windows and computational resources. As the number of components, dependencies and interactions grows, the amount of information that needs to be considered grows too. Maintaining an accurate understanding of an increasingly complex system becomes progressively more demanding.&lt;/p&gt;

&lt;p&gt;The important distinction is that AI raises the ceiling. It doesn't remove it.&lt;/p&gt;

&lt;p&gt;Consider an unfamiliar codebase with duplicated functionality, inconsistent naming conventions, implicit dependencies and unclear architectural boundaries.&lt;/p&gt;

&lt;p&gt;A human developer might struggle to understand the system because they cannot comfortably keep all the relevant information in working memory.&lt;/p&gt;

&lt;p&gt;An AI agent might be able to explore considerably more of the codebase in a single task. But it still has to discover where functionality lives, reconstruct dependencies, infer conventions and determine which information is relevant.&lt;/p&gt;

&lt;p&gt;An important difference is that agents can often compensate for complexity by exploring more information. A human developer might need to simplify a problem to fit it into working memory. An agent might instead inspect more files, follow more dependencies and spend more reasoning resources reconstructing the system.&lt;/p&gt;

&lt;p&gt;These are different strategies, but neither makes complexity free.&lt;/p&gt;

&lt;p&gt;The problem isn't necessarily that the agent cannot understand the code. It's that the codebase makes understanding unnecessarily expensive.&lt;/p&gt;

&lt;p&gt;This is where familiar software engineering practices become valuable again.&lt;/p&gt;

&lt;p&gt;Good naming reduces ambiguity. Modular architecture limits the amount of code that needs to be considered. Clear interfaces communicate expectations. Documentation provides context that might otherwise need to be inferred. Tests provide feedback about whether an implementation is correct.&lt;/p&gt;

&lt;p&gt;These practices don't compensate for an AI's inability to reason like a human. They reduce the amount of unnecessary complexity that any problem solver needs to deal with.&lt;/p&gt;

&lt;p&gt;And as agents become more capable, the value of these practices becomes even more apparent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical debt now has a token cost
&lt;/h2&gt;

&lt;p&gt;There is an interesting development that makes this argument particularly tangible.&lt;/p&gt;

&lt;p&gt;We can start measuring some of the consequences of poor code quality in terms of AI token consumption.&lt;/p&gt;

&lt;p&gt;An agent working on a messy codebase often needs more tokens to understand the system before it can implement a change.&lt;/p&gt;

&lt;p&gt;This isn't just about generating more code. A significant amount of an agent's work involves reading, exploring, reasoning and gathering context.&lt;/p&gt;

&lt;p&gt;Some recent experiments have started investigating this relationship.&lt;/p&gt;

&lt;p&gt;For example, SonarSource published research comparing coding-agent performance across cleaner and messier codebases. Their results showed that cleaner codebases reduced token consumption, reasoning effort and the number of files agents needed to revisit.&lt;/p&gt;

&lt;p&gt;Other experiments have reported substantial reductions in token consumption after restructuring large, difficult-to-navigate source files into smaller, more cohesive modules.&lt;/p&gt;

&lt;p&gt;The implications are interesting.&lt;/p&gt;

&lt;p&gt;Historically, we've justified refactoring by explaining that it makes code easier for developers to understand and maintain.&lt;/p&gt;

&lt;p&gt;Now we have another way to think about its value.&lt;/p&gt;

&lt;p&gt;Technical debt has a token cost.&lt;/p&gt;

&lt;p&gt;A poorly structured codebase doesn't just make humans slower. It can make agents more expensive to operate.&lt;/p&gt;

&lt;p&gt;Every unnecessary dependency, duplicated implementation, unclear abstraction or implicit convention creates additional work for something trying to understand the system.&lt;/p&gt;

&lt;p&gt;Refactoring can therefore become an investment in reducing the marginal cost of future development tasks.&lt;/p&gt;

&lt;p&gt;You spend resources improving the structure of the codebase today, potentially saving tokens, time and money across hundreds of future agent interactions.&lt;/p&gt;

&lt;p&gt;Of course, fewer tokens don't automatically mean better results. An agent still needs sufficient context to make correct decisions. The objective isn't to minimize context at all costs, but to eliminate unnecessary complexity and exploration.&lt;/p&gt;

&lt;p&gt;We should also distinguish between token consumption, execution time and correctness. Reducing the amount of context an agent needs doesn't necessarily mean it will produce better results. The real objective is to make it more efficient without compromising the quality of its decisions.&lt;/p&gt;

&lt;p&gt;Nevertheless, the direction is clear: code quality has consequences beyond human productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI amplifies the gap
&lt;/h2&gt;

&lt;p&gt;This brings me to an idea I explored in my SIC2026 talk: AI amplifies the gap.&lt;/p&gt;

&lt;p&gt;The point is that many of the things we discuss in developer experience have always been true.&lt;/p&gt;

&lt;p&gt;A good development environment makes developers more productive. Clear architecture makes systems easier to understand. Consistent conventions reduce friction. Good documentation makes it easier to work with unfamiliar systems.&lt;/p&gt;

&lt;p&gt;AI doesn't invalidate these principles.&lt;/p&gt;

&lt;p&gt;It amplifies them.&lt;/p&gt;

&lt;p&gt;Consider two development environments.&lt;/p&gt;

&lt;p&gt;The first has clear architectural boundaries, predictable conventions, useful documentation, explicit interfaces and automated tests.&lt;/p&gt;

&lt;p&gt;The second has inconsistent patterns, outdated documentation, unclear dependencies, duplicated logic and poor test coverage.&lt;/p&gt;

&lt;p&gt;A human developer will probably be more productive in the first environment.&lt;/p&gt;

&lt;p&gt;An AI agent will probably be more productive there too. But there's an additional dimension.&lt;/p&gt;

&lt;p&gt;Agents can operate at considerable speed and scale. They can explore many files, implement multiple changes and execute numerous tasks in parallel.&lt;/p&gt;

&lt;p&gt;They have considerably more bandwidth than an individual developer, which allows them to take advantage of good engineering environments at a different scale.&lt;/p&gt;

&lt;p&gt;When the environment is good, this gives them leverage.&lt;/p&gt;

&lt;p&gt;When the environment is bad, they have to spend more resources reconstructing the system, resolving ambiguity and validating their assumptions. Their ability to operate at scale can also give mistakes more opportunities to propagate.&lt;/p&gt;

&lt;p&gt;AI amplifies the quality of the environment in which it operates.&lt;/p&gt;

&lt;p&gt;This is the DX paradox: precisely when AI makes implementation cheaper, the quality of the engineering environment becomes even more important.&lt;/p&gt;

&lt;p&gt;The cost of producing code is decreasing, but the cost of understanding, coordinating, validating and maintaining complex systems hasn't disappeared.&lt;/p&gt;

&lt;p&gt;In fact, it might become more consequential.&lt;/p&gt;

&lt;h2&gt;
  
  
  We should rethink what good developer experience means
&lt;/h2&gt;

&lt;p&gt;For a long time, developer experience has primarily been discussed from the perspective of human developers.&lt;/p&gt;

&lt;p&gt;We optimize build times, improve documentation, simplify tooling, introduce conventions and create abstractions to make development easier.&lt;/p&gt;

&lt;p&gt;But perhaps we should stop thinking about these practices as exclusively human-oriented.&lt;/p&gt;

&lt;p&gt;They are ways of making complex systems easier to understand, navigate and change.&lt;/p&gt;

&lt;p&gt;That means the audience for good developer experience is expanding.&lt;/p&gt;

&lt;p&gt;We should increasingly consider how easy it is for an agent to understand our architecture, discover the right implementation, identify the constraints of a task and verify its work.&lt;/p&gt;

&lt;p&gt;This doesn't necessarily mean creating entirely separate engineering practices for agents.&lt;/p&gt;

&lt;p&gt;Many of the things we already do are useful.&lt;/p&gt;

&lt;p&gt;Good modularity, explicit interfaces, consistent conventions, automated tests, clear documentation and well-designed abstractions remain valuable.&lt;/p&gt;

&lt;p&gt;Some practices will evolve, and new ones will emerge. We might need better ways to communicate agent permissions, task boundaries, operational constraints and verification requirements.&lt;/p&gt;

&lt;p&gt;But the underlying principles are familiar.&lt;/p&gt;

&lt;p&gt;We should also resist the temptation to blindly preserve every historical practice simply because it has worked for humans. Some practices may become less relevant, while others may need to be redesigned around agent capabilities.&lt;/p&gt;

&lt;p&gt;The important thing is to understand why these practices exist in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future isn't about writing less code. It's about managing complexity.
&lt;/h2&gt;

&lt;p&gt;AI agents are changing how software is produced, but they haven't fundamentally changed the nature of the problems we're trying to solve.&lt;/p&gt;

&lt;p&gt;Building complex software is still difficult.&lt;/p&gt;

&lt;p&gt;Understanding unfamiliar systems is still difficult.&lt;/p&gt;

&lt;p&gt;Coordinating changes across large codebases is still difficult.&lt;/p&gt;

&lt;p&gt;Making sure that changes are correct is still difficult.&lt;/p&gt;

&lt;p&gt;These problems didn't emerge because humans write code. They emerged because software systems are complex.&lt;/p&gt;

&lt;p&gt;AI is already capable of handling levels of complexity that would be difficult for individual developers. It has more reasoning bandwidth, can explore more relationships and can operate at a scale that would have been impractical before.&lt;/p&gt;

&lt;p&gt;But greater intelligence doesn't make complexity disappear. It allows us to work with more of it.&lt;/p&gt;

&lt;p&gt;And as the systems we build become increasingly sophisticated, the demands on that reasoning capacity will increase too.&lt;/p&gt;

&lt;p&gt;We developed abstractions, architectural boundaries, documentation, conventions and engineering practices to help us manage complexity.&lt;/p&gt;

&lt;p&gt;These principles remain relevant, not because AI has the same cognitive limitations as humans, but because even significantly greater reasoning capacity benefits from structure.&lt;/p&gt;

&lt;p&gt;Perhaps we've been too quick to assume that the future of software engineering must be radically different simply because AI is involved.&lt;/p&gt;

&lt;p&gt;We should certainly adapt. We should experiment. We should challenge assumptions that no longer make sense.&lt;/p&gt;

&lt;p&gt;But we shouldn't throw away decades of engineering knowledge without understanding the problems that knowledge was designed to solve.&lt;/p&gt;

&lt;p&gt;We didn't invent good software engineering practices because humans are bad at programming. We invented them because building complex software is difficult.&lt;/p&gt;

&lt;p&gt;And AI hasn't changed that.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Will AI Make Abstractions Obsolete?</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Thu, 05 Nov 2026 22:54:44 +0000</pubDate>
      <link>https://dev.to/remojansen/will-ai-make-abstractions-obsolete-5h87</link>
      <guid>https://dev.to/remojansen/will-ai-make-abstractions-obsolete-5h87</guid>
      <description>&lt;p&gt;As AI agents become increasingly capable, I've noticed a growing number of discussions questioning some of the fundamental assumptions we've made about software development.&lt;/p&gt;

&lt;p&gt;Do we still need code reviews if AI can write and verify code? Why should we use languages like Python or Java when an AI can generate much more efficient Rust? And if AI becomes good enough, why stop at Rust? Why not have it generate assembly or machine code directly? Do we even need frameworks and libraries anymore?&lt;/p&gt;

&lt;p&gt;The underlying assumption seems to be that many of the abstractions we've introduced over the years exist primarily to compensate for human limitations. If AI doesn't have those limitations, perhaps we can remove the abstractions too.&lt;/p&gt;

&lt;p&gt;I think this is looking at the problem from the wrong perspective.&lt;/p&gt;

&lt;p&gt;My intuition is that the more capable AI becomes, the more important abstractions will become. Not less.&lt;/p&gt;

&lt;p&gt;To explain why, I think we need to revisit something fundamental about software engineering: complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Complicated is not the same as complex
&lt;/h2&gt;

&lt;p&gt;We often use the words complicated and complex interchangeably, but I think there's a useful distinction between them.&lt;/p&gt;

&lt;p&gt;Something complicated has many parts, but those parts can generally be understood independently. Once you've figured out how the individual pieces work, understanding the whole becomes relatively straightforward.&lt;/p&gt;

&lt;p&gt;Something complex is different. It involves many elements and, more importantly, many relationships between those elements. Understanding each individual component doesn't necessarily help you understand the system as a whole. The interactions themselves create additional complexity.&lt;/p&gt;

&lt;p&gt;Consider a complicated algorithm. It might have hundreds of steps, but each step is well-defined. Once you understand the algorithm, you can reason about its behaviour.&lt;/p&gt;

&lt;p&gt;Now consider a distributed system. Its individual components might be relatively simple, but their interactions introduce timing issues, race conditions, partial failures, consistency problems and emergent behaviour.&lt;/p&gt;

&lt;p&gt;The difficulty isn't necessarily understanding any particular component. It's understanding how everything interacts.&lt;/p&gt;

&lt;p&gt;As the number of elements and relationships grows, the complexity grows too.&lt;/p&gt;

&lt;p&gt;This distinction matters because I believe AI is already superhuman in certain dimensions of complexity management.&lt;/p&gt;

&lt;p&gt;An LLM can reason across more files, functions, dependencies and relationships than a human developer can comfortably keep in working memory. It can inspect an entire module, trace dependencies, compare implementations and identify relationships that would take a human considerably longer to discover.&lt;/p&gt;

&lt;p&gt;But that doesn't mean AI has unlimited capacity.&lt;/p&gt;

&lt;p&gt;Models have finite context windows, finite computational resources and limitations in how effectively they can maintain and reason about large amounts of interconnected information.&lt;/p&gt;

&lt;p&gt;AI raises the ceiling of complexity we can work with. It doesn't eliminate the ceiling.&lt;/p&gt;

&lt;p&gt;And this brings me to the actual purpose of abstractions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The purpose of abstractions is managing complexity
&lt;/h2&gt;

&lt;p&gt;In his famous essay &lt;em&gt;No Silver Bullet&lt;/em&gt;, Fred Brooks makes a distinction between essential and accidental complexity.&lt;/p&gt;

&lt;p&gt;Essential complexity is inherent to the problem we're trying to solve. If you're building a banking system, handling transactions, ensuring consistency, enforcing security and implementing business rules are inherently part of the problem.&lt;/p&gt;

&lt;p&gt;Accidental complexity, on the other hand, is introduced by the tools, technologies and implementation details we use to solve it.&lt;/p&gt;

&lt;p&gt;For example, when building a web application, the essential complexity might involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business rules.&lt;/li&gt;
&lt;li&gt;User interactions.&lt;/li&gt;
&lt;li&gt;Data relationships.&lt;/li&gt;
&lt;li&gt;Security requirements.&lt;/li&gt;
&lt;li&gt;Consistency guarantees.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The accidental complexity might involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP request parsing.&lt;/li&gt;
&lt;li&gt;Connection pooling.&lt;/li&gt;
&lt;li&gt;Serialization.&lt;/li&gt;
&lt;li&gt;Memory allocation.&lt;/li&gt;
&lt;li&gt;Database driver configuration.&lt;/li&gt;
&lt;li&gt;Low-level concurrency management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, the distinction isn't always black and white. Some implementation details become essential depending on the requirements. But the distinction is useful.&lt;/p&gt;

&lt;p&gt;Over the years, we've introduced layers of abstraction to hide away accidental complexity so we can focus on the problem at hand.&lt;/p&gt;

&lt;p&gt;We don't use React because developers are incapable of manipulating the DOM. We use it because manually managing DOM updates is usually an unnecessary distraction from the problem we're trying to solve.&lt;/p&gt;

&lt;p&gt;We don't use SQL because developers cannot implement database storage engines. We use it because we want to express what data we need rather than describe every operation required to retrieve it.&lt;/p&gt;

&lt;p&gt;We don't use high-level programming languages because developers cannot write assembly. We use them because assembly is usually the wrong level of abstraction for expressing our intentions.&lt;/p&gt;

&lt;p&gt;Abstractions aren't just about making programming easier. They're about reducing the amount of irrelevant complexity that a problem solver needs to deal with at once.&lt;/p&gt;

&lt;p&gt;And that problem solver doesn't necessarily have to be human.&lt;/p&gt;

&lt;h2&gt;
  
  
  But AI doesn't think like humans, does it?
&lt;/h2&gt;

&lt;p&gt;This is probably the most interesting part of the discussion.&lt;/p&gt;

&lt;p&gt;One argument against my position is that programming languages and frameworks were designed primarily for humans. If AI is doing the programming, why should it care about human-friendly abstractions?&lt;/p&gt;

&lt;p&gt;Why not let it work directly with machine code?&lt;/p&gt;

&lt;p&gt;I think this argument overlooks something important about how LLMs came to be.&lt;/p&gt;

&lt;p&gt;LLMs aren't traditional computers that happen to understand human language. Their capabilities emerged from training on enormous amounts of human-generated content: books, documentation, source code, academic papers, discussions and countless examples of humans explaining and solving problems.&lt;/p&gt;

&lt;p&gt;They've learned from the way humans represent knowledge, decompose problems, communicate ideas and reason about relationships.&lt;/p&gt;

&lt;p&gt;This doesn't mean LLMs reason exactly like humans. Their architecture is fundamentally different, and they can develop capabilities that go beyond human reasoning.&lt;/p&gt;

&lt;p&gt;But their learned understanding of the world, including software, is deeply influenced by how humans have organised and communicated knowledge.&lt;/p&gt;

&lt;p&gt;Think about the concepts we use every day in software development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions.&lt;/li&gt;
&lt;li&gt;Types.&lt;/li&gt;
&lt;li&gt;Modules.&lt;/li&gt;
&lt;li&gt;Interfaces.&lt;/li&gt;
&lt;li&gt;Ownership.&lt;/li&gt;
&lt;li&gt;Components.&lt;/li&gt;
&lt;li&gt;Dependencies.&lt;/li&gt;
&lt;li&gt;Composition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't merely convenient syntactic constructs. They provide conceptual building blocks that help us express problems and solutions.&lt;/p&gt;

&lt;p&gt;LLMs have been exposed to enormous amounts of knowledge expressed through these abstractions. They've learned not only their syntax but also the conventions, idioms and relationships surrounding them.&lt;/p&gt;

&lt;p&gt;Why would we assume that moving closer to machine code would make them better at solving problems?&lt;/p&gt;

&lt;p&gt;Being able to generate assembly doesn't mean assembly is a better representation for reasoning about a business domain, a distributed system or an application architecture.&lt;/p&gt;

&lt;p&gt;In fact, higher-level abstractions might be particularly valuable to LLMs precisely because they provide semantic structure that aligns with much of the knowledge they've learned.&lt;/p&gt;

&lt;p&gt;I wouldn't claim that AI cannot develop representations that are fundamentally different from human ones. It certainly might.&lt;/p&gt;

&lt;p&gt;But we shouldn't confuse an AI's ability to operate at a lower level with a reason to force it to do so.&lt;/p&gt;

&lt;p&gt;The lowest-level representation isn't necessarily the best representation for solving a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI can handle more complexity. Why make it handle unnecessary complexity?
&lt;/h2&gt;

&lt;p&gt;Let's consider a practical example.&lt;/p&gt;

&lt;p&gt;Imagine asking an AI agent to build a web application.&lt;/p&gt;

&lt;p&gt;If we ask it to implement a feature using an existing framework, it gets to benefit from routing, request lifecycle management, state management, component composition and established conventions.&lt;/p&gt;

&lt;p&gt;The agent can focus on implementing the feature.&lt;/p&gt;

&lt;p&gt;Now imagine asking it to implement everything from scratch, including HTTP handling, memory management, concurrency primitives and serialization.&lt;/p&gt;

&lt;p&gt;Yes, it can do that.&lt;/p&gt;

&lt;p&gt;But now it has to reason about significantly more things, maintain more relationships and make more decisions.&lt;/p&gt;

&lt;p&gt;Some of those decisions have absolutely nothing to do with the problem we're trying to solve.&lt;/p&gt;

&lt;p&gt;Even if AI can handle all those details, why would we want it to?&lt;/p&gt;

&lt;p&gt;This is the key point: the value of an abstraction isn't that the underlying complexity is impossible to manage. It's that managing it is unnecessary for the task at hand.&lt;/p&gt;

&lt;p&gt;There's another benefit worth mentioning: abstractions constrain the solution space.&lt;/p&gt;

&lt;p&gt;A framework provides conventions. A type system rules out certain classes of invalid programs. A programming language provides a vocabulary and a set of compositional rules.&lt;/p&gt;

&lt;p&gt;These constraints aren't necessarily limitations. They're often what make it possible to build reliable systems without having to reconsider every possible implementation decision.&lt;/p&gt;

&lt;p&gt;Good abstractions allow us to focus on the decisions that actually matter.&lt;/p&gt;

&lt;p&gt;And this applies to AI agents just as much as it applies to humans.&lt;/p&gt;

&lt;h2&gt;
  
  
  But what about Rust?
&lt;/h2&gt;

&lt;p&gt;One of the interesting developments I've noticed is that languages like Rust are becoming more attractive as AI takes on more of the implementation work.&lt;/p&gt;

&lt;p&gt;Rust has traditionally had a steeper learning curve than languages with garbage collection. Its ownership model, borrowing rules and lifetime system introduce cognitive overhead that can be challenging for developers.&lt;/p&gt;

&lt;p&gt;But what happens when an AI agent can deal with much of that overhead?&lt;/p&gt;

&lt;p&gt;Suddenly, using Rust becomes more appealing. The AI can handle the compiler feedback, work through ownership constraints and iterate until the code compiles.&lt;/p&gt;

&lt;p&gt;This is a great example of AI changing the economics of software development.&lt;/p&gt;

&lt;p&gt;But I think there's a distinction worth making here.&lt;/p&gt;

&lt;p&gt;Rust isn't a low-level language simply because it doesn't have a garbage collector. It provides powerful abstractions over memory management, ownership and concurrency.&lt;/p&gt;

&lt;p&gt;The ownership system is itself an abstraction. It allows us to express constraints about memory safety in a way that the compiler can enforce.&lt;/p&gt;

&lt;p&gt;AI makes it cheaper to work with Rust, but that doesn't mean we should abandon the abstractions Rust provides.&lt;/p&gt;

&lt;p&gt;If anything, it demonstrates how AI can make more sophisticated abstractions accessible.&lt;/p&gt;

&lt;p&gt;The same principle could apply to other languages, type systems and programming paradigms.&lt;/p&gt;

&lt;p&gt;We might increasingly choose technologies that were previously avoided because their cognitive overhead was too high.&lt;/p&gt;

&lt;p&gt;But that's very different from saying we no longer need abstractions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Abstractions aren't free, though
&lt;/h2&gt;

&lt;p&gt;I don't think this means we should introduce more abstraction layers indiscriminately.&lt;/p&gt;

&lt;p&gt;Abstractions have costs. They can introduce indirection, hide important implementation details, make debugging harder and impose constraints that don't fit the problem.&lt;/p&gt;

&lt;p&gt;A bad abstraction can increase complexity rather than reduce it.&lt;/p&gt;

&lt;p&gt;Anthropic makes a similar observation in its article &lt;em&gt;Building Effective Agents&lt;/em&gt;. It recommends starting with simple, composable patterns rather than introducing complex agent frameworks unnecessarily. Frameworks can introduce additional layers that obscure what's happening underneath and make debugging harder.&lt;/p&gt;

&lt;p&gt;That's a good example of the principle I'm arguing for.&lt;/p&gt;

&lt;p&gt;The goal isn't to maximise the number of abstractions. It's to find the right abstractions at the right level.&lt;/p&gt;

&lt;p&gt;Sometimes that means removing a layer. Sometimes it means introducing one.&lt;/p&gt;

&lt;p&gt;The important question is whether an abstraction reduces the complexity of the problem we're trying to solve.&lt;/p&gt;

&lt;p&gt;And as AI becomes more capable, the answer to that question might change. Some abstractions that were useful primarily for humans might become unnecessary, while entirely new abstractions might emerge to help AI agents work with increasingly sophisticated systems.&lt;/p&gt;

&lt;p&gt;The abstractions will evolve. The need for them won't disappear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code reviews might change, but software still needs to be understood
&lt;/h2&gt;

&lt;p&gt;I think the same reasoning applies to another discussion we're having right now: the future of code reviews.&lt;/p&gt;

&lt;p&gt;If AI can write code, generate tests, run them, inspect the implementation and iterate until everything passes, why do we need code reviews?&lt;/p&gt;

&lt;p&gt;I suspect the answer is that we'll spend less time reviewing implementation details and more time reviewing the actual design and behaviour of the system.&lt;/p&gt;

&lt;p&gt;We'll ask different questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are we solving the right problem?&lt;/li&gt;
&lt;li&gt;Are the architectural decisions sound?&lt;/li&gt;
&lt;li&gt;Are the system boundaries appropriate?&lt;/li&gt;
&lt;li&gt;Are the important invariants preserved?&lt;/li&gt;
&lt;li&gt;Are we introducing unnecessary complexity?&lt;/li&gt;
&lt;li&gt;Does the implementation satisfy the intended behaviour?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Passing tests isn't necessarily the same as understanding whether a system is correct.&lt;/p&gt;

&lt;p&gt;An AI can generate code that satisfies the tests while violating an architectural invariant or introducing a problem that the tests don't cover.&lt;/p&gt;

&lt;p&gt;The responsibility of reviewing software might move up a level, just as the responsibility of writing it is moving up a level.&lt;/p&gt;

&lt;p&gt;We might spend less time inspecting individual lines and more time evaluating the conceptual structures those lines implement.&lt;/p&gt;

&lt;p&gt;Again, abstraction doesn't disappear. The level at which we operate changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future isn't less abstraction. It's more powerful abstraction.
&lt;/h2&gt;

&lt;p&gt;I think there's a misconception that as AI becomes smarter, we'll need fewer abstractions.&lt;/p&gt;

&lt;p&gt;I suspect the opposite is true.&lt;/p&gt;

&lt;p&gt;As our ability to solve problems increases, we'll start tackling problems that were previously beyond our reach.&lt;/p&gt;

&lt;p&gt;And those problems will introduce new layers of complexity.&lt;/p&gt;

&lt;p&gt;Imagine a future where AI agents can autonomously build entire distributed systems, coordinate with other agents, manage infrastructure and maintain applications over years.&lt;/p&gt;

&lt;p&gt;Will they need fewer abstractions because they're smarter?&lt;/p&gt;

&lt;p&gt;Or will they need better abstractions because the systems they're building are increasingly sophisticated?&lt;/p&gt;

&lt;p&gt;I suspect the latter.&lt;/p&gt;

&lt;p&gt;We might move from managing individual servers to managing distributed systems, from managing individual applications to managing ecosystems of autonomous agents.&lt;/p&gt;

&lt;p&gt;The complexity doesn't disappear. It moves.&lt;/p&gt;

&lt;p&gt;We'll continue inventing higher-level abstractions to manage it. Some might be designed specifically for AI agents rather than humans. Some might be more declarative, more composable or more mathematically rigorous.&lt;/p&gt;

&lt;p&gt;We might even end up with entirely new programming paradigms that we haven't imagined yet.&lt;/p&gt;

&lt;p&gt;But the fundamental need for abstraction isn't going away.&lt;/p&gt;

&lt;p&gt;We didn't invent high-level programming languages because writing assembly was too difficult. We invented them because we wanted to express our intentions without having to deal with every implementation detail.&lt;/p&gt;

&lt;p&gt;That motivation doesn't disappear just because the programmer happens to be an AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intelligence doesn't eliminate the need for abstraction. Abstraction is one of the mechanisms that makes intelligence scalable.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>discuss</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Your Documentation Is Out of Date. Let an AI Agent Keep It in Sync</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Wed, 04 Nov 2026 22:06:10 +0000</pubDate>
      <link>https://dev.to/remojansen/your-documentation-is-out-of-date-let-an-ai-agent-keep-it-in-sync-5fba</link>
      <guid>https://dev.to/remojansen/your-documentation-is-out-of-date-let-an-ai-agent-keep-it-in-sync-5fba</guid>
      <description>&lt;p&gt;We've all been there.&lt;/p&gt;

&lt;p&gt;You join a new team, open the repository, and find a beautifully written &lt;code&gt;README.md&lt;/code&gt;, an architecture document, and a collection of Markdown files explaining how everything works.&lt;/p&gt;

&lt;p&gt;You start reading.&lt;/p&gt;

&lt;p&gt;A few minutes later, you notice that the architecture diagram doesn't match the actual implementation. The documentation references tools that no longer exist. Some configuration options have changed, and a few important components are missing entirely.&lt;/p&gt;

&lt;p&gt;The documentation is there, but can you trust it?&lt;/p&gt;

&lt;p&gt;This is one of the most common problems in software engineering: &lt;strong&gt;documentation slowly drifts away from the source code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And it's not because developers don't understand the importance of documentation. It's because maintaining it is a continuous task, and it's very easy to forget.&lt;/p&gt;

&lt;p&gt;But what if we could delegate this responsibility to an AI agent?&lt;/p&gt;

&lt;h2&gt;
  
  
  The source code is the source of truth
&lt;/h2&gt;

&lt;p&gt;Let's start with one simple principle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The source code is always the source of truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documentation is a human-friendly representation of how the system works. It helps developers understand the architecture, discover available tools, learn conventions, and onboard new team members.&lt;/p&gt;

&lt;p&gt;But documentation should never override the implementation.&lt;/p&gt;

&lt;p&gt;Whenever the implementation changes, the relevant documentation should be reviewed and updated if necessary.&lt;/p&gt;

&lt;p&gt;The problem is knowing when documentation needs attention.&lt;/p&gt;

&lt;p&gt;Here's a simple trick.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add a Git commit reference to your Markdown files
&lt;/h2&gt;

&lt;p&gt;What if every technical Markdown document included metadata describing the last commit against which it was reviewed?&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;commit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;9b6f166af5227ff4093af7347084d8f7d2a81e4f'&lt;/span&gt;
&lt;span class="na"&gt;updated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2026-11-04'&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;Two simple pieces of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;commit&lt;/code&gt;: The Git commit against which the document was last reviewed and synchronized.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;updated&lt;/code&gt;: The date the document was last reviewed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This small addition gives us something very useful: a reference point.&lt;/p&gt;

&lt;p&gt;When someone opens a Markdown document, they can immediately see when it was last reviewed and how far behind the codebase that review was.&lt;/p&gt;

&lt;p&gt;More importantly, an AI agent can use that commit as a starting point for reviewing the document.&lt;/p&gt;

&lt;p&gt;For example, if the document references commit &lt;code&gt;9b6f166&lt;/code&gt;, the agent can inspect everything that has changed since that commit and determine whether any of those changes affect the documentation.&lt;/p&gt;

&lt;p&gt;We now have a simple, explicit relationship between our documentation and the source code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing the &lt;code&gt;sync-docs&lt;/code&gt; skill
&lt;/h2&gt;

&lt;p&gt;Imagine having an agent skill called &lt;code&gt;sync-docs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Its responsibility is straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make sure technical documentation accurately reflects the current state of the codebase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The workflow could look something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find Markdown documents containing the synchronization metadata.&lt;/li&gt;
&lt;li&gt;Read the commit recorded in each document's frontmatter.&lt;/li&gt;
&lt;li&gt;Compare that commit with the current HEAD.&lt;/li&gt;
&lt;li&gt;Review the changes introduced since that commit.&lt;/li&gt;
&lt;li&gt;Identify which changes affect the document.&lt;/li&gt;
&lt;li&gt;Inspect the current implementation to verify its accuracy.&lt;/li&gt;
&lt;li&gt;Update the documentation to reflect the current implementation.&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;commit&lt;/code&gt; and &lt;code&gt;updated&lt;/code&gt; metadata.&lt;/li&gt;
&lt;li&gt;Open a pull request containing the documentation changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, the agent might discover that since the last documentation review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new service was introduced.&lt;/li&gt;
&lt;li&gt;An existing API changed.&lt;/li&gt;
&lt;li&gt;A configuration option was removed.&lt;/li&gt;
&lt;li&gt;A new development tool was added.&lt;/li&gt;
&lt;li&gt;The architecture was refactored.&lt;/li&gt;
&lt;li&gt;A dependency was replaced.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can then inspect the relevant source files and update the documentation accordingly.&lt;/p&gt;

&lt;p&gt;Notice something important: the agent isn't simply summarizing the latest Git changes and appending them to a document.&lt;/p&gt;

&lt;p&gt;It needs to understand the existing documentation, inspect the current implementation, and determine whether the document still accurately describes the system.&lt;/p&gt;

&lt;p&gt;The goal is accuracy, not just activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What would the implementation look like?
&lt;/h2&gt;

&lt;p&gt;Let's make this concrete.&lt;/p&gt;

&lt;p&gt;We need two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An agent skill that knows how to synchronize documentation.&lt;/li&gt;
&lt;li&gt;A GitHub Agentic Workflow that periodically invokes that skill and opens a pull request.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important distinction is that the skill owns the logic. The workflow simply orchestrates it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Implementing the &lt;code&gt;sync-docs&lt;/code&gt; skill
&lt;/h3&gt;

&lt;p&gt;Let's create the following structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.agents/
  skills/
    sync-docs/
      SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;SKILL.md&lt;/code&gt; file contains the actual instructions the agent must follow.&lt;/p&gt;

&lt;p&gt;Here is an example implementation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;.agents/skills/sync-docs/SKILL.md&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sync-docs&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Review and synchronize Markdown&lt;/span&gt;
  &lt;span class="s"&gt;documentation against the current source code.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Sync Documentation&lt;/span&gt;

Your responsibility is to ensure that technical
documentation accurately reflects the current
implementation in the repository.

The source code is always the source of truth.

&lt;span class="gu"&gt;## 1. Discover documentation&lt;/span&gt;

Find all Markdown files containing the following
frontmatter fields:
&lt;span class="p"&gt;
-&lt;/span&gt; commit
&lt;span class="p"&gt;-&lt;/span&gt; updated

These fields identify the last source-code commit
against which the document was reviewed.

Ignore files without this metadata.

&lt;span class="gu"&gt;## 2. Review each document&lt;/span&gt;

For every document:
&lt;span class="p"&gt;
1.&lt;/span&gt; Read its recorded commit.
&lt;span class="p"&gt;2.&lt;/span&gt; Verify that the commit exists in the repository.
&lt;span class="p"&gt;3.&lt;/span&gt; Identify the source files relevant to the
   document.
&lt;span class="p"&gt;4.&lt;/span&gt; Inspect changes introduced since the recorded
   commit:

   git diff &lt;span class="nt"&gt;&amp;lt;recorded-commit&amp;gt;&lt;/span&gt;..HEAD
&lt;span class="p"&gt;
5.&lt;/span&gt; Inspect the current implementation of the
   affected components.
&lt;span class="p"&gt;6.&lt;/span&gt; Determine whether the documentation still
   accurately describes the implementation.

Do not assume that every code change requires
a documentation change.

&lt;span class="gu"&gt;## 3. Update documentation&lt;/span&gt;

When documentation is outdated:
&lt;span class="p"&gt;
-&lt;/span&gt; Update incorrect descriptions.
&lt;span class="p"&gt;-&lt;/span&gt; Add missing architectural information.
&lt;span class="p"&gt;-&lt;/span&gt; Remove references to obsolete tools,
  components or configuration.
&lt;span class="p"&gt;-&lt;/span&gt; Update examples that no longer match
  the implementation.
&lt;span class="p"&gt;-&lt;/span&gt; Preserve useful explanations and the
  existing writing style.

Never invent implementation details.

Never modify application source code.

&lt;span class="gu"&gt;## 4. Update synchronization metadata&lt;/span&gt;

After successfully reviewing a document,
update its frontmatter:

commit: &lt;span class="nt"&gt;&amp;lt;current&lt;/span&gt; &lt;span class="na"&gt;HEAD&lt;/span&gt; &lt;span class="na"&gt;commit&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
updated: &lt;span class="nt"&gt;&amp;lt;current&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

The commit must represent the exact source-code
revision that was reviewed.

If the review cannot be completed confidently,
do not advance the metadata.

If the document is already accurate, its content
does not need to change, but its review metadata
should still be updated.

&lt;span class="gu"&gt;## 5. Report findings&lt;/span&gt;

At the end, provide a summary containing:
&lt;span class="p"&gt;
-&lt;/span&gt; Documents reviewed.
&lt;span class="p"&gt;-&lt;/span&gt; Documents updated.
&lt;span class="p"&gt;-&lt;/span&gt; Documents already accurate.
&lt;span class="p"&gt;-&lt;/span&gt; Documents that could not be reviewed.
&lt;span class="p"&gt;-&lt;/span&gt; Architectural inconsistencies discovered.
&lt;span class="p"&gt;-&lt;/span&gt; Potential bugs or unexpected implementation
  changes worth investigating.

Do not fix application code or architectural
issues as part of this task.

Leave those findings for human review.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire skill.&lt;/p&gt;

&lt;p&gt;The interesting thing is that it doesn't know anything about GitHub, pull requests, or scheduling. It only knows how to perform one job: keep documentation synchronized with the source code.&lt;/p&gt;

&lt;p&gt;This makes it reusable. You can invoke it manually from your coding agent whenever you want:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use the sync-docs skill to review and synchronize the technical documentation in this repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or you can use it as part of a larger agent workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Automating the skill with GitHub Agentic Workflows
&lt;/h3&gt;

&lt;p&gt;Now let's automate it.&lt;/p&gt;

&lt;p&gt;Create the following file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.github/
  workflows/
    sync-docs.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow is intentionally simple. It doesn't contain any documentation synchronization instructions because those already live in our skill.&lt;/p&gt;

&lt;p&gt;Its only responsibility is to invoke the skill and create a PR with the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;.github/workflows/sync-docs.md&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Sync Documentation&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;weekly on monday&lt;/span&gt;

&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;
  &lt;span class="na"&gt;pull-requests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;

&lt;span class="na"&gt;safe-outputs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;create-pull-request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;title-prefix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[docs-sync]&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
    &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;documentation&lt;/span&gt;
    &lt;span class="na"&gt;allowed-files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docs/**&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;README.md&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;# Synchronize Technical Documentation&lt;/span&gt;

&lt;span class="s"&gt;Your task is to maintain the technical&lt;/span&gt;
&lt;span class="s"&gt;documentation in this repository.&lt;/span&gt;

&lt;span class="c1"&gt;## Instructions&lt;/span&gt;

&lt;span class="na"&gt;1. Read and follow the skill located at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

   &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="s"&gt;.agents/skills/sync-docs/SKILL.md`&lt;/span&gt;

&lt;span class="s"&gt;2. Invoke the `sync-docs` skill and let it&lt;/span&gt;
   &lt;span class="s"&gt;perform the complete documentation review.&lt;/span&gt;

&lt;span class="s"&gt;3. Inspect the resulting changes and findings.&lt;/span&gt;

&lt;span class="s"&gt;4. If documentation or synchronization&lt;/span&gt;
   &lt;span class="s"&gt;metadata has changed, create a pull&lt;/span&gt;
   &lt;span class="s"&gt;request containing&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;

   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;The updated Markdown documents.&lt;/span&gt;
   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;A summary of documents reviewed.&lt;/span&gt;
   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;A summary of documentation changes.&lt;/span&gt;
   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Any architectural inconsistencies or&lt;/span&gt;
     &lt;span class="s"&gt;potential issues discovered.&lt;/span&gt;

&lt;span class="s"&gt;5. If there are no changes to propose,&lt;/span&gt;
   &lt;span class="s"&gt;do not create an empty pull request.&lt;/span&gt;

&lt;span class="c1"&gt;## Important&lt;/span&gt;

&lt;span class="s"&gt;Never merge pull requests automatically.&lt;/span&gt;

&lt;span class="s"&gt;All documentation changes must be reviewed&lt;/span&gt;
&lt;span class="s"&gt;and approved by a human.&lt;/span&gt;

&lt;span class="s"&gt;Do not modify application source code.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow uses a scheduled trigger, invokes our reusable skill, and creates a PR when there are changes to propose.&lt;/p&gt;

&lt;p&gt;Notice how little logic the workflow contains. That's intentional.&lt;/p&gt;

&lt;p&gt;We don't want to maintain two implementations of the same process.&lt;/p&gt;

&lt;p&gt;The skill defines &lt;em&gt;how&lt;/em&gt; documentation is synchronized. The workflow defines &lt;em&gt;when&lt;/em&gt; it happens and &lt;em&gt;what to do with the results&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;GitHub Agentic Workflows can compile these Markdown workflow definitions into standard GitHub Actions workflow files using the &lt;code&gt;gh aw&lt;/code&gt; CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh extension &lt;span class="nb"&gt;install &lt;/span&gt;github/gh-aw
gh aw compile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compilation generates a &lt;code&gt;.lock.yml&lt;/code&gt; workflow alongside the Markdown source. You commit both files to the repository.&lt;/p&gt;

&lt;p&gt;You can choose a different schedule, such as every two weeks or once a month, depending on how quickly your codebase evolves.&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href="https://github.github.com/gh-aw/" rel="noopener noreferrer"&gt;GitHub Agentic Workflows documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The example assumes that the selected agent runtime supports the skill format and that the skill is available in its execution environment. The workflow must be configured to load and invoke it; simply referencing a file path does not automatically execute a skill.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. What does a synchronization PR give us?
&lt;/h3&gt;

&lt;p&gt;Imagine a PR created by the workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Title: &lt;code&gt;[docs-sync] Synchronize architecture and tooling documentation&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It might contain:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Document&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs/architecture.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Updated service dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs/development-tools.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removed obsolete CLI reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs/deployment.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reviewed, no content changes needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs/api.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Updated endpoint descriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The PR description could also highlight findings that deserve attention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The architecture document describes a synchronous interaction, but the implementation now uses asynchronous messaging.&lt;/li&gt;
&lt;li&gt;A configuration option exists in the code but is missing from the documentation.&lt;/li&gt;
&lt;li&gt;An internal tool is still documented but appears to have been removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where things get particularly interesting.&lt;/p&gt;

&lt;p&gt;The PR is no longer just a documentation update. It becomes another opportunity for the engineering team to inspect the system and discover things that might otherwise go unnoticed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We are using AI to maintain documentation, but we're also using documentation reviews to improve the quality of the software itself.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use a commit instead of a timestamp?
&lt;/h2&gt;

&lt;p&gt;A timestamp tells us when something happened.&lt;/p&gt;

&lt;p&gt;A Git commit tells us exactly which version of the source code was reviewed.&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;Suppose a document was last reviewed two weeks ago. During those two weeks, the codebase might have changed significantly, or perhaps nothing relevant to that document changed at all.&lt;/p&gt;

&lt;p&gt;With a commit reference, the agent can inspect the actual changes rather than guessing based on the document's age.&lt;/p&gt;

&lt;p&gt;It also makes the process incremental.&lt;/p&gt;

&lt;p&gt;The agent doesn't need to rediscover the entire history of the project every time it runs. It can start from the last reviewed commit and investigate what happened since then.&lt;/p&gt;

&lt;p&gt;Of course, the commit reference is not a guarantee that the document is accurate. It's a record of the last successful review. The quality of that review still matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not merge the PR automatically?
&lt;/h2&gt;

&lt;p&gt;There is one important detail here: &lt;strong&gt;the workflow should open pull requests, never merge documentation updates automatically.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because reviewing these PRs is valuable in itself.&lt;/p&gt;

&lt;p&gt;Imagine the agent updating an architecture document because it discovered that a service behaves differently from what the documentation describes.&lt;/p&gt;

&lt;p&gt;During the review, a developer might realize that the implementation has drifted from the intended architecture.&lt;/p&gt;

&lt;p&gt;Or perhaps the agent discovers an undocumented configuration change, an unexpected dependency, or a tool that is no longer being used.&lt;/p&gt;

&lt;p&gt;These are useful signals.&lt;/p&gt;

&lt;p&gt;A documentation synchronization PR can become an opportunity to spot architectural inconsistencies, accidental complexity, missing documentation, and even potential bugs.&lt;/p&gt;

&lt;p&gt;The agent does the investigation and proposes the updates. Developers review the changes, challenge the findings, and decide whether to merge them.&lt;/p&gt;

&lt;p&gt;This keeps humans in the loop while making the maintenance process much less painful.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few things worth considering
&lt;/h2&gt;

&lt;p&gt;There are some important details to get right when implementing this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Only update the commit after a successful review&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The commit in the frontmatter should represent the latest code version actually reviewed, not simply the latest HEAD.&lt;/p&gt;

&lt;p&gt;If the agent fails to inspect a document or cannot confidently determine whether it is accurate, it shouldn't silently advance the commit reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Don't change documentation just for the sake of changing it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the source code changes but the documentation remains accurate, there is no reason to modify the document's content.&lt;/p&gt;

&lt;p&gt;The agent can still update its review metadata to record that the document has been checked against the newer commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Never merge automatically&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Always open a pull request and let a developer review it.&lt;/p&gt;

&lt;p&gt;Apart from preventing incorrect documentation updates from reaching the main branch, these reviews can expose problems that might otherwise go unnoticed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Make the review scope explicit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every Markdown file needs to describe the entire codebase.&lt;/p&gt;

&lt;p&gt;An architecture document might depend on changes across multiple services, while a tool reference might only depend on a particular directory.&lt;/p&gt;

&lt;p&gt;The skill should use the document's content to determine which parts of the repository are relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Handle invalid or unavailable commits gracefully&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A document might reference a commit that is no longer available locally, or a commit that doesn't exist in the current repository history.&lt;/p&gt;

&lt;p&gt;The agent shouldn't guess where to start. It should flag the document for human investigation rather than silently replacing its reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;I particularly like this idea because it changes how we think about documentation.&lt;/p&gt;

&lt;p&gt;Today, documentation is often treated as something we write when we create a feature, launch a project, or onboard a new developer.&lt;/p&gt;

&lt;p&gt;Then it slowly gets forgotten.&lt;/p&gt;

&lt;p&gt;But documentation should be treated more like code: something that needs continuous maintenance.&lt;/p&gt;

&lt;p&gt;We already have automated tests, linters, formatters, dependency updates, and security scans running against our repositories.&lt;/p&gt;

&lt;p&gt;Why shouldn't documentation have its own maintenance workflow?&lt;/p&gt;

&lt;p&gt;With a small piece of metadata, a reusable AI skill, and a scheduled GitHub workflow, we can make documentation maintenance a continuous process rather than an occasional cleanup exercise.&lt;/p&gt;

&lt;p&gt;And there's an additional benefit: every synchronization PR gives the team another opportunity to inspect the system, question architectural decisions, and spot inconsistencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your source code evolves. Your documentation should evolve with it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And perhaps the best part is that the next developer joining your team won't have to wonder whether the architecture document they're reading is describing the system you actually have today.&lt;/p&gt;

&lt;p&gt;They can see when it was last reviewed, what version of the code it was checked against, and trust that the team has a process for keeping it up to date.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>documentation</category>
      <category>devex</category>
    </item>
    <item>
      <title>The EU Should Make AI a Public Good If It Wants to Survive the Next Industrial Revolution</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Wed, 28 Oct 2026 15:39:47 +0000</pubDate>
      <link>https://dev.to/remojansen/the-eu-should-make-ai-a-public-good-if-it-wants-to-survive-the-next-industrial-revolution-1a2a</link>
      <guid>https://dev.to/remojansen/the-eu-should-make-ai-a-public-good-if-it-wants-to-survive-the-next-industrial-revolution-1a2a</guid>
      <description>&lt;p&gt;Today, I want to write about something a little outside my usual topics.&lt;/p&gt;

&lt;p&gt;As a European citizen, I worry about the possibility that the United States will achieve artificial general intelligence (AGI) before Europe does. I don't see the US as an enemy. Quite the opposite. But I live in the EU, and I don't want Europe to end up on the losing side of what could be the most important technological transformation in human history.&lt;/p&gt;

&lt;p&gt;I think we're at risk of making a fundamental mistake in how we approach AI.&lt;/p&gt;

&lt;p&gt;We're treating it as another technology sector in which European companies need to compete with American companies.&lt;/p&gt;

&lt;p&gt;But what if AI becomes much more than that?&lt;/p&gt;

&lt;p&gt;What if it becomes a foundational technology that transforms almost every industry, reshapes labour markets, changes how governments operate, and determines which countries accumulate wealth and influence over the coming decades?&lt;/p&gt;

&lt;p&gt;We have seen something similar before.&lt;/p&gt;

&lt;p&gt;The Industrial Revolution transformed the world. Countries that industrialised early gained enormous economic and strategic advantages. Others struggled to catch up, and some remained economically dependent on industrial powers for generations.&lt;/p&gt;

&lt;p&gt;The historical picture is more complicated than a simple division between winners and losers. Some countries industrialised later and eventually converged with the leaders. But the broader lesson remains: when a technology transforms the foundations of economic activity, falling behind can have consequences that last for generations.&lt;/p&gt;

&lt;p&gt;I believe AI could be another such turning point.&lt;/p&gt;

&lt;p&gt;And if that is true, Europe should consider approaching AI very differently.&lt;/p&gt;

&lt;p&gt;Instead of trying to compete with American AI companies solely by creating more startups, what if the EU treated foundational AI as a public good?&lt;/p&gt;

&lt;h2&gt;
  
  
  AI isn't just another technology sector
&lt;/h2&gt;

&lt;p&gt;We are approaching a future in which AI could become as essential to economic activity as electricity, computing and internet access.&lt;/p&gt;

&lt;p&gt;Today, we pay for software subscriptions because they provide useful tools. Tomorrow, AI could be embedded in almost everything we do.&lt;/p&gt;

&lt;p&gt;Developers will use AI to write and maintain software. Doctors will use it to analyse medical information. Lawyers will use it to research cases. Engineers will use it to design products. Scientists will use it to accelerate research. Businesses will use AI agents to automate entire workflows.&lt;/p&gt;

&lt;p&gt;Governments will use AI to deliver public services. Manufacturers will use it to optimise production. Financial institutions will use it to analyse markets and manage risk.&lt;/p&gt;

&lt;p&gt;And if AI systems eventually become capable of performing a large share of economically valuable cognitive work, the transformation could extend far beyond what we currently imagine.&lt;/p&gt;

&lt;p&gt;Entire business models could change. Some professions could shrink or disappear, while new ones emerge. The cost of starting and operating a company could fall dramatically. The balance between human labour, capital and intellectual property could shift.&lt;/p&gt;

&lt;p&gt;Even people who never subscribe to an AI service directly will probably depend on AI-powered systems every day.&lt;/p&gt;

&lt;p&gt;This is why I don't think AI should be viewed merely as a race to build the best chatbot or the most powerful model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI could become one of the foundations on which future economies operate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And when a foundational technology becomes essential to economic participation, control over that technology becomes a question of national and economic power.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lesson of the Industrial Revolution
&lt;/h2&gt;

&lt;p&gt;Imagine a country during the Industrial Revolution that decides it doesn't need to develop its own industrial capabilities because it can simply import machinery from countries that have already industrialised.&lt;/p&gt;

&lt;p&gt;Initially, that might seem perfectly reasonable.&lt;/p&gt;

&lt;p&gt;Why spend enormous amounts of money developing factories, engineering expertise and industrial infrastructure when other countries already provide these things?&lt;/p&gt;

&lt;p&gt;The country could import machinery, benefit from cheaper manufactured goods and enjoy some of the productivity improvements without bearing the full cost of industrialisation.&lt;/p&gt;

&lt;p&gt;But over time, a problem could emerge.&lt;/p&gt;

&lt;p&gt;The industrial leaders would accumulate capital, expertise, manufacturing capacity and the ability to improve their technologies. Their industries would become more productive, allowing them to reinvest in further improvements.&lt;/p&gt;

&lt;p&gt;Meanwhile, the importing country might become dependent on external suppliers for essential capabilities.&lt;/p&gt;

&lt;p&gt;It could still benefit from industrialisation. But it would have less control over the technologies that increasingly determined its economic future.&lt;/p&gt;

&lt;p&gt;AI could create a similar dynamic, potentially on an even broader scale.&lt;/p&gt;

&lt;p&gt;The countries and companies that develop the most capable AI systems could gain advantages across many different industries simultaneously.&lt;/p&gt;

&lt;p&gt;They could use AI to develop better software, accelerate scientific discoveries, design new products, improve manufacturing and create more capable AI systems.&lt;/p&gt;

&lt;p&gt;If these advantages compound over time, the gap between leaders and followers could widen.&lt;/p&gt;

&lt;p&gt;Countries that depend entirely on foreign AI might find themselves in a difficult position: their economies could become more productive while a disproportionate share of the profits, intellectual property and strategic advantages flows elsewhere.&lt;/p&gt;

&lt;p&gt;Of course, importing technology is not inherently bad. Countries can learn, adapt and catch up. Access to foreign technology can also accelerate development.&lt;/p&gt;

&lt;p&gt;But there is a difference between using technology developed elsewhere and having no meaningful alternative when access to that technology becomes strategically important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The danger isn't that Europe might lose the AI race. It's that Europe might lose the ability to shape the world that emerges from it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens if AI becomes a utility?
&lt;/h2&gt;

&lt;p&gt;Look at cloud computing.&lt;/p&gt;

&lt;p&gt;A significant part of the infrastructure European businesses depend on is provided by American companies. This isn't necessarily a bad thing. These companies have invested enormous amounts of money in building reliable infrastructure, and European businesses benefit from it.&lt;/p&gt;

&lt;p&gt;But it creates a dependency.&lt;/p&gt;

&lt;p&gt;Now imagine that AI becomes much more important than traditional cloud computing.&lt;/p&gt;

&lt;p&gt;Instead of renting servers to host an application, businesses will rent access to intelligence capable of performing a substantial part of the work their employees do today.&lt;/p&gt;

&lt;p&gt;The economic value of that intelligence could be enormous.&lt;/p&gt;

&lt;p&gt;If a company uses AI to generate millions of euros in additional value, a portion of that value will flow to whoever provides the AI. Scale this across millions of businesses and hundreds of millions of people, and the implications become difficult to ignore.&lt;/p&gt;

&lt;p&gt;The problem isn't that American companies make money. They should be able to compete and profit from their innovations.&lt;/p&gt;

&lt;p&gt;The problem is what happens if Europe becomes structurally dependent on foreign AI providers and never develops competitive alternatives of its own.&lt;/p&gt;

&lt;p&gt;Imagine that European businesses become increasingly reliant on AI systems whose most important capabilities, infrastructure and strategic decisions are controlled elsewhere.&lt;/p&gt;

&lt;p&gt;Imagine that European startups must compete against companies with privileged access to the most powerful AI systems, while paying for the same underlying capabilities through external providers.&lt;/p&gt;

&lt;p&gt;Imagine that European governments depend on AI infrastructure they cannot fully control.&lt;/p&gt;

&lt;p&gt;Europe might still be wealthy. It might still have excellent universities, talented engineers and successful companies.&lt;/p&gt;

&lt;p&gt;But it could gradually lose the ability to determine the terms on which its economy accesses one of its most important productive resources.&lt;/p&gt;

&lt;p&gt;This is not simply a question of technology spending. It is a question of economic independence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if AI becomes a public good?
&lt;/h2&gt;

&lt;p&gt;Imagine the EU decided that foundational AI infrastructure was strategically important enough to justify substantial public investment.&lt;/p&gt;

&lt;p&gt;The idea would be relatively simple.&lt;/p&gt;

&lt;p&gt;The EU would invest in computing infrastructure, fund the development of competitive open-weight AI models, and provide European citizens and businesses with access to those models at little or no cost.&lt;/p&gt;

&lt;p&gt;Think of it as public infrastructure for the AI economy.&lt;/p&gt;

&lt;p&gt;We already accept that governments should invest in roads, electricity grids, scientific research and education because their benefits extend far beyond the organisations that directly use them.&lt;/p&gt;

&lt;p&gt;These investments help entire economies function. They create opportunities for businesses, reduce barriers to participation and provide a foundation on which private enterprise can flourish.&lt;/p&gt;

&lt;p&gt;Why shouldn't foundational AI be considered in a similar way?&lt;/p&gt;

&lt;p&gt;Of course, AI is not exactly like a road or an electricity grid. Models require continuous research, expensive computing resources, maintenance, energy and specialised talent. Providing unlimited AI inference to everyone for free would be extremely expensive.&lt;/p&gt;

&lt;p&gt;But the underlying principle still applies.&lt;/p&gt;

&lt;p&gt;If access to AI becomes essential for economic participation, there is a strong argument for ensuring that everyone has access to a capable baseline of AI without having to pay a private subscription.&lt;/p&gt;

&lt;p&gt;More importantly, Europe should have the infrastructure, expertise and technical capabilities required to maintain that access independently.&lt;/p&gt;

&lt;p&gt;The goal would not be to make every AI product free. It would be to ensure that access to foundational intelligence does not depend entirely on a small number of private providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How would this work in practice?
&lt;/h2&gt;

&lt;p&gt;I imagine four main components.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. EU-owned AI infrastructure
&lt;/h3&gt;

&lt;p&gt;The EU and its member states would invest in strategic computing infrastructure.&lt;/p&gt;

&lt;p&gt;This would include data centres, accelerators, networking and the energy infrastructure required to operate them.&lt;/p&gt;

&lt;p&gt;The goal would not be to replace every private cloud provider. It would be to guarantee that Europe has sufficient computing capacity to train, run and improve its own AI models.&lt;/p&gt;

&lt;p&gt;The infrastructure could be operated by specialised organisations under public ownership and transparent governance, with private companies continuing to build and operate infrastructure alongside it.&lt;/p&gt;

&lt;p&gt;Europe would not need to become completely self-sufficient in every component. That would be unrealistic. But it should avoid a situation in which it has no viable alternatives for capabilities essential to its economy.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Open-weight European AI models
&lt;/h3&gt;

&lt;p&gt;The EU would fund research teams to develop competitive foundational models.&lt;/p&gt;

&lt;p&gt;These models would be released with open weights and licences that allow researchers, startups and businesses to use and adapt them.&lt;/p&gt;

&lt;p&gt;This would not mean that every model must be developed by a government department. Public funding could support universities, research institutes, startups and private companies.&lt;/p&gt;

&lt;p&gt;The important thing is that Europe would build and retain meaningful control over its AI capabilities.&lt;/p&gt;

&lt;p&gt;Open weights would also allow businesses to run models on their own infrastructure when appropriate, reducing dependence on a single provider.&lt;/p&gt;

&lt;p&gt;The objective would not necessarily be to produce the most powerful model in the world. It would be to ensure that Europe has access to models capable enough to support its economy, and that it can continue improving those models over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Free AI access for European citizens, with reasonable limits
&lt;/h3&gt;

&lt;p&gt;Every EU citizen should have access to a public AI service at no cost.&lt;/p&gt;

&lt;p&gt;The service could help with programming, education, research, writing, translation, administration and many other everyday tasks. The objective would be to ensure that access to capable AI does not become a privilege reserved for people who can afford multiple subscriptions.&lt;/p&gt;

&lt;p&gt;However, free access should not mean unlimited access.&lt;/p&gt;

&lt;p&gt;Operating AI systems requires computing power, energy and ongoing maintenance. Without reasonable limits, a small number of users could consume a disproportionate share of public resources, while automated abuse could generate enormous costs for taxpayers.&lt;/p&gt;

&lt;p&gt;The public service should therefore include fair usage limits, rate limits and safeguards against automated exploitation. Users who need additional capacity could pay for it or access specialised programmes where there is a clear public interest.&lt;/p&gt;

&lt;p&gt;The limits should be generous enough to support meaningful everyday use, learning, research and personal projects, rather than making the free service so restricted that it becomes useless.&lt;/p&gt;

&lt;p&gt;There should also be clear rules governing privacy, data retention and acceptable use. Citizens should know how their information is handled, and the service should not become a mechanism for unnecessary government surveillance.&lt;/p&gt;

&lt;p&gt;The principle is straightforward: everyone should have access to a capable baseline of AI, but no individual should be able to exploit a publicly funded service at everyone else's expense.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Free AI for European businesses and EU employees, with accountability
&lt;/h3&gt;

&lt;p&gt;I would go a step further for European businesses and people working in EU institutions.&lt;/p&gt;

&lt;p&gt;Eligible European businesses should be able to access public AI models and computing resources without paying licensing fees or standard usage charges, subject to reasonable usage policies and capacity limits where necessary.&lt;/p&gt;

&lt;p&gt;EU institutions and their employees should also have access to these capabilities for legitimate official work.&lt;/p&gt;

&lt;p&gt;The reasoning is simple: if AI becomes a foundational technology, public investment should help European businesses adopt it, improve their productivity and develop new products and services. Publicly funded AI should also help European institutions operate more efficiently and deliver better services.&lt;/p&gt;

&lt;p&gt;Imagine a small European startup that can build and test an AI-powered product without having to spend thousands of euros on proprietary APIs. Or a small manufacturer that can use AI to improve its operations without facing an additional technology cost it cannot afford.&lt;/p&gt;

&lt;p&gt;This could lower barriers to innovation and make it easier for European businesses to compete internationally.&lt;/p&gt;

&lt;p&gt;But there is an important condition: &lt;strong&gt;free access must not become an unchecked subsidy for private interests.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The infrastructure would be funded by taxpayers, so its use should be accountable to the public.&lt;/p&gt;

&lt;p&gt;Businesses receiving free access should agree to transparent eligibility requirements and proportionate audit procedures. These could include usage records, checks on organisational eligibility and investigations into suspicious or excessive consumption.&lt;/p&gt;

&lt;p&gt;The aim would be to identify and prevent abuse, such as reselling publicly funded compute without authorisation, creating unlimited accounts to bypass usage limits, using the service primarily for unrelated commercial exploitation, or diverting resources to ineligible entities.&lt;/p&gt;

&lt;p&gt;Audits should be risk-based rather than unnecessarily burdensome. A small business using AI for ordinary development work should not face the same scrutiny as an organisation consuming enormous amounts of computing capacity or exhibiting suspicious usage patterns.&lt;/p&gt;

&lt;p&gt;Sensitive business information must remain protected, and audits should focus on eligibility, resource consumption and compliance with the programme's rules rather than giving the government unrestricted access to private company data.&lt;/p&gt;

&lt;p&gt;EU employees should similarly receive free access for legitimate work purposes, subject to institutional security policies, appropriate data handling and auditable usage controls. Access should not become a way to process classified, confidential or personal information through systems that have not been approved for that purpose.&lt;/p&gt;

&lt;p&gt;There should also be clear consequences for deliberate abuse, including suspension of access, recovery of improperly obtained benefits where legally appropriate, and stronger penalties for serious or repeated violations.&lt;/p&gt;

&lt;p&gt;The objective is not to burden businesses with bureaucracy. It is to ensure that public resources are used for their intended purpose.&lt;/p&gt;

&lt;p&gt;If the EU invests in AI infrastructure to improve European productivity and technological independence, it should make that infrastructure genuinely useful to businesses while ensuring that the benefits are not captured through misuse by a small number of organisations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free access should be generous, practical and accountable.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Would the economic benefits outweigh the investment?
&lt;/h2&gt;

&lt;p&gt;This is the most important question.&lt;/p&gt;

&lt;p&gt;Building competitive AI infrastructure would require enormous investment. Training advanced models, purchasing accelerators, operating data centres and attracting researchers are all expensive.&lt;/p&gt;

&lt;p&gt;But I think we need to look at the return differently.&lt;/p&gt;

&lt;p&gt;The goal would not be to generate a financial return from selling AI subscriptions. The goal would be to increase the productivity and resilience of the entire European economy.&lt;/p&gt;

&lt;p&gt;Suppose public AI infrastructure enables millions of workers to become more productive.&lt;/p&gt;

&lt;p&gt;Businesses develop products faster. Researchers make discoveries sooner. Startups experiment more cheaply. Public services become more efficient. Companies that previously could not afford advanced AI gain access to it.&lt;/p&gt;

&lt;p&gt;The benefits would appear across thousands of industries rather than only in the accounts of a single AI provider.&lt;/p&gt;

&lt;p&gt;Even relatively modest productivity improvements, spread across an economy as large as the EU, could generate substantial value over time.&lt;/p&gt;

&lt;p&gt;But we should be honest about the uncertainty.&lt;/p&gt;

&lt;p&gt;AI adoption requires training, organisational changes and investment in complementary technologies. Public infrastructure could be poorly managed or become technologically outdated. The benefits might also be concentrated in certain sectors rather than distributed evenly.&lt;/p&gt;

&lt;p&gt;A serious programme would therefore need measurable objectives, independent evaluation and the ability to redirect funding when projects fail.&lt;/p&gt;

&lt;p&gt;The economic case deserves to be evaluated in terms of the productivity gains, strategic resilience and new opportunities it enables, not merely the revenue it generates.&lt;/p&gt;

&lt;p&gt;A public AI system could be financially unprofitable while still being an excellent investment for European society.&lt;/p&gt;

&lt;p&gt;That is already true of many forms of public infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wouldn't this destroy private AI companies?
&lt;/h2&gt;

&lt;p&gt;I don't think so, and I wouldn't want it to.&lt;/p&gt;

&lt;p&gt;The objective should not be to eliminate private AI providers or prevent American companies from operating in Europe.&lt;/p&gt;

&lt;p&gt;Private companies would still have plenty of opportunities to compete by developing better models, offering specialised services, providing more computing capacity and building applications for particular industries.&lt;/p&gt;

&lt;p&gt;A public model would establish a competitive baseline.&lt;/p&gt;

&lt;p&gt;If a private company can offer a model that is substantially better, more reliable or more convenient, customers should be free to pay for it.&lt;/p&gt;

&lt;p&gt;But businesses and citizens should not be forced into dependence on a small number of providers simply because no affordable alternative exists.&lt;/p&gt;

&lt;p&gt;There is also a benefit for the private sector itself. Open infrastructure can make it easier for startups to build businesses without first raising enormous amounts of money to access foundational technology.&lt;/p&gt;

&lt;p&gt;The result could be more competition, more experimentation and a larger ecosystem of European companies.&lt;/p&gt;

&lt;p&gt;Public infrastructure and private innovation do not have to be opposing forces. Properly designed, they can reinforce one another.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about the risk of government inefficiency?
&lt;/h2&gt;

&lt;p&gt;This is a legitimate concern.&lt;/p&gt;

&lt;p&gt;Governments are not necessarily good at developing technology products. Public projects can suffer from bureaucracy, political interference, slow procurement and poor execution.&lt;/p&gt;

&lt;p&gt;An EU-funded model could also fall behind the frontier, particularly if it were managed as a political project rather than a serious research effort.&lt;/p&gt;

&lt;p&gt;For this reason, I would not ask the European Commission to build a giant government AI company and expect it to outperform the private sector.&lt;/p&gt;

&lt;p&gt;I would establish a public infrastructure programme with independent technical governance, transparent performance targets and multiple competing research teams.&lt;/p&gt;

&lt;p&gt;Funding should depend on results. Models should be benchmarked against the best available alternatives, and projects that fail to deliver should not receive unlimited funding.&lt;/p&gt;

&lt;p&gt;The EU should also work with existing European AI companies and research institutions rather than duplicating everything they do.&lt;/p&gt;

&lt;p&gt;And because this infrastructure would be so important, its governance should include strong protections against political interference, independent audits and transparent rules governing access to public resources.&lt;/p&gt;

&lt;p&gt;The public sector's role would be to fund strategically important capabilities, guarantee broad access and establish a competitive foundation.&lt;/p&gt;

&lt;p&gt;It would not need to control every aspect of the ecosystem.&lt;/p&gt;

&lt;p&gt;The answer to the risk of government inefficiency should be better institutions and accountability, not the assumption that foundational infrastructure can safely be left entirely to private interests.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if the US achieves AGI first?
&lt;/h2&gt;

&lt;p&gt;This is where my concern becomes more serious.&lt;/p&gt;

&lt;p&gt;I don't know whether AGI will be achieved soon, what it will look like or which country will develop it first.&lt;/p&gt;

&lt;p&gt;But imagine that one country develops AI systems capable of performing a very large share of economically valuable cognitive work.&lt;/p&gt;

&lt;p&gt;Imagine that those systems can accelerate scientific research, develop software, design products, operate businesses and help create even more capable AI systems.&lt;/p&gt;

&lt;p&gt;Their economic value could be extraordinary.&lt;/p&gt;

&lt;p&gt;If those systems remain under the control of a small number of foreign companies, the consequences could extend far beyond software subscriptions.&lt;/p&gt;

&lt;p&gt;The companies that own the systems could capture a substantial share of the economic value they generate. They could attract more capital and talent, reinvest their profits and accelerate their technological lead.&lt;/p&gt;

&lt;p&gt;Countries that depend on these systems would still benefit from using them. But they might capture a smaller share of the profits and strategic advantages.&lt;/p&gt;

&lt;p&gt;This could create a self-reinforcing cycle.&lt;/p&gt;

&lt;p&gt;The leading companies would use AI to become more productive, invest more in research, attract more resources and improve their systems. Their customers would benefit, but the owners of the underlying technology could accumulate an increasingly powerful position.&lt;/p&gt;

&lt;p&gt;For Europe, this could create a difficult situation.&lt;/p&gt;

&lt;p&gt;Its businesses might become more productive while becoming increasingly dependent on foreign technology. Its governments might rely on infrastructure they do not control. Its startups might struggle to compete with companies that have direct access to the world's most capable AI systems.&lt;/p&gt;

&lt;p&gt;And if AI eventually reduces the importance of human labour in producing economic value, ownership of the technology could become even more important than it is today.&lt;/p&gt;

&lt;p&gt;If a growing share of economic output comes from AI systems, then who owns those systems, who receives their returns and who has access to their capabilities will become fundamental questions.&lt;/p&gt;

&lt;p&gt;These are not merely technology questions. They concern the distribution of wealth, the future of work, the economic power of states and the ability of societies to determine their own direction.&lt;/p&gt;

&lt;p&gt;I don't want Europe to find itself in that position without having invested in alternatives.&lt;/p&gt;

&lt;p&gt;I am not arguing that the US will necessarily monopolise AGI, that Europe is destined to lose or that technological dependence inevitably leads to economic decline.&lt;/p&gt;

&lt;p&gt;I am arguing that the potential consequences are sufficiently significant that Europe should not treat this as an ordinary commercial competition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Europe doesn't necessarily need to win the AI race
&lt;/h2&gt;

&lt;p&gt;I think this is where the discussion often goes wrong.&lt;/p&gt;

&lt;p&gt;Europe does not necessarily need to build the single most powerful AI model in the world.&lt;/p&gt;

&lt;p&gt;It needs to ensure that it can participate meaningfully in the AI economy, capture a reasonable share of the value generated and retain the ability to make independent technological decisions.&lt;/p&gt;

&lt;p&gt;There is a difference between being the absolute leader and being technologically dependent.&lt;/p&gt;

&lt;p&gt;Europe could benefit enormously from AI even if the most capable models were developed elsewhere. But it should have the infrastructure, expertise and alternatives required to avoid becoming entirely dependent on external providers.&lt;/p&gt;

&lt;p&gt;Public AI infrastructure could be one part of that strategy.&lt;/p&gt;

&lt;p&gt;It would also need to be accompanied by better access to growth capital, a more integrated European market, reliable energy supplies and policies that make it easier to create and scale technology companies.&lt;/p&gt;

&lt;p&gt;Public AI alone would not solve Europe's competitiveness problems.&lt;/p&gt;

&lt;p&gt;But it could provide a foundation on which many other solutions become more viable.&lt;/p&gt;

&lt;p&gt;The question is not whether Europe can prevent every other country from advancing faster. It cannot.&lt;/p&gt;

&lt;p&gt;The question is whether Europe will have enough technological capability, economic strength and institutional independence to shape its own future in a world transformed by AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The next Industrial Revolution is happening now
&lt;/h2&gt;

&lt;p&gt;I don't see the USA as an enemy, and I don't think technological competition needs to become a zero-sum geopolitical conflict.&lt;/p&gt;

&lt;p&gt;American AI companies have created enormous value, and European citizens and businesses should be able to benefit from their innovations.&lt;/p&gt;

&lt;p&gt;But I also think Europe needs to be realistic about its long-term interests.&lt;/p&gt;

&lt;p&gt;The Industrial Revolution changed far more than manufacturing. It transformed where people lived, how they worked, how economies grew, how wealth was accumulated and how power was distributed between nations.&lt;/p&gt;

&lt;p&gt;AI could have a similarly broad impact.&lt;/p&gt;

&lt;p&gt;It could reshape almost every industry, change the economics of intellectual work, accelerate scientific progress and alter the relationship between labour and capital.&lt;/p&gt;

&lt;p&gt;If that happens, the countries that control and develop foundational AI capabilities will have opportunities that extend far beyond the technology sector itself.&lt;/p&gt;

&lt;p&gt;Those that rely entirely on others may still prosper, but they will have less control over the forces shaping their prosperity.&lt;/p&gt;

&lt;p&gt;History does not guarantee that technological leaders will remain ahead forever, or that those who fall behind can never catch up. But catching up can become much harder when technological advantages compound across an entire economy.&lt;/p&gt;

&lt;p&gt;This is why I think Europe needs to take the issue seriously now, rather than waiting until AI has become indispensable and the most important capabilities are already concentrated elsewhere.&lt;/p&gt;

&lt;p&gt;Instead of treating AI exclusively as a commercial product, the EU should consider treating foundational AI capabilities as a form of public infrastructure.&lt;/p&gt;

&lt;p&gt;It could invest in computing capacity, support open-weight models, provide citizens with affordable access to capable AI and give European businesses the foundation they need to compete.&lt;/p&gt;

&lt;p&gt;The investment would be substantial. The outcome would be uncertain. And the programme would need to be managed carefully to avoid wasting public money.&lt;/p&gt;

&lt;p&gt;But the potential consequences of failing to invest could be much greater than the loss of a few technology companies or a single market opportunity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If AI becomes one of the foundations of economic and societal life, Europe cannot afford to be merely a customer of the countries that control it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It needs to be a participant in building that future.&lt;/p&gt;

&lt;p&gt;The EU does not have to win every AI race. It does not have to own every model or prevent private companies from succeeding.&lt;/p&gt;

&lt;p&gt;But it should ensure that its citizens, businesses and institutions have access to foundational AI capabilities, and that Europe retains meaningful control over the infrastructure on which its future prosperity may depend.&lt;/p&gt;

&lt;p&gt;We made electricity broadly available because modern economies could not function without it. We built public infrastructure because its value extended beyond the private interests of any one company.&lt;/p&gt;

&lt;p&gt;If AI becomes as fundamental to our economies as electricity, perhaps we should start thinking about it in the same way.&lt;/p&gt;

&lt;p&gt;The next Industrial Revolution is not simply a technology race. It is a contest over the foundations of future prosperity and power.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Europe wants to remain in control of its economic future, it should consider making AI a public good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What do you think? Should the EU invest in public AI infrastructure and provide affordable access to European citizens and businesses, or would this be an expensive government project better left to the private sector?&lt;/p&gt;

&lt;p&gt;I'd be interested to hear what other European developers think about this.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Your Platform Engineering Investment Is Not Paying Off. Here's Why.</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Wed, 21 Oct 2026 12:50:56 +0000</pubDate>
      <link>https://dev.to/remojansen/your-platform-engineering-investment-is-not-paying-off-heres-why-b6l</link>
      <guid>https://dev.to/remojansen/your-platform-engineering-investment-is-not-paying-off-heres-why-b6l</guid>
      <description>&lt;p&gt;&lt;em&gt;Building an internal platform is only half the job. The real return comes when developers trust it, want to use it, and help make it better.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Platform engineering has become a strategic investment for many engineering organisations. Teams are building internal developer platforms, standardising CI/CD pipelines, creating self-service infrastructure, and providing tools designed to make developers more productive.&lt;/p&gt;

&lt;p&gt;The promise is compelling: reduce cognitive load, eliminate duplicated effort, improve consistency, strengthen security, and let product teams focus on delivering business value rather than managing infrastructure.&lt;/p&gt;

&lt;p&gt;Organisations invest significant time, money, and engineering talent to make this happen.&lt;/p&gt;

&lt;p&gt;And yet, something often gets lost along the way.&lt;/p&gt;

&lt;p&gt;The platform gets delivered. The migration happens. The documentation is published. The new workflow becomes the official standard.&lt;/p&gt;

&lt;p&gt;But developers are still frustrated.&lt;/p&gt;

&lt;p&gt;They encounter confusing errors, unreliable workflows, missing capabilities, and problems that require them to ask another team for help. They learn which workarounds are necessary, which parts of the platform they can trust, and which problems are easier to avoid altogether.&lt;/p&gt;

&lt;p&gt;Eventually, they comply with the new way of working. But compliance is not enthusiasm, and adoption is not necessarily success.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The organisation has invested in a platform, but it has not fully realised the return on that investment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why does this happen, and what can we do about it?&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The last 10% matters more than you think
&lt;/h2&gt;

&lt;p&gt;Platform teams are often very good at delivering the big things.&lt;/p&gt;

&lt;p&gt;They build the infrastructure, establish common patterns, automate the happy path, integrate the necessary services, and provide a consistent interface for developers.&lt;/p&gt;

&lt;p&gt;These are difficult and valuable achievements.&lt;/p&gt;

&lt;p&gt;The problem is what happens next.&lt;/p&gt;

&lt;p&gt;The platform works, but not always reliably. The common workflow is straightforward, but the unusual case is painful. An error occurs, but the message doesn't explain what went wrong or how to fix it. A pipeline fails, and determining whether the problem is in the application, the configuration, or the platform itself becomes an investigation.&lt;/p&gt;

&lt;p&gt;None of these problems necessarily looks significant in isolation.&lt;/p&gt;

&lt;p&gt;Collectively, however, they define the developer experience.&lt;/p&gt;

&lt;p&gt;Consider two internal platforms that provide exactly the same capabilities.&lt;/p&gt;

&lt;p&gt;With the first, a developer can complete a task in minutes when everything works, but diagnosing a failure takes hours and requires support from the platform team.&lt;/p&gt;

&lt;p&gt;With the second, the task takes the same amount of time when everything works, but failures are clearly explained, diagnostics are available, and the developer can resolve most problems independently.&lt;/p&gt;

&lt;p&gt;Technically, both platforms may be equivalent. In practice, they deliver very different levels of value.&lt;/p&gt;

&lt;p&gt;This is the last-mile problem in platform engineering.&lt;/p&gt;

&lt;p&gt;We invest heavily in capabilities, but sometimes underestimate the effort required to make those capabilities dependable, intuitive, and pleasant to use.&lt;/p&gt;

&lt;p&gt;The last 10% might be the least glamorous part of the roadmap. It is also where much of the difference between a usable platform and a genuinely valuable one is created.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Developers don't fall in love with roadmaps. They fall in love with experiences.
&lt;/h2&gt;

&lt;p&gt;Imagine that your organisation announces a major investment in a new developer platform.&lt;/p&gt;

&lt;p&gt;There is an ambitious roadmap, a dedicated team, a polished launch presentation, and a clear strategic rationale.&lt;/p&gt;

&lt;p&gt;Developers are encouraged to migrate their applications and embrace the new tooling.&lt;/p&gt;

&lt;p&gt;Initially, there is curiosity. People try the platform, explore its capabilities, and perhaps even get excited about what it could eventually become.&lt;/p&gt;

&lt;p&gt;Then they start using it for real work.&lt;/p&gt;

&lt;p&gt;They encounter friction. Some workflows are slower than expected. Documentation doesn't cover their situation. Failures are difficult to diagnose. Requests for improvements disappear into a queue.&lt;/p&gt;

&lt;p&gt;Over time, the initial excitement fades.&lt;/p&gt;

&lt;p&gt;Developers stop exploring new capabilities. They stop reporting minor bugs because the process feels disproportionate to the problem. They stop suggesting improvements because they don't expect much to happen. They learn the minimum required to get their jobs done.&lt;/p&gt;

&lt;p&gt;The platform becomes something they have to use rather than something they want to use.&lt;/p&gt;

&lt;p&gt;This distinction matters.&lt;/p&gt;

&lt;p&gt;When developers genuinely value a tool, they become its advocates. They recommend it to colleagues, experiment with new features, report problems, suggest improvements, and invest time in helping it evolve.&lt;/p&gt;

&lt;p&gt;When they merely tolerate it, they do the minimum required.&lt;/p&gt;

&lt;p&gt;This creates a vicious cycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The platform has usability problems.&lt;/li&gt;
&lt;li&gt;Developers become reluctant to engage with it.&lt;/li&gt;
&lt;li&gt;The platform team receives less useful feedback and fewer contributions.&lt;/li&gt;
&lt;li&gt;Problems remain unresolved or are discovered later than they otherwise would be.&lt;/li&gt;
&lt;li&gt;The developer experience deteriorates, reinforcing the original reluctance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result is a platform that may look successful on a dashboard but is not reaching its full potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You cannot mandate genuine enthusiasm. You have to earn it through the experience you deliver.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The hidden cost of making developers dependent on the platform team
&lt;/h2&gt;

&lt;p&gt;A successful internal platform should increase developer autonomy.&lt;/p&gt;

&lt;p&gt;Developers should be able to provision resources, deploy applications, understand failures, and solve common problems without having to coordinate with a central team for every step.&lt;/p&gt;

&lt;p&gt;Yet many platform implementations inadvertently create new dependencies.&lt;/p&gt;

&lt;p&gt;A pipeline fails, so the developer raises a ticket.&lt;/p&gt;

&lt;p&gt;A configuration behaves unexpectedly, so they contact the platform team.&lt;/p&gt;

&lt;p&gt;A feature is missing, so they submit a request and wait.&lt;/p&gt;

&lt;p&gt;A bug needs fixing, but the relevant code is owned by another team, and the only available path is through its backlog.&lt;/p&gt;

&lt;p&gt;The platform may have automated many manual tasks, but the organisation has replaced one kind of dependency with another.&lt;/p&gt;

&lt;p&gt;This is particularly costly because platform teams are usually responsible for shared capabilities used by many product teams. Every unnecessary support interaction consumes capacity that could otherwise go towards improving the platform itself.&lt;/p&gt;

&lt;p&gt;There is also an opportunity cost for the consuming teams. Developers spend time waiting, investigating workarounds, explaining issues, and coordinating with people who understand the platform better than they do.&lt;/p&gt;

&lt;p&gt;A platform that requires constant human intervention to operate has not fully delivered on the promise of self-service.&lt;/p&gt;

&lt;p&gt;Of course, some interactions with platform specialists are necessary. Complex infrastructure, security-sensitive changes, and architectural decisions often need expert involvement.&lt;/p&gt;

&lt;p&gt;The goal isn't to eliminate the platform team. It is to eliminate unnecessary dependencies on it.&lt;/p&gt;

&lt;p&gt;A good platform enables developers to solve the problems they are equipped to solve, while making it easy to involve specialists when their expertise is genuinely needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why can't developers help fix the platform?
&lt;/h2&gt;

&lt;p&gt;Here is a scenario that should be familiar to many engineering teams.&lt;/p&gt;

&lt;p&gt;A developer encounters a failure in a shared deployment pipeline. They suspect a defect in the pipeline itself rather than their application.&lt;/p&gt;

&lt;p&gt;What happens next?&lt;/p&gt;

&lt;p&gt;Perhaps they open a ticket in an IT service management system. They provide logs, explain what they were doing, and wait for someone to investigate.&lt;/p&gt;

&lt;p&gt;Another team encounters the same problem. They open another ticket, provide similar information, and wait too.&lt;/p&gt;

&lt;p&gt;Eventually, a platform engineer investigates both reports, identifies the underlying defect, implements a fix, and releases an update.&lt;/p&gt;

&lt;p&gt;This process might work. But it is unnecessarily expensive if the developers encountering the problem could have collaborated directly with the maintainers.&lt;/p&gt;

&lt;p&gt;Now imagine a different workflow.&lt;/p&gt;

&lt;p&gt;The developer navigates to the shared platform's source repository and asks an AI coding agent to investigate the failure.&lt;/p&gt;

&lt;p&gt;The agent examines the available logs and configuration, helps determine whether the problem originates in the application or the shared platform, and searches existing issues for similar reports.&lt;/p&gt;

&lt;p&gt;If an issue already exists, the developer can contribute evidence and confirm that another application is affected. If no issue exists, the agent helps prepare a new one with useful diagnostic information.&lt;/p&gt;

&lt;p&gt;Other teams can discover the issue, contribute their findings, and discuss a solution in the same place.&lt;/p&gt;

&lt;p&gt;Perhaps a developer from one of those teams identifies the root cause and proposes a fix through a pull request. The maintainers review it, run the necessary tests, and merge it.&lt;/p&gt;

&lt;p&gt;The platform team still owns the platform. It still defines standards, reviews changes, and ensures quality.&lt;/p&gt;

&lt;p&gt;But it is no longer the only team capable of improving it.&lt;/p&gt;

&lt;p&gt;This is the difference between a support model and a contribution model.&lt;/p&gt;

&lt;p&gt;In the first, consumers report problems and maintainers solve them.&lt;/p&gt;

&lt;p&gt;In the second, consumers and maintainers collaborate to solve problems together.&lt;/p&gt;

&lt;p&gt;That is the foundation of an inner-source culture: applying the collaborative practices of open source within an organisation.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. AI makes this opportunity much more compelling
&lt;/h2&gt;

&lt;p&gt;The contribution model described above isn't entirely new. Inner-source practices have existed for years.&lt;/p&gt;

&lt;p&gt;What is changing is the cost of participation.&lt;/p&gt;

&lt;p&gt;Historically, contributing to a shared platform could require considerable effort. A developer needed to understand the repository structure, locate the relevant code, reproduce the problem, navigate contribution guidelines, and prepare a useful issue or pull request.&lt;/p&gt;

&lt;p&gt;For someone unfamiliar with the platform, that initial investment could be substantial.&lt;/p&gt;

&lt;p&gt;AI coding agents can reduce this barrier.&lt;/p&gt;

&lt;p&gt;With appropriate repository access and tooling, an agent can help developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand unfamiliar platform code.&lt;/li&gt;
&lt;li&gt;Diagnose failures using logs, configuration, and source code.&lt;/li&gt;
&lt;li&gt;Determine whether an issue is likely to originate in the application or the shared platform.&lt;/li&gt;
&lt;li&gt;Search existing issues and documentation for known problems.&lt;/li&gt;
&lt;li&gt;Produce well-structured bug reports with relevant diagnostic evidence.&lt;/li&gt;
&lt;li&gt;Identify potential fixes and prepare draft pull requests.&lt;/li&gt;
&lt;li&gt;Write or improve tests to reproduce a defect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These capabilities do not guarantee correct diagnoses or safe changes. Agents can be wrong, miss context, or propose fixes that introduce regressions. Human review, automated testing, access controls, and appropriate security boundaries remain essential.&lt;/p&gt;

&lt;p&gt;But the potential is significant.&lt;/p&gt;

&lt;p&gt;AI can make it easier for developers to cross the boundary between consuming a platform and contributing to it.&lt;/p&gt;

&lt;p&gt;This is particularly valuable in large organisations, where the people most affected by a platform defect may be the people best positioned to reproduce it, understand its impact, or even propose a solution.&lt;/p&gt;

&lt;p&gt;The platform team doesn't have to become less important. Its expertise can be applied where it creates the most value: architectural direction, quality, reliability, difficult problems, and enabling contributions from across the organisation.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Your tooling choices can either enable or undermine collaboration
&lt;/h2&gt;

&lt;p&gt;Culture matters, but culture doesn't exist independently of the systems people use every day.&lt;/p&gt;

&lt;p&gt;If source code lives in one place, issues in another, documentation in a third, and technical discussions in a fourth, contributing to a shared platform becomes harder than it needs to be.&lt;/p&gt;

&lt;p&gt;Developers must navigate multiple systems, maintain separate accounts or permissions, repeat information, and reconstruct context that is scattered across different locations.&lt;/p&gt;

&lt;p&gt;The organisation may have all the necessary tools. Yet the overall workflow remains fragmented.&lt;/p&gt;

&lt;p&gt;This is especially problematic when the official process encourages developers to report a problem through a ticketing system but offers no straightforward path to investigate the underlying code or contribute a fix.&lt;/p&gt;

&lt;p&gt;A more collaborative approach is to bring technical work closer to the source.&lt;/p&gt;

&lt;p&gt;For code-centric platform engineering, a repository-centred workflow can provide a natural home for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code and version history.&lt;/li&gt;
&lt;li&gt;Issues, defects, and feature requests.&lt;/li&gt;
&lt;li&gt;Technical documentation and contribution guidelines.&lt;/li&gt;
&lt;li&gt;Pull requests, reviews, and design discussions.&lt;/li&gt;
&lt;li&gt;Automated testing and continuous integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub is one example of a platform that supports this model. Other tools can support similar workflows. The specific product is less important than the principle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The place where a problem is reported should also be a place where people can understand it, discuss it, and contribute to fixing it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There may still be good reasons to retain separate systems for service management, compliance, incident response, or formal approvals. The objective isn't to force every organisational process into a single tool. It's to avoid unnecessary separation between the technical artefacts and the people trying to improve them.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Platform engineering needs a product mindset
&lt;/h2&gt;

&lt;p&gt;Perhaps the most fundamental change is to how we define success.&lt;/p&gt;

&lt;p&gt;Many engineering initiatives are organised around delivery milestones: build the platform, release the capability, migrate the applications, and declare the project complete.&lt;/p&gt;

&lt;p&gt;But internal platforms aren't finished when they launch.&lt;/p&gt;

&lt;p&gt;They are products with users, competitors, changing requirements, operational costs, and an ongoing need for improvement.&lt;/p&gt;

&lt;p&gt;Those users happen to be colleagues rather than external customers. That doesn't make their experience any less important.&lt;/p&gt;

&lt;p&gt;A product mindset means treating feedback as a continuous input, prioritising usability alongside capability, and measuring whether the platform actually helps developers achieve their goals.&lt;/p&gt;

&lt;p&gt;It also means accepting that the best feature to build next may not be a new capability.&lt;/p&gt;

&lt;p&gt;It might be fixing an unreliable workflow. Improving an error message. Making a common failure self-diagnosable. Reducing the time required to onboard an application. Removing a manual approval that no longer adds value.&lt;/p&gt;

&lt;p&gt;These improvements may be less impressive in a launch announcement, but they can have a substantial impact across hundreds or thousands of developers.&lt;/p&gt;

&lt;p&gt;The platform team should therefore ask not just, "What should we build next?" but also, "What prevents developers from getting value from what we have already built?"&lt;/p&gt;

&lt;p&gt;That second question is often where the most immediate returns can be found.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Measure value, not just activity
&lt;/h2&gt;

&lt;p&gt;If we want platform investments to deliver better returns, we need to measure outcomes rather than relying exclusively on delivery metrics.&lt;/p&gt;

&lt;p&gt;Counting onboarded applications, available features, pipeline executions, or registered users can tell us something about reach and activity. They don't necessarily tell us whether developers are better off.&lt;/p&gt;

&lt;p&gt;A more useful measurement framework might include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer experience&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How satisfied are developers with the platform?&lt;/li&gt;
&lt;li&gt;How often do they encounter friction in common workflows?&lt;/li&gt;
&lt;li&gt;Do they trust the platform for critical work?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reliability and productivity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How frequently do platform-related failures occur?&lt;/li&gt;
&lt;li&gt;How long does it take to diagnose and resolve them?&lt;/li&gt;
&lt;li&gt;How much developer time is spent waiting for support or working around limitations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Autonomy and self-service&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What proportion of common problems can developers resolve independently?&lt;/li&gt;
&lt;li&gt;How often do they need human intervention?&lt;/li&gt;
&lt;li&gt;How long does it take to onboard an application or complete a routine task?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Contribution and continuous improvement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How easy is it to report a defect with enough information to act on it?&lt;/li&gt;
&lt;li&gt;Can consuming teams contribute changes?&lt;/li&gt;
&lt;li&gt;How long does it take to review and release a valid contribution?&lt;/li&gt;
&lt;li&gt;Are developers actively helping improve the platform?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These measures should be interpreted together rather than turned into isolated targets. For example, a high number of pull requests isn't necessarily evidence of success if those contributions are low quality or reflect a platform full of defects.&lt;/p&gt;

&lt;p&gt;The aim is to understand whether the platform is reducing friction, enabling autonomy, and delivering value to the teams that depend on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. What should organisations do differently?
&lt;/h2&gt;

&lt;p&gt;The answer isn't to abandon platform engineering or to assume that every problem can be solved by changing tools.&lt;/p&gt;

&lt;p&gt;The opportunity is to improve how platforms are built, operated, and evolved.&lt;/p&gt;

&lt;p&gt;Here are five practical starting points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Prioritise the last mile.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reserve meaningful capacity for reliability, usability, diagnostics, documentation, and the removal of recurring friction. Don't allow new feature development to consume the entire roadmap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Make common failures self-diagnosable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Invest in actionable error messages, structured logs, troubleshooting guidance, and diagnostic tooling. Developers should be able to understand what failed and what to do next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Make contribution a first-class workflow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Document how to report issues, propose changes, run tests, and contribute fixes. Make it possible for consuming teams to participate without needing to become platform experts first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Use AI to lower the cost of participation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Where appropriate, provide agents with access to the relevant source code, documentation, issues, and diagnostic tools. Let them help with investigation and contribution, while retaining human oversight and appropriate safeguards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Measure whether developers actually benefit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gather feedback, track reliability and resolution times, and examine the friction developers encounter in real workflows. Use that evidence to determine what to improve next.&lt;/p&gt;

&lt;p&gt;None of these requires a massive transformation programme to get started. A team can begin with one frequently failing workflow, one repository, and a clear commitment to making problems easier to diagnose and fix.&lt;/p&gt;

&lt;p&gt;The important thing is to close the feedback loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: The return on platform engineering is earned after delivery
&lt;/h2&gt;

&lt;p&gt;Platform engineering offers enormous potential. Shared infrastructure, standardised workflows, self-service capabilities, and reusable tooling can make engineering organisations more productive, consistent, and secure.&lt;/p&gt;

&lt;p&gt;But building these capabilities is only part of the job.&lt;/p&gt;

&lt;p&gt;The return on that investment depends on what happens when developers use the platform every day: whether it works reliably, whether problems are easy to solve, whether feedback leads to improvements, and whether the people who depend on it can help make it better.&lt;/p&gt;

&lt;p&gt;A platform that developers are required to use can achieve broad adoption without earning their trust.&lt;/p&gt;

&lt;p&gt;A platform that developers trust can achieve something much more valuable: voluntary engagement, advocacy, and continuous improvement.&lt;/p&gt;

&lt;p&gt;That is why the last 10% matters. It is why self-service must mean more than automating the happy path. And it is why collaboration should be built into the platform's operating model rather than treated as an administrative process around it.&lt;/p&gt;

&lt;p&gt;The next evolution of platform engineering should not simply be about building more platforms or adding more capabilities.&lt;/p&gt;

&lt;p&gt;It should be about making existing platforms better to use, easier to understand, and easier to improve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real measure of a platform isn't how much engineering went into building it. It's how much friction it removes for everyone who depends on it — and how effectively those people can help it evolve.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is how platform investments become lasting engineering value.&lt;/p&gt;

</description>
      <category>devex</category>
      <category>productivity</category>
      <category>platformengineering</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Never Getting Selected to a 1-in-3 Success Rate: Did AI Help Me Write Better CFPs, or Is AI Selecting Them?</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Mon, 19 Oct 2026 15:25:47 +0000</pubDate>
      <link>https://dev.to/remojansen/from-never-getting-selected-to-a-1-in-3-success-rate-did-ai-help-me-write-better-cfps-or-is-ai-57hc</link>
      <guid>https://dev.to/remojansen/from-never-getting-selected-to-a-1-in-3-success-rate-did-ai-help-me-write-better-cfps-or-is-ai-57hc</guid>
      <description>&lt;p&gt;For years, I was involved in developer advocacy.&lt;/p&gt;

&lt;p&gt;I organised meetups, spoke at many of them, and was invited to conferences by people in my network. At one point, I was even a Microsoft MVP, partly as a result of all that developer advocacy work.&lt;/p&gt;

&lt;p&gt;I had experience. I had technical topics to talk about. I had a network of people who knew me and my work.&lt;/p&gt;

&lt;p&gt;But there was one thing I could never seem to get right: getting selected through a conference Call for Papers (CFP).&lt;/p&gt;

&lt;p&gt;I tried. A lot.&lt;/p&gt;

&lt;p&gt;I submitted proposals to conference after conference, and the result was almost always the same: rejection.&lt;/p&gt;

&lt;p&gt;It was frustrating. I could be invited to speak at a conference by someone who knew my work, yet struggle to get selected when submitting a proposal through the official process.&lt;/p&gt;

&lt;p&gt;Eventually, I started wondering whether the problem was the content of my talks or the way I presented them.&lt;/p&gt;

&lt;p&gt;This year, I tried something different&lt;/p&gt;

&lt;p&gt;Instead of starting with a conference CFP and trying to write a proposal from scratch, I started with something I was already comfortable doing: writing a blog post.&lt;/p&gt;

&lt;p&gt;I would choose a topic I wanted to speak about and write an article about it. Then I would give an AI agent two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My blog post.&lt;/li&gt;
&lt;li&gt;The website of the conference I wanted to submit a proposal to.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would ask the agent to use my article as the foundation for a conference proposal, taking the event's audience, themes, and submission guidelines into account.&lt;/p&gt;

&lt;p&gt;The idea was simple: I would focus on the technical content and the ideas I wanted to share, while AI would help me turn them into a proposal tailored to the conference.&lt;/p&gt;

&lt;p&gt;And then something unexpected happened.&lt;/p&gt;

&lt;p&gt;The results changed dramatically&lt;/p&gt;

&lt;p&gt;For years, I had submitted proposals without getting selected.&lt;/p&gt;

&lt;p&gt;With this new approach, I experienced a one-in-three acceptance rate.&lt;/p&gt;

&lt;p&gt;That's a striking difference from my previous experience.&lt;/p&gt;

&lt;p&gt;I can't prove that AI alone caused the improvement. I may have chosen different topics, targeted different conferences, or simply submitted proposals that were a better fit. But the change was significant enough to make me wonder what was really happening.&lt;/p&gt;

&lt;p&gt;Had I finally found a better way to sell my ideas?&lt;/p&gt;

&lt;p&gt;Or was something else going on?&lt;/p&gt;

&lt;p&gt;The question I can't stop asking&lt;/p&gt;

&lt;p&gt;There are two possible explanations that interest me.&lt;/p&gt;

&lt;p&gt;Possibility 1: AI is better at selling my ideas than I am&lt;/p&gt;

&lt;p&gt;Perhaps I was never particularly good at writing conference proposals.&lt;/p&gt;

&lt;p&gt;That doesn't mean I wasn't good at presenting, explaining technical concepts, or engaging an audience. Those are different skills.&lt;/p&gt;

&lt;p&gt;A CFP proposal is a piece of persuasive writing. It has to convince a reviewer that a particular talk deserves a limited slot in a conference programme. It needs to communicate the value of the session, identify its audience, explain what attendees will learn, and distinguish itself from other submissions.&lt;/p&gt;

&lt;p&gt;Maybe I was good at the technical side of developer advocacy but not as good at selling the value of my talks on paper.&lt;/p&gt;

&lt;p&gt;If so, AI is helping me communicate the value of my own ideas more effectively.&lt;/p&gt;

&lt;p&gt;There's nothing inherently wrong with that. We already use editors, colleagues, mentors, and writing tools to improve how we communicate.&lt;/p&gt;

&lt;p&gt;But it does raise an uncomfortable question: how many good talks have been rejected over the years because their authors weren't particularly good at writing CFP proposals?&lt;/p&gt;

&lt;p&gt;How much technical talent have conferences missed because the people evaluating submissions couldn't see the value behind an imperfect abstract?&lt;/p&gt;

&lt;p&gt;Possibility 2: Are the reviewers using AI too?&lt;/p&gt;

&lt;p&gt;Here's where things get more interesting.&lt;/p&gt;

&lt;p&gt;What if the improvement isn't just about AI helping me write better proposals? What if AI is also involved in evaluating them?&lt;/p&gt;

&lt;p&gt;Some conference organisers may use LLMs to help review, summarise, categorise, or shortlist CFP submissions. Others may rely entirely on human reviewers, and many may use a mixture of approaches.&lt;/p&gt;

&lt;p&gt;I don't know whether the conferences that accepted my proposals used AI in their selection processes.&lt;/p&gt;

&lt;p&gt;But if they did, it raises a fascinating possibility.&lt;/p&gt;

&lt;p&gt;Perhaps my AI-generated proposals are better at communicating with the people evaluating them. Or perhaps they are better at matching the language, structure, and criteria that an AI-assisted review process is designed to identify.&lt;/p&gt;

&lt;p&gt;If an LLM helps me frame my proposal and another LLM helps evaluate it, have I improved my communication with the conference organisers, or have I learned to produce something that another AI system is more likely to recognise as a strong submission?&lt;/p&gt;

&lt;p&gt;Those are not necessarily the same thing.&lt;/p&gt;

&lt;p&gt;A proposal can be clear, well structured, and closely aligned with a conference's stated themes without the underlying talk necessarily being more original or valuable.&lt;/p&gt;

&lt;p&gt;Conversely, an excellent talk might be overlooked because its proposal doesn't communicate its strengths effectively.&lt;/p&gt;

&lt;p&gt;Are we getting better at communicating ideas, or just better at optimising the text that gets those ideas selected?&lt;/p&gt;

&lt;p&gt;I don't have an answer. But I think it's a question worth asking.&lt;/p&gt;

&lt;p&gt;Maybe the real problem was never my technical expertise&lt;/p&gt;

&lt;p&gt;There's another possibility: the two explanations aren't mutually exclusive.&lt;/p&gt;

&lt;p&gt;AI may be helping me write better proposals while also making my submissions more aligned with the selection criteria, regardless of whether a human or an AI-assisted process is involved.&lt;/p&gt;

&lt;p&gt;Giving an agent both my article and the conference website provides useful context. Rather than asking it to produce a generic abstract, I'm asking it to connect my ideas to a specific audience and event.&lt;/p&gt;

&lt;p&gt;That could lead to clearer titles, more focused descriptions, more explicit learning outcomes, and a stronger explanation of why the session belongs at that conference.&lt;/p&gt;

&lt;p&gt;These are useful improvements whether the reviewer is a person, an LLM, or a combination of both.&lt;/p&gt;

&lt;p&gt;The important distinction is that a better proposal doesn't automatically mean a better talk. It means the value of the proposed talk may be easier to understand.&lt;/p&gt;

&lt;p&gt;And perhaps that was the missing piece all along.&lt;/p&gt;

&lt;p&gt;How I'd approach this experiment now&lt;/p&gt;

&lt;p&gt;If you're a developer advocate, engineer, technical leader, or aspiring conference speaker, here's the workflow I'd recommend experimenting with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write the article first. Develop the technical ideas in your own words before worrying about selling them.&lt;/li&gt;
&lt;li&gt;Give AI the conference context. Include the conference website, CFP criteria, target audience, and submission requirements.&lt;/li&gt;
&lt;li&gt;Ask for a tailored proposal. Have the agent explain the talk's value to that specific audience, rather than simply summarising your article.&lt;/li&gt;
&lt;li&gt;Review everything yourself. Make sure the proposal is technically accurate, reflects what you'll actually present, and still sounds like you.&lt;/li&gt;
&lt;li&gt;Track the outcomes. Record submissions, acceptances, rejections, topics, and the approach used to create each proposal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I wanted to investigate the bigger question, I'd go further. I'd compare proposals written entirely by me with AI-assisted versions of the same ideas, ideally across comparable conferences and with enough submissions to draw more meaningful conclusions.&lt;/p&gt;

&lt;p&gt;I'd also want to know how much AI is actually being used in CFP evaluation. Without that information, it's impossible to conclude that AI-assisted submissions are succeeding because they are being evaluated by AI.&lt;/p&gt;

&lt;p&gt;My one-in-three result is an observation, not a controlled experiment.&lt;/p&gt;

&lt;p&gt;But it's an observation that has changed how I approach conference submissions.&lt;/p&gt;

&lt;p&gt;The question I'd like to leave you with&lt;/p&gt;

&lt;p&gt;For years, I struggled to get my proposals accepted despite having experience speaking at meetups, organising communities, and contributing to developer advocacy.&lt;/p&gt;

&lt;p&gt;Then I changed how I created my proposals, introduced AI into the process, and started seeing a very different result.&lt;/p&gt;

&lt;p&gt;Maybe AI is simply helping me communicate my expertise better.&lt;/p&gt;

&lt;p&gt;Maybe it is helping me optimise for a selection process that increasingly involves AI.&lt;/p&gt;

&lt;p&gt;Maybe it's a bit of both.&lt;/p&gt;

&lt;p&gt;I don't know yet.&lt;/p&gt;

&lt;p&gt;But I find the question much more interesting than the simple conclusion that AI can write a better abstract.&lt;/p&gt;

&lt;p&gt;If AI can help us write proposals that get selected, and AI is also helping evaluate proposals, what exactly are we optimising for: better talks, better communication, or better compatibility between AI systems?&lt;/p&gt;

&lt;p&gt;I'd genuinely like to hear from conference organisers, CFP reviewers, and other speakers.&lt;/p&gt;

&lt;p&gt;Are you using LLMs to write or refine your submissions? Are you using them to review submissions? And have you noticed a difference?&lt;/p&gt;

&lt;p&gt;Because I suspect this is a conversation the developer community needs to have.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>techtalks</category>
      <category>community</category>
    </item>
    <item>
      <title>Halo is the new Doom and most software will soon be effectively open source (by force or by choice)</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Sun, 18 Oct 2026 21:50:00 +0000</pubDate>
      <link>https://dev.to/remojansen/halo-is-the-new-doom-and-most-software-will-soon-be-effectively-open-source-by-force-or-by-choice-mab</link>
      <guid>https://dev.to/remojansen/halo-is-the-new-doom-and-most-software-will-soon-be-effectively-open-source-by-force-or-by-choice-mab</guid>
      <description>&lt;p&gt;Seven months ago I published &lt;a href="https://dev.to/remojansen/source-code-is-now-a-common-good-and-saas-is-mostly-dead-gke"&gt;“Source code is now a common good, and SaaS is mostly dead.”&lt;/a&gt; I argued that AI had collapsed the economic cost of clean-room reimplementation, that pure software expression was losing its scarcity, and that the SaaS model built on high-margin code would face an existential squeeze—except where real data moats or network effects remained.&lt;/p&gt;

&lt;p&gt;I was wrong about the timeline.&lt;br&gt;&lt;br&gt;
It didn’t take five to ten years.&lt;br&gt;&lt;br&gt;
This month the premonition became visible reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Halo everywhere — including 100+ player co-op on PC
&lt;/h3&gt;

&lt;p&gt;In the space of a few days we watched &lt;em&gt;Halo: Combat Evolved&lt;/em&gt; appear on platforms it was never meant for, and get radically expanded where it already existed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Halo 64&lt;/strong&gt; (Jack Tulli) — a playable multiplayer (and emerging campaign) port running on real Nintendo 64 hardware. Built on the halo-ce-universal decompilation, with a custom renderer, four-player split-screen, the original 13 maps, bots, classic modes, and even a Firefight mode the original Xbox version never had. Claude assisted heavily in the coding.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Halo: Dreamcast Evolved&lt;/strong&gt; — extended gameplay of the Pillar of Autumn and other levels running on actual Dreamcast hardware. The CPU is more than three times slower and the system has a quarter of the RAM of the original Xbox, so performance is still rough, but the core systems are already ported and being optimized in public.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native PC (and beyond) with massively expanded player counts&lt;/strong&gt; — the same decompilation work that enabled the console ports also produced native Windows, Linux, and Android builds (OpenCE / halo-ce-universal and related projects). These support system-link / online multiplayer for up to &lt;strong&gt;128 players&lt;/strong&gt;. Campaign co-op limits have been raised as well; 32-player campaign co-op is already being demonstrated, with work continuing toward the same high player counts. Browser versions of the original Xbox game have also appeared with 128-player rooms and split-screen co-op.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not asset flips or simple ports. They rest on prior decompilation work that reached near byte-matching fidelity. What changed is the speed of the remaining work. A single developer (or small team) plus modern agents can now finish the last mile—new renderer, platform integration, expanded netcode, extra modes—in days or weeks instead of years. The result is a franchise that once defined the Xbox suddenly running on N64, Dreamcast, modern PCs, phones, and browsers, with player counts the original hardware could never support.&lt;/p&gt;

&lt;p&gt;Halo is becoming the new Doom: the game that runs on everything, because the barriers that used to stop it have collapsed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demon's Souls Remake: from ~1 FPS to 60+ (and nearly 120) in roughly a month
&lt;/h3&gt;

&lt;p&gt;PS5 emulation provided the other high-visibility stress test.  &lt;/p&gt;

&lt;p&gt;In early September, &lt;em&gt;Demon's Souls Remake&lt;/em&gt; on KyTyPS5 and its forks was crawling at 1–2 FPS even on top-tier hardware after finally reaching in-game states. Within days it jumped into the 10–18 FPS range. By mid-September temporary 30 FPS markers appeared. By mid-October, custom builds were delivering over 60 FPS at 1440p with original PS5 graphics settings on an RTX 5070 + Ryzen 7 9800X3D, and approaching 120 FPS with DLSS Frame Generation. The full game had already become completable earlier in the month.&lt;/p&gt;

&lt;p&gt;The historical pace of console emulation does not look like this.&lt;/p&gt;

&lt;h3&gt;
  
  
  REA — Reverse Engineer Anything
&lt;/h3&gt;

&lt;p&gt;While the ports and the emulator were making noise, a different tool exploded: &lt;strong&gt;REA&lt;/strong&gt; (morluto/rea).  &lt;/p&gt;

&lt;p&gt;An MCP server and CLI that lets coding agents (Claude Code, Codex, Cursor, and others) reverse-engineer applications, native binaries, websites, and runtime behavior without source code. It orchestrates existing tools (Ghidra, Hopper, IDA, browser instrumentation) and returns evidence-backed explanations. In roughly two weeks it accumulated hundreds of thousands of stars.&lt;/p&gt;

&lt;p&gt;The practical effect is that an agent can now be pointed at a feature and produce a usable understanding plus a path to independent reimplementation. Combined with the clean-room pattern I described in March, the barrier between “I can observe the behavior” and “I can recreate the behavior under a different license or on different hardware” continues to fall.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Adobe and Office “Craft” ports — imperfect, but the signal is loud
&lt;/h3&gt;

&lt;p&gt;Early October also brought the ArtCraft projects (led by Brandon Thomas): open-source, Rust-based applications described as clean-room reimplementations of major Adobe tools — PhotoCraft (Photoshop), FilmCraft (Premiere), LightCraft (Lightroom), and equivalents for Illustrator, After Effects, InDesign, and Acrobat. Built with heavy assistance from Claude.  &lt;/p&gt;

&lt;p&gt;A few days later the same effort expanded to Microsoft Office: WordCraft, GridCraft (Excel), and DeckCraft (PowerPoint).&lt;/p&gt;

&lt;p&gt;None of these are finished products. The teams themselves rate them as early alpha—feature parity and “ready for real work” numbers typically sit in the 45–60% range depending on the metric and app. File compatibility, edge cases, and polish remain incomplete.  &lt;/p&gt;

&lt;p&gt;They are imperfect. That is exactly why they matter as signals.  &lt;/p&gt;

&lt;p&gt;These are public demonstrations that a small team + frontier models can now produce recognizable, runnable, file-compatible approximations of two of the most heavily protected, highest-margin software suites in existence in a matter of weeks. The UI patterns, core workflows, and file formats that previously required years of specialized effort are being reconstructed rapidly enough that the projects are already usable for lighter tasks and improving in public view.&lt;/p&gt;

&lt;h3&gt;
  
  
  What these stories share
&lt;/h3&gt;

&lt;p&gt;They are not isolated stunts. They are symptoms of the same underlying shift I described in March:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decompilation and reverse-engineering tooling has matured.
&lt;/li&gt;
&lt;li&gt;Frontier models are competent enough at low-level and systems code to accelerate the remaining human work dramatically.
&lt;/li&gt;
&lt;li&gt;Agentic workflows (and tools like REA) make the process more systematic and less dependent on rare specialist knowledge.
&lt;/li&gt;
&lt;li&gt;The economic cost of “make a working version of X on platform Y” or “understand how Z is implemented so I can rebuild it” has collapsed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where is this going?
&lt;/h3&gt;

&lt;p&gt;In the original article I concluded that most software would become effectively open source—by force or by choice—and that the only sustainable thing left to charge for would be convenience. I was thinking primarily about SaaS. I had not fully considered how the same forces would hit other markets.&lt;/p&gt;

&lt;p&gt;Now that I am watching it play out in games, I think the game industry is even more exposed.&lt;/p&gt;

&lt;p&gt;AAA studios were already struggling with rising costs, risk-averse sequels, live-service fatigue, and audience fragmentation. The ability to rapidly reimplement, port, expand, and redistribute games—especially older or mid-tier titles—removes one of the remaining economic moats: the difficulty of making a working version exist somewhere else. When a decompiled classic can run on N64, Dreamcast, phones, browsers, and PCs with 128-player lobbies within weeks of the tooling maturing, the value of exclusive platform deals, long development cycles, and even some forms of DRM starts to look fragile.&lt;/p&gt;

&lt;p&gt;Even games that embrace community content and modding are not automatically safe. Modding communities have historically extended the life of games; the new tools accelerate both the creation of those mods and the independent recreation of the underlying experience itself. The distinction between “official” and “community” versions becomes harder to maintain when the technical barrier to a full alternative keeps falling.&lt;/p&gt;

&lt;p&gt;The original prediction still holds, only broader:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most software will become effectively open source—by force (because protection becomes impractical) or by choice (because fighting it is more expensive than adapting).
&lt;/li&gt;
&lt;li&gt;The residual value will concentrate in convenience, operations, trust, data network effects, real-time services, and experiences that cannot be trivially recreated offline or offline-first.
&lt;/li&gt;
&lt;li&gt;Pure expression of code, whether in a SaaS dashboard or a single-player campaign, loses scarcity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For games this may prove especially brutal. The industry already operates on high fixed costs and hit-driven economics. If the cost of independent recreation and redistribution keeps collapsing, the pressure on traditional publishing and exclusivity models will intensify. Some studios will adapt by doubling down on live services, social layers, competitive integrity, and continuous content that is hard to mirror. Others will not.&lt;/p&gt;

&lt;p&gt;Seven months ago I wrote that source code was becoming a common good and that SaaS was mostly dead.&lt;br&gt;&lt;br&gt;
This month Halo became the new Doom, emulators jumped from 1 FPS to 100, reverse-engineering agents went mainstream, and clean-room approximations of Adobe and Office appeared in public.  &lt;/p&gt;

&lt;p&gt;The direction is clearer than it was in March.&lt;br&gt;&lt;br&gt;
Most software will soon be effectively open source—by force or by choice.&lt;br&gt;&lt;br&gt;
The only remaining question is how many markets realize it in time to adapt.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>discuss</category>
      <category>saas</category>
    </item>
    <item>
      <title>SDLC != ADLC != ASDLC</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Sat, 17 Oct 2026 23:38:50 +0000</pubDate>
      <link>https://dev.to/remojansen/sdlc-adlc-asdlc-4057</link>
      <guid>https://dev.to/remojansen/sdlc-adlc-asdlc-4057</guid>
      <description>&lt;p&gt;I recently came across this definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Agentic Development Lifecycle (ADLC)—also known as the Agent Software Development Lifecycle—is a software engineering methodology designed for building, testing, deploying, and governing AI agent systems rather than traditional deterministic code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That sentence made something click. A lot of people (myself included, until recently) have been casually treating &lt;strong&gt;ADLC&lt;/strong&gt; and &lt;strong&gt;ASDLC&lt;/strong&gt; as interchangeable. They’re not.&lt;/p&gt;

&lt;p&gt;Once you separate them, the confusion starts to dissolve.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Three Terms, Cleanly Separated
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Full Name&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Primary focus&lt;/th&gt;
&lt;th&gt;What is being built?&lt;/th&gt;
&lt;th&gt;Who does most of the work?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SDLC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Software Development Lifecycle&lt;/td&gt;
&lt;td&gt;The classic methodology for building software&lt;/td&gt;
&lt;td&gt;Deterministic systems&lt;/td&gt;
&lt;td&gt;Traditional applications &amp;amp; services&lt;/td&gt;
&lt;td&gt;Humans (tools assist)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ADLC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent / Agentic Development Lifecycle&lt;/td&gt;
&lt;td&gt;A specialized lifecycle for creating AI agents&lt;/td&gt;
&lt;td&gt;Probabilistic, tool-using, adaptive systems&lt;/td&gt;
&lt;td&gt;AI agents and multi-agent systems&lt;/td&gt;
&lt;td&gt;Mixed (humans + agents), with heavy emphasis on evaluation &amp;amp; governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ASDLC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic Software Development Lifecycle&lt;/td&gt;
&lt;td&gt;The traditional SDLC performed &lt;em&gt;with&lt;/em&gt; AI agents as workers&lt;/td&gt;
&lt;td&gt;Any software, delivered agentically&lt;/td&gt;
&lt;td&gt;Applications, services, infrastructure… or even agents&lt;/td&gt;
&lt;td&gt;Agents execute; humans set intent, guardrails, and approve&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why the Mix-Up Happens
&lt;/h3&gt;

&lt;p&gt;Both terms contain the words “Agentic” and “Development Lifecycle,” so people collapse them. On top of that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some writers use “ADLC” loosely to mean “the new way we develop software now that agents exist.”&lt;/li&gt;
&lt;li&gt;Others (IBM, Arthur.ai, Glean, Atlan, etc.) use ADLC more precisely: the lifecycle &lt;em&gt;for building agents themselves&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Meanwhile, “Agentic SDLC” / ASDLC has become the clearer label for “we’re using agents to ship regular software.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a muddy conversation where people argue past each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the Distinction Actually Matters
&lt;/h3&gt;

&lt;p&gt;If you’re building an &lt;strong&gt;agent&lt;/strong&gt;, you care about different things than if you’re using agents to build a normal product:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Non-determinism and evaluation harnesses become first-class concerns.&lt;/li&gt;
&lt;li&gt;Observability, containment, and continuous behavioral monitoring matter more than classic “green tests.”&lt;/li&gt;
&lt;li&gt;The “done” state is fuzzier. Agents keep running and adapting after deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating that work with a regular (or even agent-assisted) SDLC often leads to brittle agents that look good in demos and then drift or fail in production.&lt;/p&gt;

&lt;p&gt;Conversely, if you’re just trying to ship a web app or an internal tool faster with coding agents, you don’t necessarily need the full ADLC machinery. You need a well-governed &lt;strong&gt;ASDLC&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Mental Model
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SDLC&lt;/strong&gt; → Building normal software the old way
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ADLC&lt;/strong&gt; → Building &lt;em&gt;agents&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ASDLC&lt;/strong&gt; → Building &lt;em&gt;anything&lt;/em&gt; (including agents) &lt;em&gt;with&lt;/em&gt; agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you start using the terms this way, a lot of the current discourse becomes much clearer.&lt;/p&gt;

&lt;p&gt;Have you noticed the same mixing of ADLC and ASDLC in your circles? I’d love to hear how your team is currently labeling these ideas.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Agentic Manifesto: What Should the Agile Manifesto Look Like in the Age of AI?</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Sat, 17 Oct 2026 01:40:40 +0000</pubDate>
      <link>https://dev.to/remojansen/the-agentic-manifesto-what-should-the-agile-manifesto-look-like-in-the-age-of-ai-3k1g</link>
      <guid>https://dev.to/remojansen/the-agentic-manifesto-what-should-the-agile-manifesto-look-like-in-the-age-of-ai-3k1g</guid>
      <description>&lt;p&gt;I've been spending a lot of time thinking about where all the recent advancements in AI are going to take the software industry.&lt;/p&gt;

&lt;p&gt;Not just what AI coding agents mean for developers today, or how much faster we can write code, but what happens when these capabilities fundamentally change the economics of building software.&lt;/p&gt;

&lt;p&gt;Over the last few months, I've written about several aspects of this transformation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/from-rigidity-to-explicitness-how-ai-changes-the-role-of-constraints-in-software-5cp5"&gt;From Rigidity to Explicitness: How AI Changes the Role of Constraints in Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/the-industrial-revolution-of-software-is-here-14f6"&gt;The Industrial Revolution of Software Is Here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/when-code-gets-cheap-verification-becomes-expensive-how-ai-changes-the-economics-of-software-632"&gt;When Code Gets Cheap, Verification Becomes Expensive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/revisiting-the-toyota-production-system-tps-in-the-age-of-coding-agents-2bb5"&gt;Revisiting the Toyota Production System in the Age of Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/scrum-is-finally-dead-and-we-have-to-thank-coding-agents-for-that-18bi"&gt;Scrum Is Finally Dead, and We Have to Thank Coding Agents for That&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/maye-enterprise-software-doesnt-have-to-suck-anymore-2163"&gt;Maybe Enterprise Software Doesn't Have to Suck Anymore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/source-code-is-now-a-common-good-and-saas-is-mostly-dead-gke"&gt;Source Code Is Now a Common Good, and SaaS Is Mostly Dead&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each article explores a different part of the same transformation. Together, they've led me to a bigger question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If AI agents fundamentally change how we build software, should we reconsider the principles that guide how we develop it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think the answer is yes.&lt;/p&gt;

&lt;p&gt;And I thought it would be interesting to start a conversation about what the Agile Manifesto might look like today, in a world where AI agents are becoming increasingly capable of building software autonomously.&lt;/p&gt;

&lt;p&gt;This is an attempt to start that conversation. It's not a declaration that I've figured everything out, and it's certainly not an argument that everything Agile taught us is suddenly wrong.&lt;/p&gt;

&lt;p&gt;Quite the opposite. I think many of the original Agile values remain as relevant as ever. But the context in which we apply them is changing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why revisit the Agile Manifesto?
&lt;/h2&gt;

&lt;p&gt;The Agile Manifesto was written in 2001, when software development was a very different activity.&lt;/p&gt;

&lt;p&gt;Its authors challenged heavyweight processes, excessive documentation, rigid plans, and organisational structures that often got in the way of delivering working software.&lt;/p&gt;

&lt;p&gt;They established four values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Individuals and interactions over processes and tools.&lt;/li&gt;
&lt;li&gt;Working software over comprehensive documentation.&lt;/li&gt;
&lt;li&gt;Customer collaboration over contract negotiation.&lt;/li&gt;
&lt;li&gt;Responding to change over following a plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These values helped shape how an entire generation of engineers and organisations approached software development.&lt;/p&gt;

&lt;p&gt;But consider what happens when AI agents can implement features, modify existing systems, generate tests, refactor code, and work across entire codebases with increasingly little human intervention.&lt;/p&gt;

&lt;p&gt;The bottleneck starts to move.&lt;/p&gt;

&lt;p&gt;Writing code becomes cheaper. Producing multiple implementations becomes easier. Experimenting with different approaches becomes more affordable.&lt;/p&gt;

&lt;p&gt;But we still need to know whether the software does what we intended, whether it introduces vulnerabilities, whether it behaves correctly in production, and whether it actually solves the customer's problem.&lt;/p&gt;

&lt;p&gt;In many cases, the harder problem is no longer producing a solution. It's establishing that the solution is worth trusting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When code gets cheap, verification becomes expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not simply a tooling change. It has consequences for team structures, software architecture, engineering practices, product discovery, and the economics of custom software.&lt;/p&gt;

&lt;p&gt;If we can produce software at a rate that exceeds our ability to verify and maintain it, then increasing development capacity alone will not solve our problems.&lt;/p&gt;

&lt;p&gt;We need to rethink the system in which software is produced.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Agile to Agentic
&lt;/h2&gt;

&lt;p&gt;I don't think the answer is to discard Agile and replace it with a methodology that prescribes how to use AI coding agents.&lt;/p&gt;

&lt;p&gt;That would miss the point.&lt;/p&gt;

&lt;p&gt;The more interesting question is whether the underlying values and principles of software development should evolve to reflect this new reality.&lt;/p&gt;

&lt;p&gt;Here are some of the shifts I believe deserve our attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. From producing software to verifying outcomes
&lt;/h3&gt;

&lt;p&gt;Working software was a major improvement over plans and documents as a measure of progress.&lt;/p&gt;

&lt;p&gt;But in an agentic world, generating working code is becoming easier. Even passing tests does not necessarily mean we've built the right thing.&lt;/p&gt;

&lt;p&gt;We need to focus on verified outcomes: software that demonstrably satisfies its requirements, behaves within its intended constraints, and delivers value to customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. From implicit assumptions to explicit intent
&lt;/h3&gt;

&lt;p&gt;AI agents can operate with considerable autonomy, but they need to understand what they are trying to achieve and what they must not do.&lt;/p&gt;

&lt;p&gt;Constraints, specifications, architectural boundaries, acceptance criteria, and executable policies become increasingly valuable because they make intent easier to interpret and verify.&lt;/p&gt;

&lt;p&gt;Explicitness isn't the ultimate goal. It's a means of achieving more reliable outcomes while enabling greater autonomy.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. From supervising implementation to designing autonomous systems
&lt;/h3&gt;

&lt;p&gt;When humans perform most implementation work, we organise teams around people writing, reviewing, and integrating code.&lt;/p&gt;

&lt;p&gt;When agents can do much of that work, we need to think differently about the development system itself.&lt;/p&gt;

&lt;p&gt;How much autonomy can we safely support? Which decisions require human judgment? Where should verification happen? How do we prevent failures from propagating?&lt;/p&gt;

&lt;p&gt;The goal should not be to remove humans from software development. It should be to use human judgment, creativity, and ownership where they matter most.&lt;/p&gt;

&lt;p&gt;We may end up with fewer engineers who can accomplish significantly more, but also carry greater responsibility for the systems they create and operate.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. From optimising implementation to optimising the whole system
&lt;/h3&gt;

&lt;p&gt;The Toyota Production System offers a useful perspective here.&lt;/p&gt;

&lt;p&gt;Improving the productivity of an individual step does not necessarily improve the performance of the entire system.&lt;/p&gt;

&lt;p&gt;If agents produce code ten times faster but verification, integration, and maintenance remain unchanged, we may simply create a larger queue of work waiting for those activities.&lt;/p&gt;

&lt;p&gt;We need to optimise the flow of verified value, not the volume of code generated.&lt;/p&gt;

&lt;p&gt;With these ideas in mind, I started wondering what a new manifesto might look like.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Agentic Manifesto
&lt;/h1&gt;

&lt;p&gt;We are uncovering better ways of developing software by building with intelligent agents and learning from the systems in which they operate.&lt;/p&gt;

&lt;p&gt;Through this work, we have come to value:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verified outcomes over generated output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explicit intent over implicit assumptions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human judgment and ownership over human supervision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safe, continuous flow over controlled, sequential handoffs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is, while there is value in the items on the right, we value the items on the left more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principles behind the Agentic Manifesto
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;We follow these principles:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Our highest priority is to deliver valuable, verified outcomes to customers through early and continuous delivery.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal is not to produce more code, complete more tasks, or deploy more agents. It is to solve meaningful problems and establish that we've solved them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Welcome changing requirements and new information. Design systems that make change cheap, verifiable, and reversible.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI makes experimentation and implementation cheaper. We should take advantage of that flexibility while ensuring that changes can be evaluated and corrected without creating unnecessary risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Deliver working software frequently, with automated verification integrated throughout development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Short feedback loops remain essential. Agents should be able to implement, test, evaluate, and refine changes continuously rather than generating large quantities of code that must be reviewed later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Make intent explicit enough for humans and agents to understand what must be achieved and what must never be violated.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Requirements, constraints, invariants, acceptance criteria, and architectural boundaries should be expressed clearly and made executable wherever practical. Explicitness enables autonomy; it does not eliminate the need for judgment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Build verification into the development process, and require evidence proportional to the consequences of failure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quality should not depend on hoping that generated code is correct or relying exclusively on human review. Use automated tests, static analysis, security checks, formal methods, runtime monitoring, and independent evaluation where appropriate. Higher-risk changes require stronger evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Build quality into the production system rather than relying on inspection at the end.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Detect abnormalities as early as possible, prevent defects from propagating, and stop work when critical verification fails. A system that produces code faster but allows defects to accumulate is not a better system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Give agents the maximum autonomy that can be safely supported by explicit boundaries, reliable feedback, and effective controls.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Autonomy should be earned through evidence and constrained by risk. Agents should be able to make routine decisions independently while respecting permissions, architectural rules, operational limits, and escalation requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Preserve human judgment, creativity, and ownership as the capabilities of autonomous systems increase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Delegate implementation, not responsibility. Humans should focus on defining problems, resolving ambiguity, making consequential decisions, and taking accountability for outcomes. Greater leverage demands greater responsibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Learn continuously from customers and from the behaviour of software in production.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Specifications and tests cannot anticipate everything. Real usage, operational signals, incidents, and customer feedback must inform both the software and the system that produces it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Prefer simplicity and maintainability over unnecessary complexity, even when implementation is cheap.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fact that an agent can generate a feature quickly does not mean we should build it. Every additional feature, abstraction, dependency, and architectural decision creates potential costs that extend beyond implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. Optimise for the flow of verified value, not the utilisation of people, the volume of generated code, or the number of agents deployed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A productive system minimises unnecessary queues, handoffs, rework, and delays between an idea and a verified outcome. Increasing output without improving the entire system merely moves the bottleneck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Continuously improve the system that produces software.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every defect, failed verification, production incident, and unexpected agent behaviour is an opportunity to improve our specifications, constraints, tests, architecture, and feedback loops. The production system itself must evolve as our capabilities change.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does this mean for the future of software development?
&lt;/h2&gt;

&lt;p&gt;I believe AI is changing more than the productivity of individual developers.&lt;/p&gt;

&lt;p&gt;It is changing the economics of software itself.&lt;/p&gt;

&lt;p&gt;If code becomes a common good, the ability to produce an implementation becomes a weaker competitive advantage. The value shifts towards understanding problems, delivering differentiated outcomes, possessing valuable data and distribution, operating reliable services, and establishing trust.&lt;/p&gt;

&lt;p&gt;This could fundamentally change enterprise software.&lt;/p&gt;

&lt;p&gt;Organisations may increasingly build and adapt software around their own needs instead of accepting the limitations, complexity, and cost of generic products. Custom software that was previously too expensive to justify could become economically viable.&lt;/p&gt;

&lt;p&gt;But this future won't be realised simply by giving everyone access to coding agents.&lt;/p&gt;

&lt;p&gt;We need production systems that can support the resulting increase in output without sacrificing correctness, security, maintainability, or human accountability.&lt;/p&gt;

&lt;p&gt;That's why I think verification should sit at the centre of an Agentic Manifesto.&lt;/p&gt;

&lt;p&gt;Not because every line of code needs a formal proof, or because humans should spend their days supervising machines, but because the ability to produce software is becoming less scarce while the ability to establish that software is correct, valuable, and safe remains essential.&lt;/p&gt;

&lt;p&gt;The opportunity is to build systems that let us produce more valuable software with less unnecessary effort, while increasing our confidence in what we deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do you think?
&lt;/h2&gt;

&lt;p&gt;This is a first attempt, and I'm very interested in hearing what others think.&lt;/p&gt;

&lt;p&gt;A few questions I'd particularly like to explore with the community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Are we approaching a point where the Agile Manifesto needs a successor, or are its original values sufficient for the agentic era?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Is verification the right centre of gravity for a new manifesto, or am I overestimating its importance?&lt;/li&gt;
&lt;li&gt;What should happen to team structures and engineering roles when a smaller number of engineers can direct much larger amounts of autonomous work?&lt;/li&gt;
&lt;li&gt;If code becomes a commodity, where will the sustainable competitive advantage in software actually come from?&lt;/li&gt;
&lt;li&gt;Which of these 12 principles would you change, remove, or add?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm especially interested in disagreements and alternative perspectives. I'd rather have these ideas challenged now than present a polished manifesto that fails to address the real problems we will face.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Agentic Manifesto isn't a finished answer. It's an invitation to work out what software development should become next.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What would you change?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>discuss</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Mutation Testing with TypeScript: How to Verify Your Tests in the Age of AI Coding Agents</title>
      <dc:creator>Remo H. Jansen</dc:creator>
      <pubDate>Wed, 14 Oct 2026 22:28:14 +0000</pubDate>
      <link>https://dev.to/remojansen/mutation-testing-with-typescript-how-to-verify-your-tests-in-the-age-of-ai-coding-agents-neh</link>
      <guid>https://dev.to/remojansen/mutation-testing-with-typescript-how-to-verify-your-tests-in-the-age-of-ai-coding-agents-neh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Your tests pass. But would they catch a bug?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine asking an AI coding agent to implement a feature. A few minutes later, it has generated the implementation, written unit tests, and opened a pull request.&lt;/p&gt;

&lt;p&gt;The CI pipeline is green. All tests pass. Code coverage looks good.&lt;/p&gt;

&lt;p&gt;Can you trust the change?&lt;/p&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;The implementation and its tests may share the same misunderstanding of the requirements. The tests might execute every line without checking the behavior that matters. And a test suite that passes today might not detect a regression tomorrow.&lt;/p&gt;

&lt;p&gt;As AI makes code generation faster, we need to think more carefully about how we verify the code we produce.&lt;/p&gt;

&lt;p&gt;In this tutorial, we'll explore one technique that can help: &lt;strong&gt;mutation testing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We'll build a small TypeScript project, introduce a bug deliberately, install StrykerJS, and use mutation testing to discover weaknesses in our tests. Then we'll explore how the same technique can help us verify AI-generated pull requests.&lt;/p&gt;

&lt;p&gt;By the end, you'll understand not just how mutation testing works, but why it can become an important part of a multi-layer verification strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Let's start with a simple problem
&lt;/h2&gt;

&lt;p&gt;Imagine we're building an online shop. One of our business rules is that orders worth £100 or more qualify for free shipping.&lt;/p&gt;

&lt;p&gt;Let's implement that rule in TypeScript.&lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;src/shipping.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;orderTotal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;orderTotal&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orders below £100 pay £10 shipping.&lt;/li&gt;
&lt;li&gt;Orders worth £100 or more get free shipping.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's write some unit tests.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;src/shipping.test.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vitest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;calculateShipping&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./shipping&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;calculateShipping&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;charges shipping for small orders&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;offers free shipping for large orders&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx vitest run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both tests pass.&lt;/p&gt;

&lt;p&gt;Great! We have an implementation, some unit tests, and a green test suite.&lt;/p&gt;

&lt;p&gt;But let's ask a slightly different question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would happen if somebody accidentally changed &lt;code&gt;&amp;gt;=&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our implementation would become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;orderTotal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;orderTotal&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now an order worth exactly £100 is charged shipping, even though the requirement says it should qualify for free shipping.&lt;/p&gt;

&lt;p&gt;We've introduced a bug.&lt;/p&gt;

&lt;p&gt;Run the existing tests again.&lt;/p&gt;

&lt;p&gt;They still pass!&lt;/p&gt;

&lt;p&gt;Why? Because we tested orders worth £50 and £150, but we never tested the boundary at £100.&lt;/p&gt;

&lt;p&gt;Our tests execute the function, but they don't distinguish the correct implementation from this incorrect one.&lt;/p&gt;

&lt;p&gt;This is the problem mutation testing helps us investigate.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What is mutation testing?
&lt;/h2&gt;

&lt;p&gt;Mutation testing is a technique for evaluating how effectively your tests detect certain defects.&lt;/p&gt;

&lt;p&gt;Instead of simply running your tests against your implementation, a mutation-testing tool deliberately makes small changes to your production code and runs the tests against each modified version.&lt;/p&gt;

&lt;p&gt;These changes are called &lt;em&gt;mutations&lt;/em&gt;. Each modified version is called a &lt;em&gt;mutant&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For example, a mutation-testing tool might make changes such as:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Original code&lt;/th&gt;
&lt;th&gt;Mutated code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;a &amp;gt;= b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;a &amp;gt; b&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;a + b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;a - b&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;isValid &amp;amp;&amp;amp; isActive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;`isValid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;{% raw %}&lt;code&gt;return true&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;return false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The tool then observes whether your tests detect the change.&lt;/p&gt;

&lt;p&gt;There are two particularly important outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Killed mutant:&lt;/strong&gt; At least one test fails because of the mutation. Your tests detected the change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Survived mutant:&lt;/strong&gt; The tests still pass. Your tests didn't detect the change.&lt;/p&gt;

&lt;p&gt;Let's apply this to our shipping example.&lt;/p&gt;

&lt;p&gt;The original implementation is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;orderTotal&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A mutant changes it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;orderTotal&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our existing tests still pass, so the mutant survives.&lt;/p&gt;

&lt;p&gt;That's a useful finding. It tells us that the test suite doesn't distinguish these two implementations.&lt;/p&gt;

&lt;p&gt;Notice what we're evaluating: we're not simply asking whether the implementation works for our current examples. We're asking whether the tests can detect selected changes that might introduce defects.&lt;/p&gt;

&lt;p&gt;This is a different question from ordinary unit testing and code coverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Code coverage isn't the same as test effectiveness
&lt;/h2&gt;

&lt;p&gt;You may already measure code coverage in your projects.&lt;/p&gt;

&lt;p&gt;Coverage tells you which parts of your code were executed during testing. It's useful, but it doesn't necessarily tell you whether your assertions are strong enough.&lt;/p&gt;

&lt;p&gt;Consider this test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;calculates shipping&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function executes. Depending on the coverage measurement, the test may contribute to branch or line coverage.&lt;/p&gt;

&lt;p&gt;But the test doesn't assert the expected result.&lt;/p&gt;

&lt;p&gt;The implementation could return £10 instead of £0, and the test would still pass.&lt;/p&gt;

&lt;p&gt;Now consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;offers free shipping at exactly £100&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This test checks the actual business rule.&lt;/p&gt;

&lt;p&gt;It also kills our mutant because the mutated implementation returns £10.&lt;/p&gt;

&lt;p&gt;We can summarize the difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code coverage:&lt;/strong&gt; Did our tests execute this code?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assertions:&lt;/strong&gt; Did our tests verify the expected behavior?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mutation testing:&lt;/strong&gt; Would our tests detect selected changes to the implementation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These techniques complement each other. Mutation testing doesn't replace coverage, and a mutation score doesn't prove correctness. Together, however, they can provide more useful evidence about the effectiveness of a test suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Let's set up StrykerJS
&lt;/h2&gt;

&lt;p&gt;We'll use &lt;a href="https://stryker-mutator.io/" rel="noopener noreferrer"&gt;StrykerJS&lt;/a&gt;, a mutation-testing framework for JavaScript and TypeScript.&lt;/p&gt;

&lt;p&gt;We'll assume you already have Node.js and npm installed.&lt;/p&gt;

&lt;p&gt;If you're following along from scratch, create a project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;mutation-testing-demo
&lt;span class="nb"&gt;cd &lt;/span&gt;mutation-testing-demo
npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install TypeScript and Vitest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; typescript vitest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the &lt;code&gt;src&lt;/code&gt; directory and add the two files from the previous sections.&lt;/p&gt;

&lt;p&gt;Now run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx vitest run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure your tests pass before continuing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Initialize StrykerJS
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx stryker init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the prompts to configure Stryker for your project. Select TypeScript and the Vitest test runner where applicable.&lt;/p&gt;

&lt;p&gt;Stryker's setup options can vary with the version and project configuration, so follow the current prompts rather than assuming every project requires an identical configuration.&lt;/p&gt;

&lt;p&gt;Official documentation: &lt;a href="https://stryker-mutator.io/docs/stryker-js/getting-started/" rel="noopener noreferrer"&gt;StrykerJS — Getting Started&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once initialization is complete, inspect the generated configuration and make sure the mutation scope includes our production file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/shipping.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our test file, &lt;code&gt;src/shipping.test.ts&lt;/code&gt;, should not be treated as production code to mutate.&lt;/p&gt;

&lt;p&gt;You can configure the mutation scope explicitly if necessary. For example, in a TypeScript Stryker configuration, the relevant pattern might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;mutate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;src/**/*.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!src/**/*.test.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the configuration generated by your installed version as the starting point, and adapt it to your repository's conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run your first mutation test
&lt;/h3&gt;

&lt;p&gt;Execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx stryker run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stryker will run your tests, generate mutations in the configured production code, and evaluate the results.&lt;/p&gt;

&lt;p&gt;The first run may take longer than your ordinary unit tests because Stryker needs to evaluate multiple mutants.&lt;/p&gt;

&lt;p&gt;Once it finishes, inspect the terminal output and generated HTML report.&lt;/p&gt;

&lt;p&gt;Look for surviving mutants associated with the comparison in &lt;code&gt;calculateShipping&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If the comparison changes from &lt;code&gt;&amp;gt;=&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt; and all our tests still pass, we've found the weakness we deliberately introduced.&lt;/p&gt;

&lt;p&gt;Congratulations: you've just used mutation testing to discover a gap in your test suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Understand the mutation report
&lt;/h2&gt;

&lt;p&gt;A mutation report contains more than just a score.&lt;/p&gt;

&lt;p&gt;The most useful outcomes to understand are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Killed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A test detected the mutation and failed. This is generally what we want for a meaningful behavioral change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Survived&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tests passed despite the mutation. Investigate whether this reveals missing test coverage or an assertion that doesn't adequately verify the requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No coverage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mutated code wasn't exercised by the relevant tests. You may need to investigate whether the code is tested at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timeout&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tool couldn't obtain a normal result within its configured time limit. This doesn't necessarily mean your tests detected the mutation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Equivalent mutant&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mutation doesn't change observable behavior for the relevant inputs. No meaningful test can distinguish it from the original implementation.&lt;/p&gt;

&lt;p&gt;Not every surviving mutant is a defect, and not every mutant needs to be killed. Some mutations are equivalent, some aren't meaningful for your requirements, and some may reveal behavior you don't actually need to constrain.&lt;/p&gt;

&lt;p&gt;The purpose of the report is to help you make better decisions about your tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about the mutation score?
&lt;/h3&gt;

&lt;p&gt;Stryker calculates a mutation score based on the results of mutation testing.&lt;/p&gt;

&lt;p&gt;A simplified formula is:&lt;/p&gt;

&lt;p&gt;Mutation score = killed mutants / valid mutants × 100%&lt;/p&gt;

&lt;p&gt;For example, suppose a run produces 100 valid mutants and your tests kill 80 of them. The mutation score is 80%.&lt;/p&gt;

&lt;p&gt;That can be a useful signal, but be careful about treating it as a universal quality metric.&lt;/p&gt;

&lt;p&gt;Two projects can have the same mutation score while having very different levels of risk. The score depends on the mutations generated, the code being analyzed, and which results are excluded.&lt;/p&gt;

&lt;p&gt;A surviving mutation in payment authorization may matter much more than a surviving mutation in an unimportant formatting helper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on understanding meaningful surviving mutants, not maximizing a percentage at any cost.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Improve the tests and run mutation testing again
&lt;/h2&gt;

&lt;p&gt;Let's fix the weakness we discovered.&lt;/p&gt;

&lt;p&gt;Our business rule is explicit: orders worth £100 or more qualify for free shipping.&lt;/p&gt;

&lt;p&gt;We should test the boundary directly.&lt;/p&gt;

&lt;p&gt;Add this test to &lt;code&gt;src/shipping.test.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;offers free shipping at exactly £100&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;calculateShipping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the ordinary test suite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx vitest run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The test passes against the correct implementation.&lt;/p&gt;

&lt;p&gt;Now run mutation testing again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx stryker run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The mutation that changes &lt;code&gt;&amp;gt;=&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt; should now be killed by the boundary test.&lt;/p&gt;

&lt;p&gt;We've improved the test suite because it now detects a meaningful defect.&lt;/p&gt;

&lt;p&gt;Notice that we didn't add a test just to improve a score. We added one because the requirement explicitly defines what should happen at the boundary.&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;A mutation-testing report is a source of questions, not an instruction to write more assertions blindly.&lt;/p&gt;

&lt;p&gt;For every surviving mutant, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does this change affect behavior that matters?&lt;/li&gt;
&lt;li&gt;What does the requirement say the correct behavior should be?&lt;/li&gt;
&lt;li&gt;Should the test suite detect this change?&lt;/li&gt;
&lt;li&gt;If so, what is the smallest meaningful test that would detect it?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach fits naturally into Test-Driven Development.&lt;/p&gt;

&lt;p&gt;TDD helps us implement behavior from requirements. Mutation testing challenges whether our tests can detect selected deviations from that behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. From local experiments to pull request verification
&lt;/h2&gt;

&lt;p&gt;So far, we've run mutation testing manually.&lt;/p&gt;

&lt;p&gt;The next step is to integrate it into CI.&lt;/p&gt;

&lt;p&gt;Imagine an AI coding agent creates a PR that modifies &lt;code&gt;calculateShipping&lt;/code&gt; and adds several unit tests.&lt;/p&gt;

&lt;p&gt;The ordinary CI pipeline runs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Type-checking.&lt;/li&gt;
&lt;li&gt;Linting.&lt;/li&gt;
&lt;li&gt;Unit and integration tests.&lt;/li&gt;
&lt;li&gt;Other project-specific checks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything passes.&lt;/p&gt;

&lt;p&gt;Now Stryker runs against the configured production code. It discovers that the tests don't detect a meaningful mutation in the shipping calculation.&lt;/p&gt;

&lt;p&gt;The PR report can expose that weakness before the change is merged.&lt;/p&gt;

&lt;p&gt;This is particularly useful for AI-generated code because the implementation and its tests may have been produced by the same agent, based on the same interpretation of the requirements.&lt;/p&gt;

&lt;p&gt;The tests passing is evidence that the implementation satisfies the assertions the agent wrote. It isn't independent evidence that those assertions capture every important requirement.&lt;/p&gt;

&lt;p&gt;Mutation testing adds another challenge: it deliberately changes the implementation and checks whether the test suite notices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should mutation testing block every PR?
&lt;/h3&gt;

&lt;p&gt;I'd start with a gradual approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 1: Report findings without blocking merges.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run mutation testing on a small set of important modules. Learn how long it takes, inspect surviving mutants, and identify noisy or irrelevant results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2: Gate critical code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introduce stronger requirements for areas where correctness is particularly important, such as permissions, pricing, validation, or state transitions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 3: Track regressions over time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use scheduled runs and historical reports to identify weaknesses across the broader codebase.&lt;/p&gt;

&lt;p&gt;For larger projects, Stryker's incremental mode can reuse eligible previous results to reduce the work needed on subsequent runs. See the &lt;a href="https://stryker-mutator.io/docs/stryker-js/incremental/" rel="noopener noreferrer"&gt;incremental testing documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One important distinction: mutating changed production files is not the same as testing only the new tests in a PR. You want relevant existing tests to participate in verifying the changed behavior as well.&lt;/p&gt;

&lt;p&gt;You should also avoid making a repository-wide mutation score an immediate merge requirement. A small PR shouldn't necessarily be responsible for fixing every weakness in a legacy test suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Let the AI agent investigate surviving mutants
&lt;/h2&gt;

&lt;p&gt;We can take the workflow a step further.&lt;/p&gt;

&lt;p&gt;Instead of using mutation testing only as a CI gate, we can feed its findings back to the AI agent.&lt;/p&gt;

&lt;p&gt;Imagine this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An agent implements a feature and writes unit tests.&lt;/li&gt;
&lt;li&gt;CI runs the ordinary checks.&lt;/li&gt;
&lt;li&gt;Stryker finds a surviving mutation.&lt;/li&gt;
&lt;li&gt;The agent receives the mutation report and relevant requirements.&lt;/li&gt;
&lt;li&gt;The agent determines whether the mutation exposes a genuine testing gap.&lt;/li&gt;
&lt;li&gt;The agent proposes an additional test or explains why the mutant isn't meaningful.&lt;/li&gt;
&lt;li&gt;CI reruns the checks against the revised PR.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For our shipping example, the agent might receive a report showing that changing &lt;code&gt;&amp;gt;=&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt; doesn't cause any tests to fail.&lt;/p&gt;

&lt;p&gt;The agent can then inspect the business rule and recognize that the boundary at £100 is important.&lt;/p&gt;

&lt;p&gt;It adds the boundary test, reruns the suite, and verifies that the mutation is now killed.&lt;/p&gt;

&lt;p&gt;This creates a feedback loop in which the agent can improve not just the implementation, but also the evidence we have about that implementation.&lt;/p&gt;

&lt;p&gt;However, there's a critical caveat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't let the agent blindly optimize the mutation score.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An agent could make a mutant fail by adding an assertion that encodes an incorrect assumption. It could also change production code simply to make the existing tests pass.&lt;/p&gt;

&lt;p&gt;The correct behavior must come from explicit requirements, domain rules, or other trustworthy sources—not from the mutation report alone.&lt;/p&gt;

&lt;p&gt;The agent can propose a fix, but the final verification should run independently in CI against the revised commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Mutation testing is one layer in a Swiss cheese model
&lt;/h2&gt;

&lt;p&gt;This brings us to the broader reason mutation testing matters.&lt;/p&gt;

&lt;p&gt;No single verification technique catches every defect.&lt;/p&gt;

&lt;p&gt;Type checking can detect certain classes of errors, but it doesn't establish that a business rule is correct.&lt;/p&gt;

&lt;p&gt;Unit tests can verify specified behavior, but they only check the cases and assertions we've written.&lt;/p&gt;

&lt;p&gt;Mutation testing can challenge the effectiveness of those tests, but it can't guarantee that the original requirements were understood correctly.&lt;/p&gt;

&lt;p&gt;Integration tests can expose problems between components, but they won't necessarily identify every defect in an individual component.&lt;/p&gt;

&lt;p&gt;Code review can identify design and requirement problems, but human reviewers also have limited time and attention.&lt;/p&gt;

&lt;p&gt;Each layer has gaps.&lt;/p&gt;

&lt;p&gt;This is the idea behind a Swiss cheese model of verification: arrange multiple imperfect defenses so that a defect that passes through one layer has other opportunities to be detected.&lt;/p&gt;

&lt;p&gt;A practical model might include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: Types and static analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Catch incompatible interfaces, invalid types, and selected classes of programming mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2: Unit and integration tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check specified behavior, interactions, and component integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3: Mutation testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Challenge whether tests detect selected changes to the implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 4: Contract and architecture checks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Verify boundaries, invariants, and integration assumptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 5: Independent review and production feedback&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identify misunderstood requirements, broader design risks, and failures that automated checks miss.&lt;/p&gt;

&lt;p&gt;The layers are complementary. They aren't completely independent: mutation testing relies on the test suite, and both can be based on the same misunderstood requirement.&lt;/p&gt;

&lt;p&gt;But combining different forms of verification can provide stronger evidence than relying on any one of them.&lt;/p&gt;

&lt;p&gt;This connects directly to the principles discussed in &lt;a href="https://dev.to/remojansen/revisiting-the-toyota-production-system-tps-in-the-age-of-coding-agents-2bb5"&gt;Revisiting the Toyota Production System in the Age of Coding Agents&lt;/a&gt;. In particular, the idea of building quality into the production process is relevant here: detect abnormalities as early as possible, rather than allowing them to move downstream.&lt;/p&gt;

&lt;p&gt;Mutation testing can be one of the automated checks that helps us detect weaknesses before a pull request is merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Why this matters when code generation scales
&lt;/h2&gt;

&lt;p&gt;AI changes the economics of software development.&lt;/p&gt;

&lt;p&gt;An agent can produce a substantial implementation and its accompanying tests much faster than a human might write them manually.&lt;/p&gt;

&lt;p&gt;But generating code is not the same as establishing that the code is correct.&lt;/p&gt;

&lt;p&gt;If the volume of changes increases dramatically, manually reviewing every implementation and every test may become increasingly difficult.&lt;/p&gt;

&lt;p&gt;We need verification mechanisms that scale with the rate of change.&lt;/p&gt;

&lt;p&gt;This is the connection to &lt;a href="https://dev.to/remojansen/when-code-gets-cheap-verification-becomes-expensive-how-ai-changes-the-economics-of-software-632"&gt;When Code Gets Cheap, Verification Becomes Expensive&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mutation testing is not a complete solution to that problem. It has a computational cost, and it only evaluates the mutations it generates. It cannot establish that the implementation satisfies every requirement or that every important defect is represented by a mutation.&lt;/p&gt;

&lt;p&gt;What it can do is make one important question cheaper to investigate:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can our tests detect plausible defects in the code we're producing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And because the process can be automated, we can apply that challenge repeatedly as code changes.&lt;/p&gt;

&lt;p&gt;The objective isn't to maximize code generation or mutation scores in isolation. It's to increase our ability to produce and verify valuable changes without letting the volume of generated code overwhelm our verification capacity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Mutation testing is a relatively simple idea with important consequences.&lt;/p&gt;

&lt;p&gt;We deliberately modify production code, run our tests, and observe whether those tests detect the changes. When meaningful mutants survive, we investigate whether our tests are missing important behavioral checks.&lt;/p&gt;

&lt;p&gt;With TypeScript and StrykerJS, it's possible to introduce this technique into an existing project without replacing your test runner or abandoning your current TDD workflow.&lt;/p&gt;

&lt;p&gt;And when AI agents generate code and tests, mutation testing provides a useful additional challenge: rather than accepting a green test suite at face value, we can investigate whether it detects selected mistakes.&lt;/p&gt;

&lt;p&gt;It doesn't prove that our code is correct. No single testing technique does.&lt;/p&gt;

&lt;p&gt;But that's precisely why it belongs in a multi-layer verification strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When code generation scales, verification must scale with it. Mutation testing helps us challenge one of the most important defenses we already have: our tests.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Further reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/from-rigidity-to-explicitness-how-ai-changes-the-role-of-constraints-in-software-5cp5"&gt;From Rigidity to Explicitness: How AI Changes the Role of Constraints in Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/when-code-gets-cheap-verification-becomes-expensive-how-ai-changes-the-economics-of-software-632"&gt;When Code Gets Cheap, Verification Becomes Expensive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/remojansen/revisiting-the-toyota-production-system-tps-in-the-age-of-coding-agents-2bb5"&gt;Revisiting the Toyota Production System in the Age of Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stryker-mutator.io/docs/stryker-js/getting-started/" rel="noopener noreferrer"&gt;StrykerJS documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agents</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
