Hiring Elixir Developers

Training your existing staff is only one way to build a team of skilled Elixir developers. Another way is to recruit them. It’s not easy; finding good developers in any language is tough, and the pool of Elixir talent is still small, though growing. All in all, it’s a deviously complex process, so let’s cover two topics. Since we’re Elixir programmers, let’s deal with that complexity the same way we deal with the complexity of our codebase, with function transformations. Here’s a good starting point.

 candidate_pool
 |> interview
 |> offer

This pipeline starts with a pool of candidates. The interview process is fundamentally a filter and ends with an offer. The offer process is highly dependent on business parameters such as how much you can spend, where your candidates can live, job stability, and the growth you can offer. Such topics are beyond the scope of this book. Beyond the flippant “Paying more will improve your closing percentage,” we just can’t offer much.

The other two are very much front and center in an adoption story. You can improve your hiring process by either increasing your candidate pool or refining your filter (or both). Let’s start at the top of the pipeline.

Expanding Your Pool

If your process has the right kinds of filters, improving your candidate pool will improve the quality of your hires. We’ll talk about two different ways to improve your candidate pool. The first is to get involved in the community. The second is to find good developers from other programming communities and train them.

Go Where They Go

As with all new languages, the total pool of programmers is relatively smaller, but don’t lose heart. They are also often among the most motivated candidates to make a move. If you make yourself visible in the Elixir community, you’ll often have opportunities that others don’t.

When you want to find Elixir developers, get involved in the Elixir community. As you contribute, you’ll meet folks and start to understand where to go to find talent. At icanmakeitbetter, Bruce had great luck going to conferences and listening. They initially met Eric Meadows-Jönnson in Stockholm at the Erlang User Community. They’d worked with José on establishing the Plug library and asked him how best to help the Elixir community. José mentioned Eric, a graduating college student who built the Hex package manger and the Ecto library. They hired Eric to help them build their initial Elixir implementation. The initial push was a great success. When the Swedish market matured allowing Eric to take a job closer to home, they were able to tap the conference circuit once again in Orlando, Florida, and Austin, Texas. They hired James Edward Gray II, who was a speaker at both events and is now writing a book on application design.

When companies invest in building the ecosystem, good things happen for everyone. In Tokyo, Japan, Elixir is growing in the gaming, media, and advertisement industries. In 2013, Japan overtook the United States to become the world’s number one country in mobile systems revenue, thanks to the growth of smartphone and tablet games. It is a large market with increasing competition and demand. With pressure to improve the reliability and performance of those services, many companies looked to new technologies, including Elixir.

Though Japanese programmers and managers had watched Elixir because of its Ruby heritage and its established Erlang underpinnings, this familiarity wasn’t enough. They still had to convince their bosses who had reservations about hiring and building their teams. Rather than just wait for the Elixir community to grow organically, they decided to take matters into their own hands.

To address this issue, CTOs and engineers of five different companies— XFLAG/mixi,[4] Akatsuki,[5] Drecom,[6] dwango,[7] and gumi[8]—decided to team up and organize meetups and others activities, leading to elixirconf.jp, a one-day Elixir conference in Tokyo with more than 300 attendees. This conference served as a platform to grow the Elixir presence in Japan, provided a platform for companies to recruit and train developers, and established the language as a less risky alternative. José was lucky enough to speak at the event and to have a round table discussion with their engineering leads:

José:

Why did you choose Elixir?

Tsunenori Ohara (Drecom):

We were planning to use Erlang and when Elixir v1.0 came out we ended up evaluating four options: Scala, Erlang, Elixir, and Ruby. We were looking for reliability and performance and Elixir faired well in our trials. We also have many Ruby engineers and the similarities between languages played an important role.

Yusuke Tanaka (Akatsuki):

We are mostly a Ruby company and we were looking at languages with better performance. In the end, we were conflicted between Elixir and Go. Elixir came out ahead thanks to its active development and community. We also had engineers familiar with Erlang and brought a couple more onboard, which helped with the migration to this new runtime.

José:

In what capacity are you using Elixir?

Yusuke Tanaka (Akatsuki):

We first built a contact management system in Phoenix as our proof of concept. Then we developed two new services, related to authentication and payments, which are also running with no hiccups. Now that we are comfortable with the language and runtime, we are planning to build our next game in Elixir.

Hidetaka Kojo (XFLAG/mixi):

Since we are used to working with different technology stacks, establishing new technologies internally has always been relatively straightforward. Today we already have three services running in Elixir and a fourth in development, being worked on by about twenty engineers.

José:

What was your biggest concern when you were first approached to use Elixir?

Yusuke Tanaka (Akatsuki):

While our engineering teams were sold on Elixir, we still had to convince our bosses about the stability of the language and the community. Our solution was to invest in them ourselves and help the community grow in Japan.

Tsunenori Ohara (Drecom):

The same here. After we convinced our bosses with prototypes and benchmark results, they were still worried about finding engineers.

You can see that these leads adopted Elixir for many of the same reasons as others around the world. All were worried about the future of the community and hiring prospects. Even so, to date the adoption stories have been successful. To mitigate their recruiting risk, they invested in the Elixir community to grow the new language locally. We’ll watch this story closely to see how the community grows for them.

When you’re hiring, you don’t have to run a full conference yourself. Many meetups are looking for meeting spaces or sponsors to bring in speakers or food. Organize your own or find one and invest. Get the lay of the land before you announce a job posting. Then, when you know the local community and they know you, tell them what you’re looking for.

