However, I will say that once you "pick your poison" and get used to a specific workflow, it becomes vastly easier. The same set of tools work for pretty much any kind of project.
Stuart Halloway gives a great talk[0] where he drunkenly expounds on the importance of REPL driven development and explains his workflow. Honestly, this changed the way I work day-to-day for the better and helped me realize the power that tools like Emacs and Cursive give you; specifically, in-editor evaluation of forms.
For me, I use leiningen for building/dependencies and Emacs/CIDER for my editor. Another good choice is Cursive. Then split it up by what runtime I'm targetting:
Clojure/JVM: - mount for state - ring for HTTP services - clj-http for HTTP requests
ClojureScript/JS: - shadow-cljs for building (with lein integration) - mount for state - macchiato for HTTP services - cljs-http for HTTP requests - reagent for UI
These tools & libraries cover about 80-90% of what I need in a new project, and everything after that is specific to the use case.
Wading through one or two self-contained projects goes a long way into helping you figure out your workflow, and afterwards it's just applying it.
My hope is that in the near future, a lot of the initial friction will be wicked away from the tooling and people will be able to get spun up much faster. Advanced Clojure workflow is a very different way of developing software than most people are used to, though.
The second half of this blog post talks a lot about what cljs dev is like: http://blog.jrheard.com/quinto-resurrecting-an-abandoned-boa...
lein new luminus myapp
and you're good to go. This will create a new instance of the Luminus (http://www.luminusweb.net/) tempalte that sets up all the boilerplate with reasonable defaults.