Well he spelled out the motivations in numerous early presentations so I don't think he'd take kindly to the implication they were BS.
I remember a funny quote along the lines of, he felt the concurrent software he'd already written in C++ and Java had required "He-Man" levels of perspiration to actually get correct.
Fintech benefits from concurrency, immutability and all, so obviously there is much more nuance to "why fintech uses Clojure".
Like anything, the middle tier should be largely stateless anyway, so using Clojure atomicity primitives in business logic may even be an anti-pattern.
Rich has written about the history and motivation behind Clojure here: https://dl.acm.org/doi/pdf/10.1145/3386321
But why speculate on Rich's motivations? He has spoken extensively on the subject. (Hint: It's not because he was bored.)
Not sure if Clojure is that special here, it's probably the same with other appealing programming languages that have cultures distinct from default enterprise PL cultures.
That aside, I got into Clojure because churn everywhere else is exhausting. It's pragmatic with interop, you can use with the new shiny thing without leaving your garden or losing your sanity.
EDIT: you must have forgotten how bad (mostly) it is everywhere else.
I find solving business problems exciting. I didn’t really get into this business to purely write code or only work with novel technologies. I got into to empower others to do things they otherwise wouldn’t, couldn’t, or didn’t think to do.
To me, the language I work with is such a small slice of the pie. The problems don’t even have to be novel, I simply like approaching a problem and solving it well, and hearing the feedback about how it helps.
I need the money to get by, but at the same time, it’s hard to get enthusiastic about writing yet another RPC service or RESTful CRUD. This is partly why ketamine-fueled principal engineers often decide to rearchitect the universe, add Rust to the network layer where it makes no sense, or go ham with SWIG interfaces.
A few things that have worked for me: switching stacks. I started in data science, moved to Python/Node backends, and then switched to distributed systems and databases using Go. Switching teams and companies can help, though more often you just end up trading one bad culture for another.
This is a hard problem to solve, and boredom is real. But the solution isn’t bringing in some funky, untested stuff just for the lolz. Too many teams allow engineers to make the stack look like a mandrill’s face and then suffer the consequences.
clojure's data structures for example enable simpler concurrent work on stupid enterprise data.
however.
I've seen favorite hot fancy XYZ bit rot in large enterprise code bases. the oh so bored original author long gone. boring architecture documentation missing. business critical underdocumented unmaintainable genius code. and I'll kneecap every greenhorn that tries to add such bored kid complexity in my vicinity.
get me right: rust and clojure and friends are great tools and you'll have my back if and where they are needed and add value. then we'll go all in. but no bored kid complexity. go and find yourselves some niche product companies, non enterprise, with hard tricky problems to solve and do genius programming there.
I’d rather work on an interesting technical problem in Java than a boring one in Haskell.
daveliepmann•9h ago
I notice too that a noticeable number of people pick up Clojure because it's new and shiny. As a longtime Clojurian I find that attitude can be disappointing to run into, like when you realize a growing friendship will die because they're not serious about living in your city.
I don't claim to know the man but the reasons Rich wanted Clojure are quite concrete, well documented, and rational. Java programs of the time were a particularly heinous form of OOP; we should not be surprised that a clever programmer would grow a preference for a dynamic, functional-first style. He found lisp superior (in interactivity, expressiveness, yadda yadda) and wanted to use it professionally.
To work in lisp required delivering something indistinguishable from a JAR (or other mainstream proglang executable). He had the realization that without immutable data structures baked into the language he'd always be subject to Other People's State.
If you think about these points logically they lead pretty straightforwardly to creating a (pragmatically) functional, dynamic, hosted lisp.
edem•8h ago
sesm•8h ago
dunk010•7h ago
sbjs•5h ago
nextos•5h ago
It's very interesting to go through the bookshelf he read during his sabatical. He was inspired by many languages aside from CL, including Mozart/Oz, AspectJ, and Prolog.
The bookshelf list was originally on Amazon, committed by Rich, but now behind a login wall. However, a Goodreads clone is easy to access: https://www.goodreads.com/list/show/137472.Rich_Hickey_s_Clo...
zerr•5h ago
slowmovintarget•5h ago
epolanski•4h ago
I know few people that made it in shiny businesses (Serie A and Champions League players like Fabio Liverani and Simone Pepe, or Massimiliano Rosolino swimming gold metal at Olympics) and they all absolutely either hated or found 99.9% of their career an endless marathon of mundane boring activities.
I'm not saying there aren't plenty of exceptions of people that like their job, and jobs that may make it easier, but it looks to me that most of people find their job mundane and boring most of the time.
zerr•5h ago
daxfohl•4h ago
But still, "why not"? The first "alt-lang" I remember was "boo", on the dotnet platform. IDK if they actually meant to popularize it, but it had some cool features C# (and J#) didn't have, so, why not?