The Lindy effect in software
Table of Contents
The longer a piece of clothing has been in trend, the safest it is to say it will last and stay in trend.
In the same fashion, if a book has been read through the last decades or centuries, it is unlikely it will become irrelevant soon, especially compared to the more recent books.
These are explained by a theory I find fascinating, the Lindy effect. It is a concept that suggest that the longer something has already existed or survived, the longer it’s expected to continue to exist or survive in the future.
What does the Lindy effect in software could mean ? #
Transposing it in software could mean that the longer a technology has been around, the most robust it could be and hence the better it is to bet on it in comparison to recent trendy tech.
Yes, I get it, software is not that old in the time of humanity, or at least not as old as watched or books. It IS great that both hardware and software are both evolving, and we obviously have to embrace change (those new Apple Silicon processors are indeed very sweet)
That doesn’t mean that this new tech that comes up with some groundbreaking benchmark is THE think you should migrate all your applications to, obviously not.
To be more explicit, when you choose boring tech, the benefits you get are among the followings:
- Stability and Reliability: Older technologies and programming languages that have withstood the test of time often offer greater stability and reliability. Bugs and vulnerabilities have been discovered and addressed over the years, making them more robust choices for critical applications.
- Mature Ecosystem: Established technologies typically boast a well-developed ecosystem with extensive documentation, libraries, and community support. This wealth of resources can be invaluable for software projects, streamlining development and troubleshooting processes.
- Predictable Performance: Older technologies have been battle-tested in numerous real-world scenarios, making their performance characteristics more predictable. This predictability is essential when building systems with strict performance requirements.
- Industry Acceptance: Technologies that have endured over time often enjoy widespread industry acceptance. This means that professionals proficient in these technologies are easier to find, making it simpler to build and maintain software using these established tools.
- Reduced Risk: Novelty in technology comes with inherent risks, such as undiscovered bugs, scalability challenges, or uncertain long-term support. Older technologies have a proven track record, reducing potential risks associated with adopting the latest fads.
The Lindy effect in software The longer a tech has been around, the more robust it is seen as compared to more recent ones, we often talk about a technology’s maturity The C language SQL has been around for a while, https://antonz.org/fancy-ql/ JS libraries seem to come and goes
I am personally all for going with Go instead of Java for an enterprise grade backend, but I understand how big software companies play the safest bet by choosing the latter, as they have been using it for decades.
SQL has been around since 1989, and it won’t leave us anytime soon (At least, I hope it has not when you read this).
C itself has been created in 1972, and people still using it in 2023 makes me confident in its projected relevance through time, whether other low level programming languages rise or not.
Applying the Lindy effect to software engineering #
This concept could become handy for software engineers to find to strike a balance between adopting new technologies and embracing time-tested ones. Some practical steps to incorporate this principle into your development process could be:
- Prudent Adoption: Evaluate new technologies carefully before incorporating them into your projects. Consider the potential benefits, risks, and long-term viability of the technology.
- Stick to Proven Foundations: Rely on established technologies and best practices for the core components of your software. These foundations will provide stability and form a reliable backbone for your application.
- Plan for Longevity: When designing software architectures, consider the impact of technology choices on the project’s long-term viability. Prioritize maintainability, compatibility, and sustainability.
- Embrace Evolution, Not Revolution: Instead of constantly rewriting or overhauling your software, aim to incrementally improve and update it over time. Evolutionary changes are often more manageable and less prone to introducing major issues.