I've been a Perl hacker for 15+ years and still spend too much time reviewing code from CPAN to understand what's going on. I've been using Clojure for about 6 months and find that I can read and understand many of the major Clojure projects on GitHub quickly. Some may claim that says more about Perl than Clojure, but I'm chalking it up to Clojure :)
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
This alone makes me think that Clojure developers are just regular people who care of the maintainability aspect of their code (and quite possibly the readability). Not just a "hacker" that writes code and jump into the next shiny stuff.
As a non-participating viewer from afar, Clojure community seems to have less hipster, less emotional, less roller-coaster, but more mature feeling when it comes to software development.
It also helps that they have a unified build+dependency tools, not a bunch of "upcoming great projects that will solve your build+dependency problem for the umpteenth time".
I wonder if the average age of clojure hackers is higher? I'm not in the Clojure community but it appeals to me (in my forties) coz... well... Lisp! Brings back fond memories of when I shared an office with the dude who did the Common Lisp implementation for Poplog.
The folk I know who are into Clojure are all in their 30s-40s.... but it's probably just sampling bias.
We are not going to get any younger so I very much welcomed the existence of such community.
However, I think the question was about projects built with Clojure, i.e. how to ensure that future developers in the company I work for will be able to continue where I left off? The global Clojure talent pool, while growing, is still on the small side (e.g. compared to even Ruby).
http://janestreet.com/minsky_weeks-jfp_18.pdf See part 4 "Personnel" for Jane Street's experience hiring OCaml devs.
That said, I don't think the matter is quite that straightforward where I come from; I would imagine Clojure dev head count in the whole of Finland is in the low double digits. If I were making business decisions involving future staffing, I would not feel confident I could replace the (hypothetical) only in-house Clojure dev in this job market.
That said, as others have noted, if you're hiring quality people, there's no reason they can't learn Clojure on the job. Plus if you make an investment in your people they're more likely to be invested in you ;)