The Virtue of Finished Things
I received an email yesterday morning. It was a thank-you note for one of the open-source tools I created and maintain. The sender explained how useful the software was for their specific needs, and as always, this brought me an immense sense of satisfaction.
But at one point in the email, a question appeared - one that has become a recurring theme in the modern software world: "I notice there haven't been any new releases for about ten months. Should I consider the project abandoned?"
I decided to reply immediately: "No, it’s not abandoned. But it satisfies all my requirements, so unless there are bugs or new needs, I consider it 'complete'."
The person’s response was telling: "What do you mean by complete? Software is either in active development or it's abandoned. I’ve never heard of 'complete' software."
I started reflecting on how the very ideal of "completeness" has totally vanished from our lives. And on second thought, I wasn't surprised.
This doesn't just apply to software; it permeates every corner of our modern existence. There was a time when you bought a car, you owned it. Today, almost everyone leases or uses financing with a final "balloon" payment - often so inconvenient that people find themselves taking out a new loan after just a few years. The result is that we never truly own our cars, and they are constantly plagued by automatic software updates that, in some cases, break things that previously worked just fine.
When we bought an appliance, we installed it. Barring a breakdown, it stayed exactly as it was for the rest of its (often long) life. Today, an immediate software update is mandatory the moment you plug it in. Fail to do so, and essential features won't work. A modern washing machine often comes with only two or three built-in programs; the others must be downloaded from the "cloud" - sometimes for a fee. If you don't, you can't fully use what you already paid for. I don't wash my clothes the way I want anymore; I wash them the way the manufacturer’s questionable cloud dictates. And this continues only as long as the manufacturer decides I am allowed to wash my clothes at all.
Before everything was "always online", the concept of complete software was common. Yes, new releases happened from time to time, but they weren't taken for granted, and sometimes years would pass between them. The premise was clear: software was released to solve a specific problem. Distributing updates wasn't easy, so it had to be reliable from the very first release. It couldn't come out riddled with bugs - that would have meant a loss of face (or even bankruptcy) for the producer.
When a new release or a new product did come out (be it software, an appliance, or a car), the manufacturer had to entice the user by focusing on what was actually new - on what new problem it would solve. Consumable goods eventually need replacing, but for durable goods, the battle for the customer's attention was more complex. I remember buying many books, VHS tapes, CDs, and DVDs during sales, and then spending the following months reading, listening, or watching them. The beauty of today's streaming is choice. The tragedy is that the moment we stop paying, we are left with nothing.
The "disposable" has become the norm for everything. Quality has plummeted - even in our relationships - because we are always searching for something "new". And yes, I say "we" because I include myself in this chase for dopamine - that intense, albeit brief, pleasure of something new. Even when there is almost nothing new about it. Even when I didn't need it.
Just as with my relationships, I like to take care of my things. Making my wife laugh, sending a message to a friend, painting the house. Sometimes I rescue old objects and give them a new life. Behind me sits a cabinet - I bought it for next to nothing, and it's incredibly useful. Ten years ago, with some hours of work, I completely restored it. It’s beautiful, sturdy, and perfect. It had been thrown away by someone who considered it old and outdated, only to replace it with a fragile piece of furniture from a well-known chain. To each their own, sure. But taking care of what you own is an act of respect.
I replied to that email. Yes, the software is currently complete. I will take care of it. I will ensure that bugs are fixed. And if I ever have new requirements, I will resume development. But as of today, it has solved my problem and it works excellently. Why should I add useless "stuff" just for the sake of expanding it? For whom? For what? I gain nothing from it. I don't have to sell it. And even if I did, I would rather sell an effective, working product than a constant, never-ending process of fixing something that is perpetually buggy and incomplete.
Not "continuous integration", but "boring software" that does its job.
And this is perfectly aligned with my business ethos: I would rather stop growing indefinitely and take care of my current clients than start hiring incompetent people just to make numbers and provide a service that doesn't meet my expectations.