Forgot to mention, clojure community isn't doing too badly at StackOverflow:
http://stackoverflow.com/research/developer-survey-2016#tech...
So transducers are a great hack, but not a great feature of the language, more of a necessary evil.
I would say don't bother. The language is a nice lisp (nice simplifications, great immutable ADTs, edn, pretty good async libs, etc), but the ecosystem tooling is still miserable IMHO - this is coming from someone who has worked around 6-12 months on a couple of clojure projects, so I'm not a die hard expert but I've worked enough with it to build with/have used clojurescript,clojure,java bindings,leiningen/boot,clojars etc.
I really wanted to like clojure. The idea that I could run my code on the JVM and in the browser is alluring. And, I would add, if you like using mvn or ant or gradle or in general the java way of doing things, you will probably think leiningen is good enough.
But I have zero tolerence for annoying/unnecessary headaches, and so I can't take it, and don't program any of my projects in it.
What do I consider good? Well an analogous project is Mix for Erlang/Elixir, and I think its an excellent example of what I wish leiningen were. Anyone can learn Mix in about 10 minutes, you can easily use it for erlang & elixir projects, I have had zero problems and stuff just works. This is not the case with leiningen, which makes building and deployments unnecessarily complicated in clojure.
I don't see clojure getting mainstream until someone starts concentrating more on the user experience in the tooling, though this may be more of a java/jvm originated problem, still it affects your whole experience while using clojure.
I have used both professionally and find the dev tooling for clojure very immature. Debugging tools is not a modern feature yet clojure jas very little
The cider debugger is one of the best I've seen. I've been able to stop, inject code and create a test case for failing tests.
Cursive has similar functionality as well if you are afraid of emacs becoming a lifestyle :)
Incidentally, I've been putting more effort into Elixir/Erlang recently, I honestly see more of a future there (for me) than in Clojure.
Clojure was definitely a mind-expanding language for me though, no regrets learning it.
$ time lein --help
...
lein --help 2,16s user 0,49s system 141% cpu 1,880 total
$ time mix help
...
mix help 0,51s user 0,51s system 129% cpu 0,789 total
This difference compounds and it gets rather annoying quite fast.On the other hand, Clojure REPL workflow (although some assembly is required) is phenomenal. Clojurescript is a serious option on the client. And for runtime-level tools (profilers etc), you have the whole Java/JVM ecosystem, which is simply bigger, for better or worse, than the Erlang equivalent.
So for my money, it's definitely a two horse race.
Yes, I can see your point. And there are some really good innovations clojure has made I think - specifically the immutable data types are really beyond compare, anyone wishing to learn more about immutable data structs should definately read their source in clojure its clear and understandable.
Still, if anyone wants to learn what lisp is all about. I'd just recommend common lisp (clisp or sbcl) for getting the special forms, repl, and beauty of macros bits. It also means you don't have to know anything about java to get the key concepts of a lisp, which is less overhead overall.
Regardless of common lisp or clojure, I'd always recommend anyone listen to Rich Hickey's talks on clojure, they are very good, especially his talks about values, composition, and simplicity. (http://www.infoq.com/author/Rich-Hickey)
I find Clojure is a lot more approachable if you start with Clojurescript / Reagent and go from there. You don't need to be running Clojure on the backend to make use of how awesome Clojurescript is, and it's about 10x more approachable.
Where did you get this impression? The State of Clojure 2015 survey indicates that the Clojure developers are very interested in making the developer experience better, particularly around error messages, startup time and documentation.
I cannot recall seeing a single Clojure developer suggest that Clojure's tooling is good enough. However, it is a lot better than it was.
I don't have experience with Elixir/Erlang/Mix but I've heard great things about them.
One thing I'm sure though is that Leiningen and all its guides are second to none - read them https://github.com/technomancy/leiningen/blob/master/doc/TUT... .
Here's how your start a project with Leiningen:
lein new app
Here's how you build the whole project:
lein uberjar
Here's how you run your Clojure app:
java -jar my-clj-project.jar
Don't need to install anything.