If you want to leave a lasting legacy—some durable remnant of your brief existence that will ripple forth into the future and leave an imprint on hearts and minds of future generations—you might be wise to dedicate your life to pursuits other than the creation of software. Writing, painting, architecture, scientific research, building a business, perhaps? If you’re talented, dedicated and lucky, all are more likely to get your name in the history books and solidify a legacy more than making software.

Software is ephemeral. It is building sand castles in the air, forever shifting, changing, eroding. The life span of most software is at best a few years to a decade, and much of what endures is constantly evolving, built and maintained by teams of humans who remain forever hidden to the end-user, a rotating cast of otherwise invisible programmers who come and go.

This battle with entropy has nothing to do with the nature of software itself, and everything to do with its supporting socio-technical systems. With the right storage medium, code can persist in stasis nearly indefinitely. “Bit rot” is thus a bit of a misnomer, because while it is true that electronic signals are ephemeral and decay, code doesn’t rot. Instead, the systems that support it—both hardware and software—change out from underneath it. Dependencies change or become deprecated, remote APIs start responding with 404s, operating systems update, CPU architectures change or are no longer manufactured.

On the surface, all of this sounds so frustrating, so existentially futile. Which begs the question: Why do it? Why make software?

Of course, there are multitudes of reasons to pursue things beyond leaving a legacy. Reasons less egotistical, more altruistic or virtuous, perhaps. Many people work in crafts or occupations that involve the production of ephemeral goods—cooking, for instance. And everyone comes to the practice of software making for reasons of their own. Some for the technical challenges and endless series of intellectual puzzles. Some for the joys of making something useful and sharing it with the world. Some for the money.

But software isn’t just a digital artifact; it’s also a lever for shifting human thought and behavior. In their book Understanding Computers and Cognition, Terry Winograd and Fernando Flores write:

We encounter the deep questions of design when we recognize that in designing tools we are designing ways of being.

I think about this quote a lot, about how the design of a tool unlocks new human capabilities, and about how changes in our capabilities influence both how we see and how we act in the world.

And this, I believe, is my own personal reason for making software. I want to help bring about new ways of being in the world, however small. New ways to think. New ways to create. New ways to share ideas with others. Sure, the code I write or help shepherd into the world will one day fall into disuse and disrepair, inevitably lost to the darkest pits of git revision history until that, too, is deleted. But what may remain—what has the slightest shred of hope of being carried forth—are the small ideas which that code embodied, ideas that I hope will be part of the grand conversation of what it means to be human long after I’m gone.