Ask HN: Who Regrets Choosing Clojure?
25 comments
I'm absolutely in love with Clojure.
That being said, it does suffer the Lisp curse, in that I now feel unable to function in previous languages that I was proficient in because I'm now allergic to boilerplate and the inability to create my own syntax when needed. Lots of Python jobs out there that I feel like I should be pursuing, yet I just can't seem to get excited anymore by non-lisp languages.
Wish there were more Clojure job opportunities out there.
That being said, it does suffer the Lisp curse, in that I now feel unable to function in previous languages that I was proficient in because I'm now allergic to boilerplate and the inability to create my own syntax when needed. Lots of Python jobs out there that I feel like I should be pursuing, yet I just can't seem to get excited anymore by non-lisp languages.
Wish there were more Clojure job opportunities out there.
Don't be surprised, though, if you discover you're not able to function in an actual Lisp, either.
Ha! I was going to write more about how I no longer enjoy Common Lisp also, but I didn't want to step on more toes than I already had.
Don't get me wrong, Clojure has it's difficulties. Simple things are sometimes difficult to figure out how to do the correct way...and being hosted means you end up having to know far more than I would like about Java or Javascript.
Don't get me wrong, Clojure has it's difficulties. Simple things are sometimes difficult to figure out how to do the correct way...and being hosted means you end up having to know far more than I would like about Java or Javascript.
Are there any objective reasons behind not "enjoy"ing CL any more?
I've come to realize that I like opinionated languages.
Common Lisp allows and implements nearly everything imaginable which I find disorienting. I've also found it hard to work on a team where everyone is coding in a different style, and has their own opinion on correct usage of the language. This is one of the reasons I fell out of favor with Python. I would write correct code that was often times quite performant, but would be chastised for being "hacky" (when I would write SQL views, instead of using the ORM), or unmaintainable, when I'd utilize functional constructs when others thought an OO or imperative approach was more appropriate. And every engineering manager, library maintainer, and linter has their own preference that I felt like I was bouncing between for arbitrary reasons.
Clojure's choices seem to well thought out, consistent and coincide with how I like to attack problems.
Common Lisp allows and implements nearly everything imaginable which I find disorienting. I've also found it hard to work on a team where everyone is coding in a different style, and has their own opinion on correct usage of the language. This is one of the reasons I fell out of favor with Python. I would write correct code that was often times quite performant, but would be chastised for being "hacky" (when I would write SQL views, instead of using the ORM), or unmaintainable, when I'd utilize functional constructs when others thought an OO or imperative approach was more appropriate. And every engineering manager, library maintainer, and linter has their own preference that I felt like I was bouncing between for arbitrary reasons.
Clojure's choices seem to well thought out, consistent and coincide with how I like to attack problems.
educated guess: lack of persistent data structures.
But there are libraries that fill this gap, like https://common-lisp.net/project/fset/
This too.
I see a lot of engineers voicing their (insightful) opinions here.
What about CTOs and engineering directors, HR, and headhunters who need to recruit? Do you find it difficult to recruit for Clojure?
The only two companies that I know that offered on site Clojure jobs no longer accept new projects being written in it.
I stopped using Clojure after v1.2. I really love the language semantics: idiomatic Clojure is such a joy to read, but ultimately got tired of the lacklustre performance and the dogmatic, cult-like community.
I also no longer care about functional programming at this point in my career. Looking back, I think FP was not a way to write better code but an excuse for me to feel smug or superior to other programmers. I'm glad I grew over this.
I stopped using Clojure after v1.2. I really love the language semantics: idiomatic Clojure is such a joy to read, but ultimately got tired of the lacklustre performance and the dogmatic, cult-like community.
I also no longer care about functional programming at this point in my career. Looking back, I think FP was not a way to write better code but an excuse for me to feel smug or superior to other programmers. I'm glad I grew over this.
> I also no longer care about functional programming at this point in my career. Looking back, I think FP was not a way to write better code but an excuse for me to feel smug or superior to other programmers.
Every major paradigm (procedural, functional, OO, logic, relational) applied properly, is a way to write better code. If you approach it as a way to feel smug and superior, that's about you, not the paradigm.
Every major paradigm (procedural, functional, OO, logic, relational) applied properly, is a way to write better code. If you approach it as a way to feel smug and superior, that's about you, not the paradigm.
That's... exactly what I said?
> That's... exactly what I said?
It's compatible with what you said, but then so is “FP doesn't help write better software and is just an excuse for programmers to feel smug and superior to others in th field .”
It's compatible with what you said, but then so is “FP doesn't help write better software and is just an excuse for programmers to feel smug and superior to others in th field .”
Maybe Racket is a good alternative?
It's multi-paradigm, unlike Clojure. The community is very nice.
It's multi-paradigm, unlike Clojure. The community is very nice.
I ended up with a proprietary CL implementation but yeah, I did my fair share of Racket and found it to be pretty cool.
Clojure backend with ClojureScript frontend for the last 4 years. No regrets so far!
Good Clojure is pretty awesome. Bad Clojure sucks like any other bad code. The Clojure maximalism can get kind of goofy.
In 4 years I haven't felt the need to look elsewhere.
I used it ~7 years ago, and loved it.
Our manager loved it much less, because the ramp-up to productivity was around a month for people not familiar with the language, so after our tech-lead left for another project, we spent six months rewriting the thing in python :-/
Our manager loved it much less, because the ramp-up to productivity was around a month for people not familiar with the language, so after our tech-lead left for another project, we spent six months rewriting the thing in python :-/
I know that feeling. I have been asked to rewrite existing, perfectly functioning, high quality Perl, Clojure and Common Lisp projects to Java and Python far too many times. It's soul breaking, specially when you know it's being done in the name of wage control.
I started to learn it years ago. It is interesting.
The bad part is the lack of jobs. Without jobs, I decided to focus my attention on learning languages that are more common. I can't really say this was a better choice since my career is on a downward trend...
The bad part is the lack of jobs. Without jobs, I decided to focus my attention on learning languages that are more common. I can't really say this was a better choice since my career is on a downward trend...
you learnt what everyone else was learning, so now you're competing with everyone else on their level.
learning something more niche can be a signal that helps you stand out, even if it's not what you use at your next job.
having said that, networking with people is the number one contributor to finding a great job.
learning something more niche can be a signal that helps you stand out, even if it's not what you use at your next job.
having said that, networking with people is the number one contributor to finding a great job.
no regrets here (lead Dev at small company, 50ish employees) using for roughly 50% of the projects.
6 years ago we were fully Java, clojure allows us to mix the two without a business killing rewrite.
I've never had any problems training people on it.
6 years ago we were fully Java, clojure allows us to mix the two without a business killing rewrite.
I've never had any problems training people on it.
The community also has a cult like appeal.
I've been writing Clojure for a long time, and don't consider changing sides. But I know a few people who moved on (to Haskell, OCaml etc).
Did you ever regret using Clojure?
[Ask HN inspired by : https://news.ycombinator.com/item?id=23283675]