There is no doubt that Scala is building momentum in London. Over the past year we have had a growing number of clients enquiring about Java developers with Scala experience, check out our jobs page for current opportunities.
With all the momentum we have received a lot of enquiries from students in the GDC and Java developers at LJC events who have heard the hype about the Scala language and are interested to find out more, so we asked the London Scala User Group what they thought about Why it was worth looking at and how to get involved.
Gemma Cabero is one of those Java developers currently looking at Scala, here she shares her thoughts…
Why you should look at the Scala language?
It is said functional languages allow you to write code in a concise and elegant way (something I’ve heard of in any language I’ve learned :p) as well as making concurrency code easy because it always works with immutable objects (i.e. it can’t happen that two threads would amend the value of the same variable at the “same time”). I also believe their syntax and language constructions (loops, function definitions, etc.) go well with domain problems such as machine learning or complex code that require more elaborated algorithms. What Scala also seems to fit in is systems that over the last couple of decades have been implemented using OOP. The latter with the fact that Scala compiles to the JVM may explain why this language is becoming popular for Java developers. In addition, I think technologies are a bit like businesses in the way that they become successful when they are used at the right time. Nowadays we have computers with several CPUs and it is said that this has greatly contributed to the success of languages that use side effect free functions as a basic building block. This is the case of Scala, Clojure, Haskell, etc.
Looking at other languages like Ruby, Python or even CoffeScript I can recognize concepts that I’ve learned when I did the course in Scala. I guess those are the so called functional style features. It is important to understand the paradigm (e.g. lambda calculus) as that is what differentiates one program from another. Languages are just tools that allow us to talk to computers. The level of abstraction in our minds is what really makes the difference (at the end it is all translated to bits, isn’t it?). In other words you could program in Scala following an imperative style and not get any advantage of the declarative programming paradigm.
How to do it?
“The way I am approaching this myself started by taking the course given my Martin Odesky in Coursera. Despite the academic approach I found it extremely good to set the basis for further study. My idea is to carry on doing small exercises, such as well known algorithms (e.g. dijkstra, mergesort,etc.) at the same time I attend dojos, hack days, etc”
If you’re thinking about getting involved in Scala the first thing you should do is check out the London Scala User Group. They are a very friendly group of developers passionate about Scala, the group has many of the most influential and renowned Scala folk in London. You can also either do a self study course (online tutorials, coursera, books, etc) or if you can afford it you can go to a more structured, speed up training course. In any case make sure you get the basics right. Go beyond and understand the whole picture.
You can check out this article from Kevin Wright, which may be helpful to some. Though Kevin warns it’s not *entirely* serious and full of academic rigour
Kevin also recommends checking out Daniel Spiewak’s series “Scala for Java Refugees”. It’s very good, though we have been advised it is a little out of date nowadays
Alois Cochard advises this free book: http://www.artima.com/pins1ed as a good starting point, or this one: http://www.artima.com/shop/programming_in_scala_2ed
We at RecWorks are recruiting for a number of Scala positions at the moment, if you are an experienced Scala developer, or a Java developer looking to move into a Scala position then do reach out to Aaron Braund directly at firstname.lastname@example.org or check out our latest opportunities on our jobs page.
RecWorks is a unique consultancy focussed around recruitment and social networks, our core focus is on the Java, (covering JVM languages) and graduate markets. Our business model is different from typical recruitment companies in that we generate 100% of our revenue from Recruitment, but spend 50% of our time on community focussed work. We do good things in the industry around building communities and organising events, we then spend time networking, building long term trusted relationships and proactively seeking referrals and recommendations. We founded the London Java Community in 2007 and have since invested vast amounts of time and money growing it up to one of the largest and most active Java User Groups in the world. We also work with students through the Graduate Developer Community to help inspire them to become more passionate about technology, understand their career options and engaged in the wider technical community.