Software is more like a garden
When I started writing code professionally, I felt like a craftsman building a chair. In the morning, I’d show up to a clean workspace and craft code in the right shape to serve a practical purpose. As I gain experience, writing code feels more like tending a garden. It’s more fragile and personal than I expected.
The kind of code I write doesn’t exist in a vacuum. The ecosystem is always changing and adapting. Other people are constantly writing code: for operating systems; for cloud hosts like Google or Amazon; for open-source projects and frameworks. The benefit is that one person can produce an extraordinary amount, empowered by our collective effort. The downside is that code that is not nurtured and maintained stops running.
As a result, every software project needs someone to watch over it and water it now and again. Some codebases are more like succulents, and others are more like orchids, but they all have needs. Well-known computer security expert Moxie Marlinspike wrote about the growing burden of writing software in a blog post, saying, “As long as software requires such concerted energy and so much highly specialized human focus, I think it will have the tendency to serve the interests of the people sitting in that room every day rather than what we may consider our broader goals.” We’re increasingly wary of the motivations of the people who build our software because using software takes up more and more of our waking attention. It also meant that when I shut down down Rume, the app from my last startup, it would probably never run again.
Another difference between a chair and a garden is that most people intuitively understand how a chair is constructed and how to fix it if problems arise. Like plant-sitting for a friend’s garden, maintaining unfamiliar code is challenging. While best practices and standards exist, it’s not easy to be productive when parachuting into a codebase.
This makes the code I write more valuable to me than anyone else. We did a ton of great work at Rume, but now that we’re not building on it, the code’s value is depreciating. And we’re not the only ones. So much code, and thus human time, effort, and thought, is effectively trash instead of recycling.
While I’m still adjusting to the mental model, I think this is okay. Writing software might be the largest lever we have. A few people can genuinely impact millions or billions of others. WhatsApp,. as an extreme example, had fewer than 60 employees when Facebook bought it for $19 billion. Its Android app, which served over 1 billion people, was maintained by four people. And when they added end-to-end encryption, that billion people got it overnight. People can credibly do years or even months of work and create something that changes the world, so even if they have to throw away most of their projects, the net gain might be better for everyone.
I’ll probably always have some nostalgia for Rume, but maybe not all projects should be preserved. I bet I’m not the only one who was somewhat relieved when AOL finally shut down their instant messaging service, AIM, in 2017. No one needs to preserve the cringy conversations I had as a 13-year-old. Some things have outlived their time.
This lightly edited personal update from 2022 felt relevant to share more broadly.