The week before last I had an opportunity to sit down with an impressive pack of developers. We were gathered to study Clojure in depth, but as the days passed many other interesting topics were covered. In this short post I'll recount some of the lessons and also share a productivity booster.
The first ever ConjLabs was held the week before last in Brussels and in attendance were some of the more innovative developers of Europe. After each of them got back home, my feeling is that people really were able to step up to the next level of their Clojure game after those 3 days. One of the guys asked me "Well how do you market an event like this?" and the answer is simple: We didn't. The first Conj Labs was similar to raising a magnet which draws in natural born innovators and see who would show up.
The crowd consisted of experienced developers who were well established in a variety of languages, one of them even knew Perl. In common, they all shared a desire to improve on their current skillset in the hopes of producing better software. One guy said "My ambition is to build small beautiful programs, that are simple and easy to maintain and my hope is, that Clojure is the language which will let me do that." (thanks Walter). I think he expressed an ambition which we all shared, but during the week it occured to me that I was amongst a special brand of gentlemen. For a large part of my carreer I have worked primarily with people who have found something which lets them complete tasks, be it C, C++, Java or whatever. And once they've attained a certain level of mastery over one of these languages, they disregard the glaring problems and productivity inhibitors and push on to complete the assignment on their desk. The magnet-marketing trick had effectively brought in a different crowd.
Another attendant related how he works on a massive code-base for a world wide corporation, where he was tag-teaming with hundreds of developers in C++ in order to add incremental changes to their product. I asked "Its not very mentally challenging is it?" and where many developers might have said yes (and felt it), he said no. He was looking to build projects in a language which would let him be work on the problem and not the limitations/traditions/ceremonies of the language.
At the lab there were many different setups. We had Danish keyboards, French keyboards, Dutch keyboards and many more. Almost all of the attendants were wielding Macbooks and OSX while the instructors were on Lenovos. One guy remarked "Its weird to see someone as smart as Christophe using Windows" and I couldn't agree more. So in the name of higher education I agreed with Christophe to have him firmly planted in Emacs for the duration of the Labs. Why? Because Emacs is a black hole which eventually sucks in all productivity killers allowing you to reach previously impossible measures of productivity. The stumbling block, is that you need to crave innovation and productivity, otherwise you might not be able to look past the old-fashioned interface and enormous help file. C-h t however, lets you hit the ground running (emacs tutorial).
I've prepared a small screencast to demonstrate a few of the reasons why Emacs is the IDE of choice for Clojure development, as well the for many other languages. The main pull of Emacs is nothing Clojure specific, rather its the ability to unify all of your tools within the same program:
There are a few keys to obtaining über productivity which I try to live by:
I know that there are many would disagree and claim that Mouse-driven IDEs and XML based configs are the way to move forward, but I firmly believe that such convictions stem from a lack of exposure. If you're already an Emacser, I recommend reviewing your toolbox and seeing how much you can stuff into Emacs. If you're not, I highly recommend throwing yourself off the deep end, you'll be surprised a how quickly you start swimming fast while your colleagues are still in float-mode.
I've made the following deliberate choices:
You don't have to do it like I do it as long as you get the big wins from the first list, but I'll admit Ive never seen an effective setup on neither OSX or Windows - However, if one such exists feel free to add it in the comments.
The first Conj Labs was fantastic and everybody walked away with a lot of tools/skills to get them to the next level of their Clojure game. We are already mounting the next session which will be in Germany, if you want to be notified when the details are in place either follow me on twitter, watch conj-labs.eu or send me an email.
If I the interest is high enough, I might do a separate blogpost demonstrating my config files :)