Few days ago, Zach Tellman published a complete draft of his upcoming book Elements of Clojure.

This is a work I have been following closely for a while. I purchased an early draft and have been there at every update from the author, ready to read it all over again. Furthermore, Zach’s talks at various conferences1 reinforced my belief that he is on a path I am eager to follow.

This kind of devotion is not easy to explain, but I will do my best. Since my first Java 1.2 guide through my experiences with C, SQL, Scheme, Scala, Clojure and now Haskell, IT books have been a constant in my life.

Most of them, unfortunately, became outdated soon, and now serve only as dust support. Some of them, however, stood the test of time and proved to be a reliable source of invaluable knowledge. Structure and Intepretation of Computer Programs, for instance, is still next to me, still teaching me how to be a better programmer.

Why is that? Because a book like SICP is not teaching a programming language in particular. It’s not trying to be the ultimate reference on Scheme inner details, nor it wants to be a guide to improve your Scheme skills. SICP is about the how, not the what. And that is exactly where Elements of Clojure fits.

Much like SICP, Elements of Clojure uses a specific language to convey its points. It’s the common ground, the starting point from where Zach anchors his reasoning and expands his thoughts about software development. What at first looks like a collection of best practices gradually morphs into a deep dive in the realms of indirection, abstraction and composition. Therefore, this is a book about the grain of my everyday programming.

I admire the writing style of Elements of Clojure. Sharp, terse, it challenges the reader at every turn of the page. You are invited to look for what is missing or left between the lines somewhere else. Zach helps you by leaving a decent amount of footnotes with literary references for further inquiries, and I am confident the final version of the book will have a precise bibliography.2

These literary references are particularly interesting. They diverge from the IT way and end up in literature, philosophy, architecture, social politics and economics. From what I have read so far, this is a totally mind-stretching, enriching journey, all the more because these are works outside my comfort zone.

At every step of the writing process, Zach has questioned his own experiences and studies with his open attitude towards feedback and discussion.3 It all reflects in his prose, and this is a testament to the honest quality of his writing.

Elements of Clojure is always a few clicks away from me, and it’s not even complete yet. I already know it will stay by my side for a long time.

  1. Start with On Abstraction, but I hope to see more recent videos before long. ↩︎

  2. There is already a shelf with recommendations on the author’s Goodreads profile↩︎

  3. A book club has recently popped up on ClojureVerse. A specific mailing list to discuss the book has also been around for a while, courtesy of the author himself. Moreover, he set up workshops around his work at conferences, but I haven’t been able to attend one yet. ↩︎