Clojure(Script) Learning Guide
After experimenting with Clojure(Script) for years, a colleague asked me to share some 'getting started' links. Without further ado:
Running Clojure
Start with a working setup by following the official Getting Started page.
Documentation
I keep coming back to a lot of materials on the official websites of:
Of course there's already a lot of helpful 'getting started' material out there:
- Official getting started guide
- The excellent Clojure Distilled Guide
- Learn X in Y where X = Clojure
- Clojure Cheatsheet
- ClojureScript Cheatsheet
- ClojureScript syntax in 15 minutes
- Clojure functions explained through (visual) patterns
- ClojureScript Web REPL
I also want to highlight this post that explains how the classic design patterns translate into Clojure: Clojure Design Patterns
Must Read
Once you get used to working in a REPL, you can't go back to slower feedback cycles. Therefore, I consider Programming at the REPL mandatory reading.
Books
If you like reading books and you don't have Lisp programming experience, I'd recommend these books to get a good start:
Sometimes you only need some good examples to solve a problem at hand. That's where these reference books can help a lot:
A nice online book is: Clojure for the Brave and True. For ClojureScript you might like the online book: Transforming Data with ClojureScript.
Other Clojure books I've enjoyed reading:
For the more advanced Lisp / Clojure programmers, I recommend:
Some 'special topic' Clojure books:
Courses
These Clojure courses will give you a good start, and in some cases a good deep dive:
- Purely Functional Courses by Eric Normand
- Lambda Island by Arne Brasseur
- ClojureScript, reagent and re-frame by Jacek Schae
- Clojure Fundamentals by Alan Dipert
- Enterprise Clojure Training by Timothy Pratley
- Parens of the dead by Magnar Sveen
- Poetry of Programming - Puzzle Based Introduction to Functional Programming by Egri Nagy
- (Dutch) Inleiding Functioneel Programmeren met Clojure by Michiel Borkent
- Clojure from the ground up by Aphyr
- Clojure Inside Out - by Neal Ford and Stuart Halloway
- Functional Thinking by Neal Ford
- Clojure Basics - by Code Expanse
- Clojure by Example
Some Datomic courses:
Online Practice
Some online practice sites:
One of the things I highly recommend is to install Replete REPL App on your phone or mobile device. That's a really lightweight way of experimenting with Clojure(Script). I've learned a lot on it and sometimes use it to spike some ideas ... or even write a Maze Generator in it while I'm on vacation.
Replete also has an online version. As an (easy to remember) alternative there's also an online REPL at Repl.it
Some interactive 'notebooks' can be found here:
Talks
A lot of people are drawn to Clojure by the talks of Rich Hickey. His talks are gathered on ClojureTV, in the Rich Hickey Talks playlist. I recommend every software developer to watch these talks, no matter what language you prefer.
Some other talks I want to highlight:
- Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
- Stewardship made Practical - Stuart Halloway
- Running with Scissors: Live Coding with Data - Stuart Halloway
- Agility and Robustness: Clojure spec - Stuart Halloway
- clojure.spec - David Nolen
- ClojureScript: Lisp's Revenge - David Nolen
- Functional Programming in Anger - David Nolen
- A Practical Functional Relational Architecture - David Nolen
Some of my favorite talks by other speakers than Rich Hickey, Stuart Halloway or David Nolen:
- Solving Problems the Clojure Way - Rafal Dittwald
- Bottom Up vs Top Down Design in Clojure - Mark Bastian
- Building composable abstractions - Eric Normand
- Deep Learning Needs Clojure - Carin Meier
- Condition Systems in an Exceptional Language - Chris Houser
- The Art of Tree Shaping with Zippers - Arne Brasseur
- Physics in Clojure - Colin Smith
- Native Clojure with GraalVM - Jan Stepien
- Embrace the JVM - Alexander Yakushev
Some applications of Clojure that also inspired me:
Tools
The best place to look for the right tool for the job is The Clojure Toolbox. I still want to highlight some essential tools I've often used. Think of them as Clojure hammers and screwdrivers; in nearly every job they are useful:
- Leiningen - a tool for project automation (project creation, dependency management, running tests, building artifacts, etc)
- Clojure Deps & CLI - the official Clojure way of managing dependencies
- Babashka! - Leverage Clojure where you'd be using Bash otherwise
Clojure covers frontend -, backend -, and bash work, but did you know it also covers Unity3D and Machine learning?
Some helpful code quality tools:
Conferences
Some conferences I've attended or want to attend:
- Dutch Clojure Days in Amsterdam (Netherlands)
- ClojureD in Berlin (Germany)
- ClojureTre in Tampere (Finland)
- Heart of Clojure in Leuven (Belgium)
Since this list is very Europe centered, I suggest you take a look at the 'ultimate list of functional programming conferences' to get an idea what functional - and Clojure conferences are organised everywhere around the globe.
Podcasts
If you're the type of person that likes to learn about Clojure(Script) while cooking, cleaning the house, or sitting on the couch with a nice drink, you might like these podcasts:
- Cognicast by Cognitect
- The REPL by Daniel Compton
- Defn PodCast by Vijay Kiran and Ray McDermott
- ClojureScript Podcast by Jacek Schae
- Functional Design in Clojure by Christoph Neumann and Nate Jones
These podcasts are less Clojure(Script) specific, and more about software engineering in general:
News
Some Clojure newsletters:
- PurelyFunctional Newsletter by Eric Normand
- Clojure Weekly by 'dotemacs'
- The REPL by Daniel Compton
- Inside Clojure by Alex Miller
Of course there is also a lot of blogging going on in our friendly Clojure community. The best way to get connected is to keep an eye on the Planet Clojure meta blog.
Other Getting Started Guides
Missing
Although we've covered a lot of ground in this post, there are definitely still some 'missing links'. In addition, over time there will probably be broken links. If you find a broken link or think a valuable link should be added, please contact me on twitter
I'm also very interested in good books about Babashka and Datomic. These are still missing from my library, so if you know where to find them, please let me know.
This website is cookie-, advertisement -, and user tracking free to give you the best reading experience. It would be great to know if this post was useful to you. Let me know what you think on twitter
I wish you a meaningful and fulfilling Clojure(Script) journey!