More than anything it has completely changed my world view (and I'm a very experienced, older programmer who has seen a bit). I feel very lucky to have had this opportunity.
IMO, some of the issues you raise are genuine, some not.
For example, the JVM startup time issue is never, ever a problem. If it is, you aren't using the tools right.
I use Cursive and figwheel etc, so I find the tooling generally fine and in many ways excellent. The trajectory in this area is good.
Debugging initially can be rough. Knowing about things like cljs-devtools can dramatically improve things. But, yeah, valid point.
And, yes, poor error messages can definitely be a problem initially -- although this has improved over the last year.
To get going, I'd recommend you use this set of technologies:
- use Cursive/InteliiJ https://cursiveclojure.com/
- use reagent, rather than om. http://reagent-project.github.io/
- use figwheel
- use cljs-devtools with Canary for debugging
- use Schema to provide faint typing - https://github.com/Prismatic/schema
- perhaps use clairvoyant for debugging https://github.com/spellhouse/clairvoyant
- use timbre for logging https://github.com/ptaoussanis/timbre
- use re-frame https://github.com/Day8/re-frame (if the app is slightly more complex) <--- warning I'm biased
- perhaps use re-com - https://github.com/Day8/re-com <--- warning I'm biased
- you may also be interested in the head start provided by http://www.luminusweb.net/ for client/server
-
Perhaps just start here: https://github.com/Day8/re-frame-template and work out. (I'm biased)
Good luck.