Why use Clojure at your startup

(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: lawrence@krubner.com

I guess these are becoming the standard set of answers?

The specific design decisions and abstractions in clojure which I expect to minimize costs are the following:

Immutability. Engineering is a super giant rubics cube. To solve it, you need to know each moving part. When you get all the moving parts to finally be in the correct locations and move together, that’s when you’ve solved it. Immutable data structures don’t move. The less moving parts you have, the more brainpower you save to focus on better things. With immutability, clojure and clojurescript allow the programmer the luxury to worry about more important tasks. Immutability means no costs associated with mutable data structures. Facebook considered mutability so expensive that it maintains a library just for immutability in javascript.

Communicating sequential processes. Asynchrony is a complexity multiplier, and in software complexity means cost. Synchronous software is much simpler and easier to reason about, and thus less expensive. Unfortunately, despite its costs, asynchrony is inevitable. Communicating sequential processes (CSP) is a model for writing asynchronous software (expensive) in a synchronous fashion (cheap). For more information, I’d recommend David Nolen’s post about CSP in clojurescript.

Homoiconicity, or “code as data.” This is a more technical point, and I think Adam Bard explains its importance better than I could. In sum, you can write code which writes more code. This is called a macro. Paul Graham touches upon the business value behind macros in his essay about beating the averages.