I've been "all-in" on clojure for about 6 months now, spending every free moment learning and working in it. Paul Graham's writings played a big part in my choice to invest in a lisp, so this is an interesting question.
After some reflection, I can say "yes", clojure has had a substantial impact on my productivity. This is true even while factoring in the overhead of learning the language, and should only improve as I get more experience. I attribute this productivity boost to 2 things (for me at least, ymmv). First is the malleable nature of the language, combined with the rapid feedback loop. The comparison I like to use is that working in java (my main language before) is like working with concrete - you have a limited amount of time early in the project to get things right before it "sets", after which it becomes very difficult to make large changes. This leads to lots of incidental complexity and over-engineering up front (the dreaded FactoryManagerFactories). Clojure, on the other hand, is like working with clay, where you mold it into shape using composable functions operating over simple data structures like maps. You can always harden it later using records, type hints, and creating dsls. But those decisions can be made late, if at all. The second factor is the overriding simplicity of the language. My java friends look at me like I'm crazy when I say that, but it really is true. Sure, there's syntax and idiomatic usage that has to be learned (as for any new language), but once you get past that, you see that everything is built on a handful of primitive concepts and consistent abstractions. Understanding these core concepts makes any problem more approachable, and any solution (from a library, another developer, etc.) understandable by breaking it down in terms of these core concepts/abstractions. It's hard to overstate how empowering this is. Underlying both these things is the whole idea of bottom-up programming, which of course Graham is a big proponent of. And honestly, I think I've always been more comfortable thinking about things that way, I just never had the tools before to work that way. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
