status
draft
dsq_thread_id

Clojure is an oddity

On the one hand it has some of the most amazing developers singing its praises. On the other its a damn pain to work with when you're first starting out with it. The errors are terse and usually unhelpful. The hosted nature of the language comes back to bite you if you don't know the host platform. And yet, people keep using it. I keep using it.

The pain of ClojureScript

Well, even not knowing Java you must be able to be productive in ClojureScript, right? After all, its hosted on JS and I know JS... unfortunately its not that simple.
ClojureScript is indeed hosted on JS, but more than that its hosted on Google's Closure (note the "s") library, which doubles as a code optimization tool. This is useful in theory, and probably in practice too, but brings along all sorts of pain. In fact, if you know JS really well but don't know Google Closure then you're in for a bad time.

Documentation

Oh the documentation. It's all API documentation, which is to say its highly self-referential. If you don't already know Clojure you're going to hit the knowledge barrier hard and fast.
This sucks because its not inherent in the language. As Clojure programmers are fond of saying, its a simple language. However, no matter how simple something is you're going to have a hard time if all the docs assume you already know what you're doing.
Lack of examples is the problem. An opaque, self-referential description of some functionality can become a learning tool when paired with an example. However, the official clojure docs are nearly (completely?) devoid of examples. All you get is prose. Prose written by someone who already knows the language deeply.