Nothing wrong with Lein at all!
Knobs and dials: this is true of every eco-system, wouldn't you say? Is 2018 the year of the linux desktop, finally? :-)
I agree that Clojure has a lot.
Right assumes a known context. Do what is right for you. Sometimes, that's Knob A, and sometimes that's Dial B. The fun is in figuring it out.
Aren't pretty much all languages the same in this area? expressjs/sinatra/flask, or are you implying you prefer opinionated frameworks like rails?
So I'm curious, what's a pleasant app architecture, web app/routing layer for you?
This is the case with all big-tent, "community-driven" PLs that have a high expressiveness, and attract contributors that have a multitude of preferences: Ruby, Javascript, Scala, Clojure, Haskell, Racket
Alternatively, are the 'prescriptive' cultures, that tend to select for predictability and high cohesion: C#, Elm, Go, Python (circa-2007).
The Clojure ecosystem (specifically through the lens of this post) reminds me of the Linux desktop ecosystem. Lots and lots of tweaks and knobs and dials for the sake of having tweaks and knobs and dials.
That’s my biggest gripe with Clj... there is hardly ever a “right way” to do things and usually a dozen esoteric approaches to organizing your application. It’s a blessing and a curse. All the rope to hang yourself with.
That being said I really like writing Clojure in the pure sense but have yet to see a really pleasant 1. App architecture and 2. Web application and routing layer. Ring/compojure don’t do it for me.