Git Was Never Built for Machines – And Yet, It Became Their Library


When Linus Torvalds created Git in 2005, he solved a very human problem: how do distributed teams of engineers coordinate changes to a shared codebase without stepping on each other’s feet? The design was elegant, the model brilliant – and entirely anthropocentric. Every concept in Git, from commits to branches to pull requests, was designed to reflect human reasoning about software change.

Nobody thought about machines. Nobody had to.

GitHub today: 420 million repositories – the world’s largest unintentional AI training dataset, built by humans for humans, read by machines for everything.

The Unintended Consequence of 20 Years of Open Source

Fast forward to today. GitHub hosts over 420 million repositories. The platform has become, without anyone planning it that way, the single largest structured dataset of human reasoning about software in existence. Not raw text, not unstructured web crawls – but versioned, annotated, context-rich artifacts of how engineers think, communicate, decide, and build.

When OpenAI trained Codex, when DeepMind built AlphaCode, when Anthropic trained Claude – they all fed on this corpus. The commit messages, the PR discussions, the inline comments, the issue threads, the README files. Git history is, quite literally, the autobiography of software development, and AI learned to read it before most organizations realized what they were giving away.

The irony is profound. A version control system designed for human collaboration became the substrate for training non-human intelligence. Git was the library. GitHub was the librarian. And the AI models were the quiet students who read everything, remembered everything, and said nothing.

What Does a Machine Actually Learn from a Repository?

This is where it gets interesting – and where most CTO conversations I have still miss the point. The common assumption is that AI learns “code” from GitHub. That is technically true but deeply incomplete. What AI systems actually absorb is something far richer: the relationship between intent and implementation.

A commit message that reads “fix edge case in authentication flow when user has expired token” paired with a fifteen-line diff teaches a model not just syntax, but causality. The issue thread that preceded it, the review comments that shaped it, the test that was added afterward – together, they represent a chain of engineering reasoning that no textbook ever captured at scale.

This is fundamentally different from learning from documentation. Documentation describes what code does. Repositories reveal how engineers think about what code should do, why it changes, and under what conditions decisions get revisited. The difference is the difference between reading a law and watching a courtroom.

The Next Evolution: Repos as AI-Native Artifacts

Here is where we stand at an inflection point that most engineering organizations have not yet grasped. If repositories are already the de facto training substrate for AI, the logical next step is to design repositories with that fact in mind. Not reactively, not accidentally – but intentionally.

In the coming years, we will see repositories evolve from pure version control archives into structured knowledge bases that explicitly address AI agents as consumers. This means several concrete developments that are already beginning to emerge in practice.

The first is the emergence of a dedicated specification layer. Today, most codebases contain implicit intent buried in comments, naming conventions, and tribal knowledge that lives only in the heads of the engineers who wrote it. Tomorrow’s repositories will carry explicit machine-readable specifications – linked directly from the code they describe – that articulate not just what a module does, but what it is trying to achieve and what constraints govern its evolution. Formats like OpenSpec and similar frameworks are early experiments in this direction.

The second shift is what might be called the Intent Layer. Beyond the specification of individual components, future repositories will carry structured metadata that describes the reasoning behind architectural decisions. Why was this approach chosen over the alternatives? What trade-offs were consciously accepted? What assumptions does this design rely on? This is the kind of context that AI agents need to reason correctly about a codebase – not just to generate code that compiles, but to generate code that fits.

The third development is the rise of agent-aware commit protocols. If AI agents are both reading and writing to repositories – which they already are in many of our development pipelines today – the commit structure itself needs to evolve. Automated commits should carry provenance metadata: which model generated this, from which specification, against which test harness, with what confidence. Human commits will increasingly need corresponding context flags that distinguish deliberate design choices from pragmatic workarounds.

The Strategic Implication Nobody Is Talking About

