← Writing

Durable and enduring software

I've been thinking a lot about durable and enduring software.

AI is changing pretty much everything about how we build and interact with software. It's now incredibly easy for anyone to build an app in a weekend, which is amazing, but it also means we're going to see an explosion of software built without much craft, taste, or thought about what happens after it ships.

I think this will make well-crafted software stand out even more, but there are two other things I've been thinking about:

Durable: Does the software actually work? Is it reliable, well-built, and able to handle real usage without falling apart?

Enduring: Will the software continue to work over time, even if the person who built it stops maintaining it?

The second one is particularly interesting to me. Historically, building software took enough time and investment that there was usually some intention to maintain it. Now someone can build something in a weekend, get a bunch of people using it, and move on to something else the following week.

We're going to see a lot of software that people start depending on, only for it to become unmaintained or disappear entirely.

I've been thinking about this while building Cue, a little note-taking app I recently made.

I intentionally built it offline-first. If I stop maintaining it tomorrow, stop paying the server bills, or just lose interest, the app will continue to work. Your data stays on your device, and you can spin up your own server to get syncing working again.

I think that's an important distinction. There's a difference between software that works today and software that's designed to keep working.

As software becomes easier and cheaper to build, I think we need to become much more thoughtful about which tools we actually depend on. And as builders, we should be thinking beyond just getting something shipped.