Hiring Programmers from Other Language Communities

When you can’t find an Elixir developer who’s ready on day one, you need to evaluate your development needs. You have several options beyond simply increasing what you’re willing to pay a full-time employee.

If you need immediate help but you’re OK with a temporary solution, you might consider an Elixir consultancy. Plataformatec is the company behind Elixir and has an excellent team of developers led by José Valim. Chris McCord, creator of Phoenix, works at Dockyard, a consultancy with increasing investment in Elixir. Supporting them means also investing in the ecosystem.

Even within the realm of consultants and contractors, you have options. If you have a more limited budget and some knowledge in house, you can hire occasional consulting help to do design reviews at critical junctures in your development. Your bet is that an experienced consultancy can keep you from making big mistakes. It was during one of many of those reviews that José Valim realized the impact this book could have in Elixir’s adoption.

Other times, you may want to focus on in-house, full-time employees. If you have some time to invest, the best approach is often to hire excellent programmers and teach them Elixir. The directors from Drecom and Akatsuki successfully tapped Ruby and Erlang engineers to supplement their teams. The process goes about like you’d expect. Look for the skills or attributes that are most important to you, and those that predict good success in learning functional languages. These are some areas that you might consider:

  • Hiring people with past successes often leads to future success.

  • Functional programming and concurrency are sometimes more important than syntax. Think Erlang or Scala, which both have a very close concurrency model to Elixir.

  • If you’ll need domain-specific languages, Lisp developers often work well. Building languages and tweaking syntax within Elixir often means working with macros, and Elixir’s macros are based on similar features in Lisp.

  • Focus on your problem domain such as machine learning or mapping. If you’re working in a demanding discipline, learning Elixir will be easier than learning your domain.

These are a few strategies you can use for finding senior development talent when you can’t find or afford an Elixir developer. Select a skill that’s critical for your project and look for that instead. If your candidate knows Clojure and is applying for an Elixir job, they’re willing to learn. If they are outstanding with Clojure, they’ll learn Elixir just fine. At icanmakeitbetter, Bruce’s finalists included an Erlang developer, a Ruby developer, and a Clojure developer. Bruce is confident that any of those three would have worked just fine.

A Case Study for Hiring Developers

EasyMile is a company from Toulouse, France, that has a similar experience. They develop software for autonomous vehicles and aim to provide turnkey solutions—such as geolocation, managing fleets, and so on—for any kind of autonomous vehicles. They support vehicles around the world, so they need robust systems to manage them. The system must stay up while people are inside the vehicles. Elixir, and OTP in particular, is a great addition to EasyMile’s tech stack.

Autonomous vehicles are a relatively new industry. The odds EasyMile will find candidates that are familiar with their domain and OTP at the same time is virtually zero, so they need to build skills from within. They hire smart engineers and developers who are eager to learn. They must compete with big local companies such as Airbus, so they also need an edge, and Elixir may be it. Here’s what Pejvan Beigui, EasyMile’s CTO, had to say:

José:

Why did you choose Elixir?

Pejvan:

My personal opinion had been for a while that a functional programming approach with a focus on concurrency would be a better fit for our particular use case. And having played around with Erlang and its VM, I thought we could benefit from its distinctive features such as fault tolerance and live upgrades. From there, it’s easy to get attracted to Elixir, which builds on the strength of Erlang, while adding a modern and productive feel to the platform.

But since I would not be involved in the actual coding, I didn’t want to impose a language on the team who would be writing the code, so while the team was studying multiple stacks, such as Node.js, I just threw in a one-liner: “You might also want to have a look at this new language called Elixir.”

As the CTO, it was a very proud moment because a week later, when I came back to the office, I discovered that they had not only settled on using Elixir for the platform but had also gone so far as to completely rewrite our initial C++ prototype using it. It was amazing to see them build this so quickly, with far less code and complexity, and for the prototype to be already much more stable than the C++ one.

José:

How has your company benefited from Elixir?

Pejvan:

First of all, the fact we are doing Elixir has attracted developers. There are some developers who applied only because we are exploring new technologies such as Elixir. The whole approach that we have for recruitment is very opportunistic. If we find great developers, we hire them even if we don’t have a place right now. We are also organizing meetups and sponsoring events such as ElixirConf Europe. And that’s also a benefit. Elixir’s young and growing community is such that a small company such as EasyMile can have an impact, whereas it would have been very hard for us to do the same in the PHP or Java community.

When talking about our platform to clients and investors, we also mention that our system is built on the Erlang VM, with its background in telecommunication and building robust and fault-tolerant systems. We consider it a competitive edge and it has been well received.

José:

Have you had hiccups or roadblocks along the way? How did you overcome them?

Pejvan:

We have been proactively removing the roadblocks that we expect in the future. Still, we’re learning how to leverage OTP, and OTP itself is a big beast. There is a learning curve, but the codebase is more compact and organized than we would expect so we are looking forward to benefits in the long run.

For doing things in the right way, we have also brought companies like Plataformatec to help with code reviews and architectural decisions.

The bottom line is that only you know what you need. If you need someone to be productive from day one in Elixir, you’ll need to find a way to hire an Elixir developer. If you’re willing to expand your search a bit, you can add some excellent candidates by looking for domain-specific knowledge across similar families of languages. You’ll be able to quickly shape such folks into productive developers. In fact, a great Erlang developer would probably contribute sooner than a decent Ruby developer with six months of Elixir experience. If you’ve chosen well, the process will go smoothly. Let’s talk about how to find good candidates and make the right choice for your situation.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset