Ask HN: Who Regrets Choosing Clojure?

37 points by shivekkhurana ↗ HN
The opinion about Clojure seems to be very polarizing. Some devs. refuse to write any other language, and some avoid it like plague.

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]

25 comments

[ 4.5 ms ] story [ 61.4 ms ] thread
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.

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.

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.

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 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...

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.

Clojure backend with ClojureScript frontend for the last 4 years. No regrets so far!
There are no jobs in clojure
I've written 100% clojure(script) full time professionally for the past 3 years and have turned down several offers for more clojure work.

There are certainly less jobs in Clojure but they're out there.

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?
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 :-/

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.
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.

Maybe Racket is a good alternative?

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.
> 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.

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 .”

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.