Clojure for the Brave and True: Learn the Ultimate Language and Become a Better Programmer by Daniel Higginbotham
Publisher: No Starch Press
Clojure has been my primary programming language for the past six months. Empear, our startup, builds its product portfolio with Clojure. Before that, I've been using Clojure on and off for my side projects for a couple of years. Even though I still have a lot to learn when it comes to Clojure (and programming in general), I'm not really in the target audience for an introductory Clojure book. However, Clojure for the Brave and True has other qualities. So when the friendly people at No Starch Press asked if I wanted a copy, my response was an enthusiastic
Yes! Let me tell you why.
Communication is part of my day job. I do a lot of presentations, workshops and technical writing. My motivation for reading Daniel's book is to enjoy his beautiful and pedagogical style of communicating deep technical details in an accessible way. Anything new that I may pick-up about Clojure was considered a nice side-effect.
Clojure for the Brave and True has evolved on the web. I've been reading parts of it over the past year and I love the style of the book. It's a serious book about a serious topic, but it's also a hilarious read. Sure, you'll learn about functional programming, Clojure's powerful concurrency features, meta programming and much more. You'll also laugh out loud as Daniel uses humor as a pedagogical instrument. What impresses me the most is that Daniel Higginbotham manages to strike that balance between teaching an advanced topic and make it fun without dumbing it down.
So who's the book for? Well, if you have some programming experience and have heard about this wonderful language, this book is a great introduction to get you up to speed on Clojure. The book covers more than just the language. You'll also learn about the ecosystem, like Clojure's build tools Leiningen and Boot, get an introduction to Clojure's host platform, the JVM, and there's even a chapter on using Emacs for Clojure development. While these chapters add to the completeness of book, they're also optional; Read them when/if you're interested and it will help you on your journey to Clojure mastery. Take Emacs for example. I used Emacs together with Cider for a long time, but recently gave Cursive a chance. So if Emacs isn't your bag, you do have other options as well.
The books does a wonderful job on introducing the various features of Clojure. I particularly enjoyed the more advanced sections like the one on core.async. core.async is a different approach to asynchronous programming and communication that borrows a lot from the Go language (see goroutines). The idea that you can implement a powerful concept like that as a library is mind-bending if you're used to the popular OO languages of today, but it's a natural approach in the Lisp world. But it's still challenging to learn to use core.async. So why not put core.async to work by designing a hot dog vending machine like Daniel does? After his chapter you'll have a solid understanding of not only a powerful Clojure library, but also a different programming paradigm.
Clojure itself is actually quite a simple language. You'll learn its minimalistic syntax in no time. The challenge you face as a newcomer is to orient yourself in the huge standard library and to learn all the idioms of the language. That will take time and practice. Clojure for the Brave and True is a great way to start that journey. Highly recommended!
Reviewed January 2016