Hiring good developers is hard, and hiring good Scala developers is even harder. However, this doesn’t mean companies building out their Scala teams are stuck sweeping crumbs off the table. I believe there are a lot of great developers out there, but reaching them requires a change from what I see most companies doing.
I don’t believe there is one hiring process that works for all cases. I see two main cases: finding junior developers to fill out a Scala team, or finding a senior developer / team lead to provide oversight for a team adopting Scala. Let’s address each in turn.
Finding Junior Developers
Your chances of hiring someone with significant Scala experience are slim in the current market. Most companies realise this, and don’t require Scala experience of their candidates. However, most still look for Java experience. This is, I believe, a mistake.
Take my own case. When I started using Scala I hadn’t used Java for almost a decade. I’d filled that time learning functional programming and I took to Scala like a duck to water. The Java bits of Scala are easy to pick up, and the Java eco-system is mostly irrelevant; in Scala-land we use sbt not Maven, we use Play not Spring, and so on.
Instead of looking for Java experience I would primarily look for an interest in programming, demonstrated by projects in a range of languages. Javascript, Ruby, or Python experience, for instance, indicates some understanding of first-class functions and bulk operations on collections, which is half-way to the functional programming mindset. Independent study, such as Coursera’s Scala course, is a huge bonus in my mind, as it shows the candidate is interested in learning new concepts (and as someone who has taught at the University level I can say that this is sadly not so common.)
My feeling is that there is no shortage of people who want to learn Scala, and if your organisation is willing to give them the opportunity you’re three months away from some great Scala programmers.
Finding Tech. Leads
Developing skills internally is great for the more junior members of the team, but who is going to oversee this development? For this role you can’t compromise on Scala experience, but you can make allowances on other dimensions that open up a wider pool of candidates.
Consider hiring an experienced consultant for a short period of time. This worked very well for a recent client of ours. We placed someone on-site for two days a week over a four month period. We worked alongside some of their best developers to create Scala infrastructure for their next project. By the end of the engagement they were very proficient with Scala and have the knowledge and framework to bring the rest of the team along.
If a consultant is not an option, you might have some luck if you allow remote work. If you’re not used to remote work it does require some change to the usual process, but it opens up a wider pool of candidates and can be very attractive to certain people.
Finding People
So you have an open position and now need to get it in front of people. Where do you find start? Local meetup groups, such LSUG or Functional Media in London, are the first place I would look. These event regularly attract 60+ attendees. A significant number don’t get to use Scala at their day job and would jump at the chance. Hosting an event or speaking at one will give you the opportunity to mention that you’re hiring.
My next step would be to advertise in places developers read (hint: not the newspapers). Post to the various Scala mailing lists (but only if the particular list allows job postings), or try placing an ad on StackOverflow or the monthly “Who’s Hiring” threads on Hacker News (for example, here is April’s thread).
Only if these methods fail would I turn to the traditional recruiters and job boards. And yes, this is more work than passing off a job description to HR, but if you want good candidates you have to be prepared to put in some effort.