I tend to think that if I do not know how to implement something then I do not undestand completely how it works. That is why I want to learn so many things: new frameworks, programming languages, garbage collectors, type systems, compilers, editors, operating systems, protocols, kernel development. The road to enlightenment is long and difficult. To make things worse, you need to invest time on keeping up to date with technologies you thought you already knew. I usually feel like Mario in one of those levels where he needs to jump between moving clouds to reach the finish line.

That is why one of the best skills to get is being able to separate the wheat from the chaff. We have finite time and distractions are infinite. If you are going to invest time in learning a new language then you should consider Lisp which is definitely wheat of the best quality. If you don’t know why, then go read Beating the Averages article. Clojure is a member of the Lisp family. If you have used a Lisp dialect such as Scheme, Common Lisp, Emacs Lisp, or even really alien and amazing creatures such Shen, LFE, Racket, Pixie you might ask yourself why you should be learning Clojure. This is my opinionated point of view:

Ready, steady, go!

Install Leiningen and configure your editor of choice.

Good tools that deserve a mention

Linter Eastwood

Idiomatic Clojure checker kibit

Clojure formatter cljfmt

Check simple issues in your code bikeshed

Love at first sight

First of all get an idea of Clojure syntax and semantics:

If you do not understand something move on. At this stage the only objective is to grasp some basic ideas about Clojure.

Practice plus reading equals perfection

It is always a good idea to have the cheatsheet at hand.

Other two good tutorials worth mentioning are Clojure from the ground up and Hitchhiker’s Guide to Clojure.

Idiomatic Clojure

Clojure is not Java, neither Common Lisp or Scheme. You should learn to write idiomatic Clojure. The Joy of Clojure is your best friend to become a native Clojure speaker:

It is also important to follow table manners or the Clojure style guide.

If you have trouble like me grasping macros, then you should also check out Mastering Clojure Macros.

Oh, if you miss your type checking then now it is a good time that you read about optional type system for Clojure.

Keep up to date

Know the full arsenal at your disposal

Get help

Google Group

IRC: #clojure channel in Freenode server

Clojurians Slack

Introduction to Clojurescript

Clojure on the frontend trench:

Building your own Lisp

Building a Lisp is similar to a road trip with friends and good music but with no particular destination. Make yourself comfortable and enjoy the ride!