Complete with rewriting everything in the trendy memory safe quasi-portable language that is faster than (poorly written) C in your personal microbenchmarks.
I work in enterprise, and java still reigns supreme. You see some (very limited) cracks coming from other jvm languages, but that's all. Nobody talks about Rust, rarely about C.
Sitecore example you can easily check, Sitecore XP/XM is still .NET Framework, all new products usually use other programming stacks as extension SDK, mainly Next.js or plain JS/TS.
People have been rewriting software in better languages ever since there was more than one programming language. Eventually people will be rewriting Rust programs in GoombaLang or whatever. Isn't this what we want?
I don't think this is what we want. We want people to maintain and incrementally improve existing software and tooling and not rewrite and change things all the time.
The point of the article is pretty much that you can pick stable technology instead of joining the treadmill of rewriting in whatever the new thing is. When people are rewriting rust programs in GoombaLang, C will still be around. When people rewrite GoombaLang into SmurfLang, C will still be around, etc
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
The Lindy effect is ultimately a kind of momentum. If that's the case, it seems like it's not the language itself, but rather the 'contracts,' 'interfaces,' and 'standards' that survive longer than the specific implementations a language provides.
Looking at the examples of Lindy that the OP mentioned, they're mostly at the infrastructure level. That's probably because many systems have been built on top of them, and the cost of replacing them is high.
On the flip side, things with weak Lindy effects are likely frontend frameworks or specific libraries. CSS methodologies are a good example of that.
In other words, the deeper something is, the harder it is to change, and as long as that deep language and its ecosystem aren't replaced, it will persist. As a counterexample, Fortran comes to mind—it's still being used today. Fortran has also evolved to exist beneath NumPy and Julia.
Ultimately, I think the core isn't the Lindy effect itself, but rather how many people you can attract commercially, and how many jobs you can create based on that.
In that sense, I think the next-generation language will succeed when it's used to build new infrastructure, and when the cost of refactoring becomes exponentially high. Right now, something that's growing similarly strong is CUDA. Personally, I'm always waiting to see what that language will be.
If we had followed this more seriously in the past, we would have still stuck on to writing C for enterprise applications and had way too many memory bugs. Aren’t we glad there was a demographic who said no to C and brought the revolutionary idea to use Java instead?
Couldn’t a Lindy enthusiast have gone “umm but isn’t Java too new and shouldn’t we just stick to C which is well trodden and understood??”
It’s easy to write sloganeering articles. But it doesn’t tell me anything specific.
Invoking Lindy is just bias to status quo. I prefer bias to progress but respecting chestertons fence.
I think the Lindy effect is less about making strong arguments about which tool to use in debates, and more about calling out and explaining a real life phenomenon.
I've invoked it in my job mostly to explain to younger developers why learning vim keybindings+terminal git usage while they have the most plasticity is most likely going to be a good bet for the remainder of their career, as editors, operating systems and associated keybindings & UI will change around them much more often than those fundamentals.
It's not a guarantee, and i wouldn't bet my entire business on the Lindy effect, but it is worth reflecting on it as an explanation of something that is paradoxical or not obvious.
You should learn internals as well, it's not mutually exclusive :)
But at some point you have to teach your fingers some movements that will ideally make you fast on as many machines, as many operating systems, as many editors and as many keyboards for as many years of your career as possible.
> Couldn’t a Lindy enthusiast have gone “umm but isn’t Java too new and shouldn’t we just stick to C which is well trodden and understood??”
I think people often misrepresent history because they view it with the benefit of hindsight. People who chose to use Java didn't do it to embrace a revolutionary idea, they were embracing an evolutionary one. It seemed like a natural optimization step, rather than a clean slate.
Most Jave devs were proficient C devs who found the idea of a platform independent C quite appealing.
That's the Lindy effect. C (the essence of it) survives in Java and right up to JS/python/go.
38 comments
[ 3.8 ms ] story [ 24.9 ms ] threadComplete with rewriting everything in the trendy memory safe quasi-portable language that is faster than (poorly written) C in your personal microbenchmarks.
All the job postings I see are for C++ (Annoyingly. Fortran is better). Or Python obviously.
Enterprise I've seen, all europe, deliberately vague: Banking, Telecoms, Trains, Insurance
I work in a polyglot agency, and the RFPs asking for .NET have gone down, even key enterprise products like Sitecore, have moved away from .NET.
Sitecore example you can easily check, Sitecore XP/XM is still .NET Framework, all new products usually use other programming stacks as extension SDK, mainly Next.js or plain JS/TS.
Rewrite the open source SQLite in Rust under an MIT license[2].
Of course, once you complete the core product, there is the extended ecosystem to consider.
[1] https://turso.tech/blog/introducing-limbo-a-complete-rewrite...
[2] https://github.com/tursodatabase/turso
Looking at the examples of Lindy that the OP mentioned, they're mostly at the infrastructure level. That's probably because many systems have been built on top of them, and the cost of replacing them is high.
On the flip side, things with weak Lindy effects are likely frontend frameworks or specific libraries. CSS methodologies are a good example of that.
In other words, the deeper something is, the harder it is to change, and as long as that deep language and its ecosystem aren't replaced, it will persist. As a counterexample, Fortran comes to mind—it's still being used today. Fortran has also evolved to exist beneath NumPy and Julia.
Ultimately, I think the core isn't the Lindy effect itself, but rather how many people you can attract commercially, and how many jobs you can create based on that.
In that sense, I think the next-generation language will succeed when it's used to build new infrastructure, and when the cost of refactoring becomes exponentially high. Right now, something that's growing similarly strong is CUDA. Personally, I'm always waiting to see what that language will be.
Couldn’t a Lindy enthusiast have gone “umm but isn’t Java too new and shouldn’t we just stick to C which is well trodden and understood??”
It’s easy to write sloganeering articles. But it doesn’t tell me anything specific.
Invoking Lindy is just bias to status quo. I prefer bias to progress but respecting chestertons fence.
I've invoked it in my job mostly to explain to younger developers why learning vim keybindings+terminal git usage while they have the most plasticity is most likely going to be a good bet for the remainder of their career, as editors, operating systems and associated keybindings & UI will change around them much more often than those fundamentals.
It's not a guarantee, and i wouldn't bet my entire business on the Lindy effect, but it is worth reflecting on it as an explanation of something that is paradoxical or not obvious.
For prescriptive, I would use Chesterton's Fence https://fs.blog/chestertons-fence/
But at some point you have to teach your fingers some movements that will ideally make you fast on as many machines, as many operating systems, as many editors and as many keyboards for as many years of your career as possible.
Good Tools Are Invisible
https://news.ycombinator.com/item?id=48858121
In my opinion, software tools are different from software libraries.
Knowing RDBMS concepts and SQL is one thing, vim and git are something else altogether.
I think people often misrepresent history because they view it with the benefit of hindsight. People who chose to use Java didn't do it to embrace a revolutionary idea, they were embracing an evolutionary one. It seemed like a natural optimization step, rather than a clean slate.
Most Jave devs were proficient C devs who found the idea of a platform independent C quite appealing.
That's the Lindy effect. C (the essence of it) survives in Java and right up to JS/python/go.
Under the section -
"Applying the Lindy effect to software engineering"
The suggestions are -
- Prudent Adoption
- Stick to Proven Foundation
- Plan for Longevity
- Embrace Evolution, Not Revolution