4 ms·
> What keeps the software alive are the programmers who have an accurate mental model (theory) of how it is built and works. That mental model can only be learn
by NordSteve 4y ago
> What keeps the software alive are the programmers who have an accurate mental model (theory) of how it is built and works. That mental model can only be learned by having worked on the project while it grew or by working alongside somebody who did, who can help you absorb the theory. Replace enough of the programmers, and their mental models become disconnected from the reality of the code, and the code dies. That dead code can only be replaced by new code that has been ‘grown’ by the current programmers.
While it's possible that there are systems out there that can't be understood, it's plainly false that - to paraphrase - code dies and must be replaced when the original developers are gone.
A couple examples from my direct personal experience:
1. I work every day on code that's 20-30 years old, in use in production by hundreds of millions of people every day. There's no one around who worked on it originally. And yet it works, 100s of pull requests a day, and customers continue to pay us to use it.
2. I took on a volunteer project this fall, working on a ~million line distributed system that runs on clients at about 30 sites and integrates with 3 cloud services. No original developer is working on it. For the client code, it took me about a day to understand how it works and make meaningful changes.
- compiler-guy 4y agoFor both of these cases, the article author would say that the original developers have been replaced by newer developers who have acquired the theory. The solution to the problem, at least according to the article, isn't "no churn ever", but "low enough churn that the newer developers acquire an accurate mental model of the system."
- marmetio 4y agoThe author starts with the implicit assumption that the companies in the target audience will not be able to restart the metaphorical engine, which is why they recommend letting it idle. They tactfully don't call attention to the fact that not everyone has that problem.