There is a competitive dimension here that deserves more executive attention than it currently receives. Organizations that deliberately enrich their repositories with machine-readable intent and specification data are not just improving their own AI-assisted development workflows. They are producing higher-quality training data for the next generation of models. If open-source development continues to feed the pre-training pipelines of frontier AI systems, then the quality of the reasoning encoded in public repositories will shape the quality of the AI that the entire industry relies on.

This creates an asymmetry: companies that treat their internal codebases as structured knowledge assets – not just as source code archives – will build internal AI capabilities that reflect higher-quality reasoning. The gap between organizations that have thought seriously about repository architecture as an AI substrate and those that have not will become a measurable capability difference within this decade.

Git was never built for machines. But machines have made themselves at home, and now the question is whether we redesign the house accordingly.

The answer, for any organization serious about AI-driven development, is yes. And the time to start is now – not when the next model generation arrives, but before it does, while there is still time to shape what it learns from you.


This post is part of a series on the structural shifts in softwawe development brought on by AI integration. Previous entries covered specification-driven development and multi-agent orchestration in enterprise codebases.

The 10x Developer Myth Is Over – And AI Killed It


Every industry has its mythology. In software development, the most persistent one is the 10x developer. The idea that certain individuals produce ten times the output of an average engineer. That somewhere out there is a person who, given the same problem and the same tools, simply delivers an order of magnitude more than everyone else. I have been in this industry for over thirty years. I have hired hundreds of engineers. I have worked alongside many extraordinary ones. And I want to make an argument that most people are not yet ready to hear: the 10x developer, as a concept and as a hiring strategy, is over.

Was the myth ever real?

To be fair, there was something to it. The original research goes back to a 1968 study by Sackman, Erikson and Grant that found dramatic variance in programming performance across individuals. Later studies confirmed that top performers could indeed outpace average ones by significant multiples on certain tasks. The variance was real. It came from a combination of deep domain knowledge, fast pattern recognition, intimate familiarity with the codebase, and the kind of instinct that only accumulates over years of hard-won experience.

But the myth also generated consequences that were never healthy. Star developer worship. Knowledge hoarding as job security. Teams with a bus factor of one. Engineering cultures where a handful of individuals became irreplaceable and knew it, and occasionally leveraged that position in ways that were damaging to everyone around them. I have seen this pattern destroy more than one team. The 10x developer was real, but the culture built around chasing that individual was often toxic.

The lone genius model of software development is being replaced by something more interesting: distributed capability, amplified by AI.

What AI actually does to the productivity distribution

When I look at data from teams that have genuinely adopted AI coding tools – not as a toy, not as a demo, but as a core part of their daily workflow – the productivity distribution changes in a way that is structurally important. The bottom of the distribution rises significantly. Developers who previously struggled with boilerplate, with unfamiliar frameworks, with the cognitive overhead of context switching, now have a capable assistant closing those gaps in real time.

The top of the distribution also rises, but proportionally less. The senior developer who already moved fast moves faster. But the gap between the senior and the junior – the gap that the 10x myth was built on – narrows considerably. A developer with two years of experience, working with a well-configured AI coding environment and a clear specification, is producing work today that three years ago would have required five years of experience to produce. I have observed this directly, and the numbers are not subtle.

This is the democratization of execution. And it is happening faster than most organizations have internalized.

What still differentiates? The things AI cannot compress.

I want to be precise here, because the argument is sometimes misread as “all developers are now equal.” That is not what I am saying. What I am saying is that the dimensions that previously drove the 10x differential – typing speed, syntax recall, knowledge of obscure APIs, ability to hold large amounts of code in working memory – are being compressed by AI. Those were always somewhat accidental measures of value anyway.

What remains genuinely scarce, and what AI does not currently compress, is judgment. The ability to recognize that the technically correct solution is wrong for this business at this moment. Domain knowledge deep enough to spot when the AI-generated code is plausible but wrong in a way that will only manifest six months later under production conditions. System thinking that understands how a change in one component propagates to parts of the architecture that are not immediately visible. The ability to write a specification that is precise enough to drive correct AI output on the first attempt rather than the fifth.

