For the last couple of years though, I’ve been pondering whether to stick with what I know, or to spend time learning some new stuff. It is fair to say that I’m not a natural polyglot. I like to spend decent time getting to know a language and it’s ecosystem and I find it can be tricky switching.
Grails & Groovy
At first I spent a bit of time, starting to get to know Grails, basically using Groovy on the JVM (Java Virtual Machine) to build a Rails like web framework. The rest of the Grails stack is also stuff which I know very well, Spring, Hibernate etc. There is a lot I like about Grails and I’ve yet to investigate all this is new in the latest 2.0 release.
So, there you go, something I’d like, building upon a lot which I already know. Should be the favourite right?
Scala & Play/Lift
Well, I then started thinking a bit about Scala, a language which polarises opinion, especially amongst the Java community. It is either the ‘new’ Java or it is a hodge podge of static typed semi functional programming. People complain about it’s complexity or love how doing things in a more functional fashion reduces code and maintenance and gets it all set up for multi-core CPUs. If I was planning on doing more ‘corporate’ work, working on huge projects in London or building a twitter competitor then it’d make sense for me to have a good look at Scala.
But I’m not, maybe ShedCode will work on an idea which will one day be huge, I think I’ll worry about that another time!
I’d also like to learn Clojure, mainly because I think it will be good for my programming skills and good for my brain.
Rails & Ruby
Then, working on Happenstance has made me think again…
In early 2008 I was going to investigate Rails & Ruby, one because I liked the fact it was called Rails, but then also because it seemed to be gaining a lot of momentum and interest and it was ‘cool’. In the end I got a job doing java, so I put it on the back burner. I also started to realise that, as is often the case where things are a bit ‘cool’ there were quite a few.. ahem.. nobbers around who not only believed that Rails was THE framework to use but that using anything else was such a POOR substitute. I have to be honest, it did my nut. I did meet a few people who seemed ok, but the majority, I didn’t really get on with.
Now I find that a lot of the R&D web apps I’m interested in, have been built with Rails. I’ve also met some more Rails devs who are not nobbers, in fact, they are interesting, helpful, open minded people. I’d like to work with some of them, I’d like to build things on top of the work they’ve done. I’d like to explore the Rails ecosystem which has inspired so much in other languages (like Grails for example).
So, I find myself at a crossroads. I’ll spend some time with Clojure, regardless of what else I do, but I’ve got some interesting projects to start in the next month or so and I need to decide whether I:
Learn Rails and see what happens…
Go with what I know a bit and build something with Grails. I know the tools, I know the libraries and I know it works (mainly)
Go with Scala, build on top of the Java I know and become have decent with functional languages
At the moment, these are in my preferred order, but I’ll let you know what happens…