3 ms·
Yep, we moved a whole team of about 30 people over from Java to Clojure. On the whole it was fairly painless, considering how big a shift that was anyway. It's
by lebski88 12y ago
Yep, we moved a whole team of about 30 people over from Java to Clojure. On the whole it was fairly painless, considering how big a shift that was anyway.
It's hard to know where we started seriously advocating a move to Clojure and where it was just our enthusiasm but we did quite a few things to sell it.
- A Clojure club where we booked a big meeting room and taught some of the basics of Clojure
- Buying a bunch of books and leaving them around the office
- Re-writing an existing service into Clojure as an example of how quick this was to do, and how nice the resulting code was (as a note we haven't gone back to re-write working services)
- High levels of enthusiasm and trying our best to make sure everyone got a chance to be included
At some point we decided that we had enough support to try things more seriously so we got all the devs together in a room and made a proposal to work on a few new services in Clojure. Having a Service Oriented Architecture actually really helps here as we didn't have to make too big of a bet. That was enthusiastically accepted by the team and from there we ended up writing more and more things in Clojure. A few people were more resistant than others and they stuck working on Java projects for longer. After a while though curiosity or necessity led to them working with Clojure and they ended up convinced. I'm not aware of anyone now who isn't a fan.
Training was a combination of self taught, books and, later on, booking a 3 day, onsite training course from the guys at Lambda Next. This is something Cognitect also offer now.
From a dev ops perspective not much had to happen as our existing Java tooling continued to work. That said we have recently rewritten all our deployment tooling (in Clojure) to target AWS (and generally improve it in just about every way). We actually have a blog post due to be published this week talking about our new, Clojure based, tooling.
- pcestrada 12y agoHow did you convince management to let you use Clojure? Some of the devs where I am are interested, but I suspect management will be quite hesitant to embrace a new language.
- lebski88 12y agoThat's a good question. The honest answer is that we didn't. By the time we made this decision it was far more about convincing developers. The history of getting to that point is one of trying small experiments with new tech and proving that we make good decisions and can be trusted. We did have a big meeting with all of R&D where we talked about all the pros and cons. Hiring was a big question early on although it's still my belief that using Clojure rather than Java is a positive in terms of attracting good programmers. I don't think we have enough data to answer that either way though. I think that most important part was that we weren't betting the whole company on it. We were only betting a few weeks of developer time. If it didn't work out then the worst case was rewriting those services back into Java (in fact until recently we had a single Scala service from a previous experiment). Quite a few companies start off by writing some internal tooling in Clojure as an easy to stomach first step. That may be a good path if management are resistant.
- philbarr 12y agoThanks for the reply. If you don't mind one quick last question - can I ask which books you used? The only half-decent one I've found is Clojure In Action.
- lebski88 12y agoWe have quite a few floating around but here are the main ones. - Joy of Clojure. I think a lot of people would say this was their favourite. It's less about learning Clojure and more about loving and writing good Clojure. - Clojure Programming. There are mixed review on this one but I quite liked it as a reference book early on. - Programming Clojure - Similar to Clojure Programming. Pretty good. Thinking about it a lot of people also spent some time working through the 4Clojure exercises. Personally I found that the only way to really get it was to jump in. We have a few early services that could perhaps do with a re-write but no real harm was done!
- dopamean 12y agoClojure Programming by Chas Emerick, Christophe Grand, and Brian Carper is really good in my opinion. I'm coming to Clojure from Ruby and I've found this book to be most approachable.
- throwaway20148 12y agoOut of curiosity, what sort of protocol are you using for RPC between services?
- neilprosser 12y agoIt's JSON over HTTP for the most part. We have a bit of legacy XML still knocking about and some services use message queues.
- emil0r 12y agoOther than JSON over HTTP you can also use something like https://github.com/lynaghk/zmq-async/ https://github.com/lynaghk/zmq-async/ .
- vassilevsky 12y agoWill something stop me from using Protocol Buffers if I move to Clojure?