So Why Clojure?
Originally, I picked Clojure for its speed, access to Java libraries, effectiveness in parallel computing, concurrency management capabilities, functional language paradigm and powerful code generating code macro system. But as powerful and impressive as these features are, none of them are really the reasons why I am still using the language. Instead, after several months of work, I have discovered what I like the most about Clojure is that it brings together the best of what many languages have to offer while not forcing it all upon me and, in doing so, has provided a good balance between power and flexibility. For example I have found that I can utilize pretty much any Java library, yet I don't have to spend much time interfacing with Java. I can implement code or features using functional abstractions, but I can also choose to incorporate object oriented abstractions. I can choose to declare data types in select cases where it might be needed or I can allow Clojure to choose for me, eliminating some boiler plate code that would otherwise be distracting.
While the list of examples showing both Clojure's power and flexibility can go on and on, ultimately what's really important to me is that much of the code complexity I normally associate with programming can be abstracted further away while still having access to mega powerful features. This, in turn, has allowed me to spend more time focused on my business ideas and less time figuring out how to code them. With Clojure I accomplish more and have found a greater sense of happiness with the work I am doing.
Scope of Content
Clojure is a rich language, loaded with features. So much so, that one could literally find themselves writing a book, even when only intending to write a blog post! So while reading this guide, it's best not to expect coverage on many of the super cool features that Clojure has to offer as I've only been able to give consideration to what I believe is necessary for a beginner to get started.