3 ms·
> The death of a program happens when the programmer team possessing its theory is dissolved. I really like this quote. And if we look at what is generally cal
by nzach 2y ago
> The death of a program happens when the programmer team possessing its theory is dissolved.
I really like this quote. And if we look at what is generally called "legacy software" it mostly fits pretty well with this description. And I agree with the idea that to have a proper living program you need people with experience in this specific domain, consequently if you have too much churn in your team your programs can die.
But I think this only one side of the story, and probably its the side we have least influence over.
Another component for this problem is how easy is to understand a program. Imagine your program is distributed and you need a consensus algorithm. In a broad sense both Paxos and Raft are good solutions for your problem. But by choosing Paxos you are making things harder for anyone who needs to join this team in the future.
And this is just due the fact that people generally have a hard time understanding how Paxos work. Sure, there are several techniques one could use to limit the impact of choosing Paxos can have over a program. Its not that hard to isolate networking behind an interface and treat Paxos as an "implementation detail". But the reality is that predicting what things should be completely isolated is pretty hard, especially if your prediction needs to happen 5 years in advance. And when you don't properly isolate these things they spread all over your codebase.
This is why I think the metric "how easy is to explain this code?" is pretty important. If we want to create successful programs (which one way to measure would be "programs that outlive their original teams") we need to be mindful about how we structure our code. "Literate programming" is probably a good way to think about this, in the end of the day we are writing code for other humans to read and understand. If that wasn't important we could all be working with minified source files.