For those of us using the JVM or .NET, Clojure feels like a minor miracle. It’s an astoundingly high-quality language, sure—in fact, I’m beginning to think it’s the best I’ve ever seen—yet somehow it has still managed to be fashionable.
We have found in practice Clojure codebases that are an order of magnitude smaller than their Java counterparts.
This is because Clojure is a simpler language, where code consists of simple data-in, data-out functions operating against generic data structures. This is in contrast to mainstream object-oriented languages where expansive object models are developed against ever changing business domains.
Because Clojure is strongly opinionated that data should be immutable, the code we write becomes easier to reason about, and easier to test. Code is more predictable when there are fewer side-effects with data being mutated. This leads to less bugs, and less coupling in the code itself, meaning we can make changes more easily.
For more information see the Simple Made Easy talk by the language author.
Clojure runs on the Java Runtime Environment (JRE). Developers with experience of programming Java will be able to re-use many of their existing skills to deploy and profile Java applications in production. With Clojure you can retain investment in your existing Java libraries.
Unlike other functional programming languages, Clojure isn’t a pure language, and it will not stand in our way if we occasionally need to put side-effects in our functions or call out to side-effect producing APIs. Clojure is a practical, pragmatic language meant to be used.
A lot of the best programmers and the most productive programmers I know are writing everything in Clojure and swearing by it, and then just producing ridiculously sophisticated things in a very short time.
There are many companies that have adopted Clojure and have never looked back. Here is a sample of some we know about. The range of companies is diverse, ranging from media companies to large financial institutions.
At root, software is a people problem, and happy developers make a big difference. Here is an analysis of Reddit comments that backs up our assertion that Clojure developers are generally happier.
This has positive knock-on effects for developer staff retention and for hiring. Our clients have benefited from drawing candidates from vibrant local Clojure communities. While it is never easy to hire good developers, the pool of Clojure developers is rich in enthusiasm, skill, knowledge and maturity.
Companies who have adopted Clojure can put themselves on the map as a draw to potential candidates, making a firm statement that they intend to work with the best technologies, and in turn, the best people.