5 ms·
In my experience, the subsets of the community around clojure were one of the biggest problem with it. It's gotten better over the years, but circa 2016 - 2018
by d4mi3n 2y ago
In my experience, the subsets of the community around clojure were one of the biggest problem with it. It's gotten better over the years, but circa 2016 - 2018 it had a spike in popularity despite being very hostile to newcomers.
There was an almost apologist attitude towards rough edges or failure modes folks new to the community would fall into. I managed to work with it for a time despite that, but it left me with a bad taste in my mouth. It's really important to make your ecosystem and communities welcome to new users or they're destined to fade.
- bunderbunder 2y agoA somewhat similar thing I ran into is that existing Clojure code can be incredibly difficult to grok if you don't already know the language very well. Some of this comes from lisp's minimalist syntax, which makes it hard to even know what kind of thing you're looking at when you're encountering a new thing for the first time. But the problem is also compounded by some of Clojure's more distinctive (and powerful) features such as ad-hoc polymorphism and using maps to pass function arguments. The closest analogy from imperative languages that I can think of is another language that's famous for being incredibly productive in the hands of a skilled user, but whose code tends to feel kind of write-only: Perl.
- kazinator 2y agoIn Perl you have the dynamism, and the syntax. Evidently, 93% paint splatters, when OCRed, are valid Perl programs: https://www.mcmillen.dev/sigbovik/2019.pdf https://www.mcmillen.dev/sigbovik/2019.pdf I doubt that a similar thing is true for Clojure. Here, the only problem is that you don't know what the symbols and some of the notations mean. You can look at the unfamiliar syntax and know what is a child of what. Most operators are words you can search for.
- deleted 2y ago[deleted]
- slifin 2y agoIf I can get clojure storm running in my project then I find a lot of code incredibly straightforward Because there's a preference for just passing immutable data around the time travel debugger really helps me understand complex interactions
- crispyambulance 2y ago> ...had a spike in popularity despite being very hostile to newcomers. To be fair the community itself, as humans, was very welcoming to newcomers. Really super nice and helpful folks. If anything was "hostile" it was the dominance of emacs and very limited options for other tooling. That, and the horrifically unhelpful leaky abstractions in the stack trace when something went wrong. It's a big step, if you don't already know emacs to learn emacs (at a fairly advanced level) AND a new very different programming language. I see now there's a vscode option with Calva. I haven't tried it. Might do that someday. Really wanted to like this language!
- gleenn 2y agoCursive plugin for IntelliJ is a fantastic option, it's not free but it is excellent.
- aeonik 2y agoit's nice, but I used to write Java, and even getting IntelliJ setup on my laptop took a lot of fiddling with JVM versions and getting it to recognize my Clojure install. To this day, I will still have weird issues where Cursive won't run a project, and Emacs will. All that being said, I do really like Cursive.
- cess11 2y agoI use https://sdkman.io/ https://sdkman.io/ to manage JVM versions, have you tried that? I haven't used Cursive, maybe it does something weird, but in general IntelliJ seems to accept it just fine in my everyday work.
- ARandomerDude 2y agoclojure-lsp and clj-kondo work with any editor and are both excellent. https://github.com/clojure-lsp/clojure-lsp https://github.com/clojure-lsp/clojure-lsp https://github.com/clj-kondo/clj-kondo https://github.com/clj-kondo/clj-kondo I've always used (Neo)Vim with Clojure.
- 2y ago
- kimi 2y agoYMMV. I always found it very welcoming and full of interesting people.
- bunderbunder 2y agoI may be wrong, but I think the parent poster was talking more about the language and ecosystem than the community. I, too, have found the community to be amazing. But the language itself used to be quite frustrating to learn. It's better now, but I think that by the time it got fixed many companies and teams had already been burned. Clojure is particularly vulnerable to that because it really is an enterprise applications language. That makes it more vulnerable to learning curve problems than a language like Rust whose most direct competitors are other languages with comparably steep learning curves.
- kimi 2y agoYes, I agree with you, learning is complicated, because it's mostly un-learning habits you had for 20+ years. Stack traces suck, but after a while you grok them. The clojure/core is full of niceties, but it's so big you need a map just to know what's in there. And still...
- deleted 2y ago[deleted]
- wredue 2y agoThat is basically every functional programming language in existence.