These are the dimensions that matter now. They are also, interestingly, dimensions that were always present in the best senior developers but were often obscured by the noise of raw execution speed.

Speed of typing versus clarity of thinking. The second is now the bottleneck

So what does this mean for hiring?

It means the interview process most companies still run is measuring the wrong things. Whiteboard coding under time pressure tests a form of performance that is becoming commoditized. LeetCode exercises optimize for pattern recall that AI can now provide on demand. These processes were always a proxy for what we actually wanted – problem solving ability, communication clarity, system intuition. They were proxies because we had no better measurement. We should replace the proxy, not defend it out of habit.

What I would measure instead: How does this candidate think through an ambiguous problem? Can they write a precise specification from an imprecise requirement? How do they evaluate AI-generated output – do they review it thoughtfully, or do they accept it uncritically? How deep is their domain knowledge in the areas that matter for your product? How do they communicate technical decisions to non-technical stakeholders?

These questions do not fit well into a two-hour coding interview. But they predict performance in an AI-assisted development world far better than any algorithm challenge.

And compensation? And team design?

Compensation models built around the 10x mythology created enormous salary variance in engineering. Some of that variance reflected genuine scarcity of specific knowledge. Much of it reflected the leverage that star performers held in organizations that had allowed single-point dependencies to develop. As AI redistributes execution capacity, the leverage shifts. The knowledge hoarder loses power. The system thinker and domain expert gain it.

For team design, the implications are significant. The argument for large engineering headcounts was always partly about raw implementation capacity. If AI increases per-developer output substantially, the optimal team size for a given amount of work changes. But the answer is not simply to run the same team smaller. It is to run a different kind of team. Fewer people doing pure implementation. More people doing specification, review, domain modeling, and AI orchestration. The roles look different. The skills required are different. The management model is different.

Organizations that reduce headcount as their only response to AI productivity gains will discover they have also reduced the judgment capacity they need to direct the AI effectively. The teams that will win are those that redesign around the new bottleneck, which is not implementation anymore.

The end of a mythology, and what replaces it

Mythologies exist for a reason. The 10x developer myth gave organizations a simple mental model for why some teams were dramatically more productive than others. It gave individual developers an aspiration and a career ladder. It gave the industry a way to justify enormous compensation variance. All of these are real needs, and they do not disappear when the myth dissolves.

What replaces it, I think, is something more honest and in some ways more interesting. The most valuable developer in the next five years is not the fastest coder. It is the clearest thinker who also knows how to direct machines. That is a combination of human skills – domain knowledge, communication, judgment, systems thinking – with a new technical competency: the ability to work effectively with AI as a collaborator rather than a tool.

That developer exists in every organization today, often not in the role you would expect. Sometimes it is a domain expert who never wrote much code but now, with AI assistance, is producing remarkably precise and useful software. Sometimes it is the thoughtful mid-level engineer who was always slower than the star performers but whose output had fewer bugs and required less rework. These people are about to become significantly more valuable, and the organizations that recognize this early will build better teams for the next decade.

The 10x developer had a good run. What comes next is more interesting, and more human.

From Procedural to Intent – The 35-Year Arc of Programming Paradigms


In the early nineties, when I started my career in IT, writing software meant writing every single instruction by hand. C was king. You told the machine exactly what to do, byte by byte, pointer by pointer. There was beauty in that precision, and also a brutal limitation. The mental overhead consumed enormous human energy, and most of it was wasted on mechanics rather than meaning.

The arc of programming abstraction – from machine instructions to human intent. Each decade, one less layer of mechanical translation.

Did Object Orientation solve the problem?

Object orientation promised salvation. Java and C++ shifted the abstraction one level up. Suddenly we talked about things rather than operations. Classes, interfaces, polymorphism. In theory this modelled the real world better. In practice it generated enormous amounts of boilerplate, heated debates about design patterns, and the rise of the “architect” as a separate species. The productivity gains were real but also came with new complexity layers. We traded one set of problems for another.

