2 ms·
I think everyone goes through this when they're newish to clojure - it's a recognized deficiency in the ecosystem, and one that needs to be solved sooner than l
by lilactown 9y ago
I think everyone goes through this when they're newish to clojure - it's a recognized deficiency in the ecosystem, and one that needs to be solved sooner than later.
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.
[0]: https://vimeo.com/223309989 https://vimeo.com/223309989