the sun is setting behind some trees

The Version Control

The developer committed their changes to the repository.

The senior developer observed, “You have saved your work. But what have you lost?”

The developer was puzzled.

“When you commit to one path,” the senior continued, “what happens to all the paths not taken?”

“Are they gone, or do they exist in the space between commits?”


Dwelling in the Question

This koan invites us to contemplate the nature of choice and possibility in our development practice. When we commit code, we create a concrete artifact, a snapshot of our decisions at a particular moment. Yet the senior developer’s question points to something more profound: every commit represents not just what we chose to build, but an infinite array of alternatives we chose not to pursue. The unwritten code, the unexplored approaches, the refactorings we decided against—these exist in a liminal space, neither fully real nor entirely absent.

Consider how version control systems themselves embody this paradox. Git stores our history as a directed graph of commits, each one a universe of code frozen in time. We can branch, creating parallel realities where different decisions play out. We can revert, seemingly traveling backward to resurrect abandoned possibilities. Yet even with these powerful tools, we cannot capture the full scope of what might have been. The experimental function we deleted before committing, the elegant solution we glimpsed but didn’t pursue, the architectural decision we almost made—these hover at the edges of our repositories like ghosts.

The koan also speaks to the psychological weight of commitment in software development. Every merged pull request closes doors even as it opens others. The anxiety many developers feel before pushing code stems partly from this awareness that committing means choosing one reality over countless others. Yet this is also where the freedom lies: by accepting that we cannot explore every path, we free ourselves to fully commit to the one we choose.

Perhaps most importantly, this teaching reminds us that our uncommitted work, our local changes, our stashed experiments—these too have value. They represent the creative chaos from which our committed code emerges. The senior developer asks us to honor not just what we ship, but also what we leave behind in service of shipping. In acknowledging the paths not taken, we develop a more complete understanding of the path we’re on.

The question “Are they gone, or do they exist in the space between commits?” suggests that our unchosen possibilities continue to influence our work in subtle ways. They inform our future decisions, shape our understanding of the problem space, and sometimes return in unexpected forms. In this way, nothing is truly lost—it simply transforms, existing in the negative space that defines the positive shape of our code.