The summary:
- Any serious codebase is going to exceed the complexity you can hold in your mind at one time
- Once that happens, it's crucial that you can reason about the part you are focusing on
- Interactions between components are MUCH harder to reason about if they share mutable data
- It's possible to design cleanly isolated components in any language
- But we found that Clojure makes it natural to write concise, testable and isolated code
- So much so that writing sloppy/badly designed systems _feels awkward_ in Clojure
- For us, that was more beneficial than a book full of patterns or best practices
- YMMV, but I'd try it out and be sure to get over any aversion to Lisp before passing judgement
edited for formatting