Andrew: I have one other question about team adoption. How do you bring new people on? Do you only introduce people that are already doing Clojure? Is there a lot of Clojure development going on in Israel? Do you cross-train?

Morri: We don’t look for Clojure developers when we’re hiring. We look for good engineers.

Nir: The Clojure scene in Israel is not that big. We are the predominant company that uses it. There are 3 or 4 other companies that use it. They are really small companies - dozens of people - where the engineering organisation is pretty small. So, for us to recruit from that specific niche is a non-starter. We do our best to recruit the best people that we can, where Clojure is just a tool in the stack.

I gave a talk in Israel about five years ago on Clojure and Morri came over to view it. He was doing his post-doctorate in Israel and was using Clojure to hack away at some stuff. He heard me talk about Clojure and how we use it and said "It’s kind of nice, maybe we can do something together", and he’s been working at AppsFlyer ever since.

We’re looking for good people who know how to learn on their own, and we provide the learning environment, as well as developing internal Clojure courses, and a comprehensive onboarding process that sets hires up for success from day one. The core ability of the people is paramount here. We’re not looking for people with x amount of years experience in a language or framework A / B / C. We’re looking for experienced people with production experience, preferably with experience in some interesting languages besides PHP or JavaScript. If you meet that bar, then you can start working with us and learn.

Ronen: When people start here, they spend some time learning Clojure and getting more familiar with it and the system. We put a lot of effort into keeping them. We have a lot of internal classes where we teach Clojure, how to work with it, how to use it better, but it comes down to the people and how well they can learn. I think we’ve been very successful.

Morri: But definitely something we have to work really hard at once we hire people is to train them. Currently we have a process where we’re hiring people into R&D at large and then they do a rotation through several different teams doing training tasks in each team. Maintaining those tasks and evaluating the code that they write takes a lot of work. It’s definitely worth it. After they’ve gone through that, they generally will choose a team where they feel like they interact the best with. And as they do those training tasks, they’ll be writing Clojure code and getting review feedback on their code from each of the teams.

Nir: Coming back to the question about hiring. It’s easier now. We’re a big company with 600+ people globally, and nearly 400 just in Israel. We have a good reputation, from both a technology and a business perspective, but that’s after 7 years. It was a very different story when we were trying to recruit back in 2013 / 2014. The development team was 5 - 10 people then. New people would come along that already had many years of good experience in Java or C# and wonder why we were doing stuff in Clojure.

What we found is that it’s usually the people that can adapt, where a programming language is just a tool, that are the best to hire. We’ve only had a handful of people like this over the past few years, but they’re the best people in the company and they’re still the best people 4 or 5 years later. They’re the core people still in the company that know and can teach Clojure the best because they’re the very best at learning it. Now that we’re bigger, people want to join AppsFlyer in Israel because it’s a good company. They accept Clojure like it’s a known fact so the hurdle has become much smaller over the years.