• Home
  • Blog
  • Projects
  • Bookshelf
  • About
← Back to all posts

The Eventually Consistent Codebase

Published ....
Last modified ....
From Boston, MA

Share this post on BlueskySee discussion on Bluesky


The widely prevalent mindset around how to maintain codebases since at least the 2010s could be roughly described as:

  • keep main green
  • improve the codebase quality with every change

I think these concepts still hold true in the agentic engineering era we find ourselves in at the moment, but the tools we have at our disposal to keep those true have changed and we need to accept that change more willingly.

Importantly, usually both of these criteria were kept in check manually, either via code review from another engineer on the team or through manual checks throughout the process (e.g. reviewing the status of CI after merging in your changes).

This workflow that we used up until now was very short term sighted, we optimized for each individual unit (PR/commit to the main branch) being “perfect” and not the longer term state of the codebase.

With the availability of agents, we need to flip this workflow on its head and instead take a longer term view of the codebase - something I’ve been calling the “Eventually Consisitent Codebase”.

We need to start looking at the codebases that we maintain and evaluate them on the longer term time horizon, this means we should lean in on:

  • Agents reviewing PRs and shipping them to production without requiring additional human oversight
    • Honestly this is something that should have been true before we had coding agents - when I hear that a team requires another engineer to review a change to the codebase (don’t even get me started on requiring two approvals) that tells me that you lack trust in the engineers contributing to it!
  • Iterating on the codebase with each individual change
  • Specifically - we shouldn’t be looking to break CI on each change, but we should be willing to accept that there will be some short term trade offs in the effort to improve the long term rewards

I’m not arguing that we completely lean into vibe coding - unlike the discourse on twitter these days I don’t think vibe coding and agentic engineering have become the same thing. You should have something that closely resembles a state machine (bonus points if it is implemented as a state machine as well!) for managing your codebase (most people these days call this a software factory), and that machine/factory should be building out the guardrails (ideally using ratcheting checks too) to guide the factory itself to produce the ideal long term outcome for the codebase.

That long term outcome by the way can be defined in a variety of ways:

  • in detail it could mean that the number of known defects/bugs in the system/product approaches 0
  • in a more broad view it could mean that the codebase acutely satisfies the problems your customers are looking to solve with your product/service

I’m not here to sell a silver bullet here (yet), but I do think we as engineers should be looking to build systems that lead us to the Eventually Consistent Codebase rather than optimizing for short term min-maxing.


Tags:

Software DevelopmentAgentic EngineeringEngineering

Loading...

Related Posts

Software Development

The Heat Death of Software

....

A few predictions about where software engineering is going, including some counter arguments as well

Your Job Is To Understand Systems

....

Parallel Computers

....

The Harness Isn't Your Problem, The Router Is

....

Performative Engineering

....

The act of making noise and delivering output instead of outcomes

The Agentic Engineering Scale

....

A brief outline of how I think of the scale of adoption of AI in software development

Onboarding Your New AI Teammate

....

Are we reinventing the wheel when it comes to onboarding new AI agents to a codebase, when we already have primitives available for onboarding humans?

Polish is Important

....

You're Building Software Wrong

....

Slicing software: why vertical is better than horizontal.

Agentic Engineering

The Heat Death of Software

....

A few predictions about where software engineering is going, including some counter arguments as well

Your Job Is To Understand Systems

....

Parallel Computers

....

Engineering

Performative Engineering

....

The act of making noise and delivering output instead of outcomes

The Agentic Engineering Scale

....

A brief outline of how I think of the scale of adoption of AI in software development

The Agentic Engineering Scale

....

A brief outline of how I think of the scale of adoption of AI in software development