Then came Python, and with it the age of expressiveness. Write less, mean more. The scripting world invaded enterprise development. Ruby on Rails showed that a small team could build in weeks what previously took months. The abstraction level climbed again.

So what is the next step?

Looking at where we are in 2025, I believe we are witnessing the most fundamental shift in the entire history of programming. The abstraction is no longer about how to express logic in a language. It is about expressing intent in human language, and letting a model translate that into executable code. This is not an incremental evolution. This is a paradigm change comparable to the jump from assembly to high-level languages.

The trajectory is clear: from machine instructions to structured code to objects to functions to natural language. Each step removed one layer of mechanical translation from the developer’s mind. AI removes the last one.

Intent becomes executable. The translation layer that once required years of training is now handled by language models

What this means for teams building software today is profound. The question shifts from “who writes the best code” to “who formulates the best intent.” The language model handles the rest. Developers who understand this shift will adapt. Those who think it is just a fancy autocomplete will be left behind, and probably soon.

The 35-year arc of computing has always been about raising the level of abstraction. We are now at the top of that arc, and the view is remarkable.

The Next Abstraction Layer: From Procedural to AI-Driven Development


Since the early days of computing, software development has followed a very consistent pattern: every decade or two, a new paradigm emerges that raises the abstraction level by one significant step. We moved from punch cards to assembler, from assembler to C, from C to object-oriented languages like Java and C++, and then from there to higher-level scripting and systems languages like Python and Rust. Each of these transitions shared the same fundamental characteristic — they allowed developers to think less about how the machine does something, and more about what needs to be done.

Does AI break this pattern, or does it continue it?

In my view, it continues it — but at a scale and speed we have not seen before.

Generated with Google Gemini

When C appeared in the early 1970’s, it was a revolution. Programmers could abstract over registers and memory addresses with structured control flow. With Java and C++ in the 1990’s the next step happened: objects, encapsulation, inheritance. The programmer could now model the world in concepts rather than instructions. A Car object had methods and state. The machine details where moved even further down. Python and its contemporaries took this further, removing memory management entirely and allowing rapid prototyping that would have taken weeks in C to be done in hours.

Each of these epochs shared one common denominator — the developer still wrote every line, still translated intention into instruction, just at a higher level.

This is exactly the step AI is taking now.

The translation from intention to implementation was always the developer’s core job. You had an idea, you had a requirement, and your skill was to bridge that gap in code. LLMs are now beginning to perform this translation automatically. Not perfectly, not without oversight, but in a direction that is unmistakable.

We are moving from imperative thinking — tell the machine step by step what to do — to intentional thinking — tell the system what outcome you want. The shift is profound. It is not about writing less code, it is about changing who writes it and at what level of abstraction humans need to operate.

Is this the end of the developer?

I would argue no, but the role will shift dramatically. The same way the introduction of C did not eliminate hardware engineers, but changed what skills were needed and where the value was created. The developers of the next decade will be architects of intent, not writers of loops. The skill set moves from syntax mastery and algorithmic thinking towards domain expertise, system design, and the ability to validate and guide AI-generated output.

Generated with Google Gemini

From my personal experience leading large engineering teams, I already see this shift in practice. The question is no longer “can you write the code?” but “do you understand the system well enough to judge the code that was generated?” Quality, correctness, security and maintainability remain a human responsibility. The generation part is moving to the machine.

Where are we today?

We are probably in the MS-DOS phase of this transition. The tools are real, the output is impressive, but the workflow, the standards, the guardrails and the enterprise-grade reliability are still being developed. Companies that understand the abstraction shift happening now will be the ones architecting the platforms of the next decade. The others will be the ones migrating legacy prompt-less codebases in 2035.

The lesson from history is clear: abstraction always wins. The only question is how fast you adapt.