How to find an Elixir job?

What is the way to get a job in Elixir?

During my entire career, I’ve been recruiting many times, hiring developers for different roles and filling available positions with various programmers. As an interviewer, I went through multiple tech talks and coding assessments. This time, however, I’m on the opposite side. It’s me who is being interviewed as recently I’ve started looking for a new contract.

I’d like to share with you my thoughts regarding finding a job as an Elixir developer, give you some tips for that and present a general overview of the market in 2019.

Recruitment process

Browsing offers

When filtering job announcements I had initially only two preferences: it has to be Elixir and remote position. Where exactly was I looking for them? Well, at the very beginning, I was monitoring a couple of websites. After some time though, I limited the list to the following ones:

It turned out that nothing else like StackOverflow or LinkedIn offer relevant results. There are a couple of others, designed especially for remote work like WeWorkRemotely or RemoteOK, but actually none of them provide Elixir offers. There are also interesting boards called NoFluffJobs and JustJoinIT both originated from Poland but the case there is the same.

The other interesting place to follow is Elixir Slack and #jobs channel in particular. Not only will you find there necessary official offers, but also some startup positions, before they are even officially announced.

Application

CV

Almost all companies ask you to upload your CV. I haven’t noticed any special requirements regarding that. Very rarely may they explicitly ask for your photo. They might also need some information about your race, gender, and veteran status when employing to US companies.

Cover letter

Some companies require also providing a cover letter with motivation why exactly you are applying to a particular position. They want to know a bit more about you, especially about something that hasn’t been put in your CV.

Questions

I also noticed it’s not so rare for companies to ask a series of general questions like:

Why do you think you are a good candidate for this role?

What makes you a good choice for this position?

What is your commercial experience in Elixir?

What is your greatest achievement/failure?

Describe your most interesting project.

I assume it verifies your approach or creativity and tests your motivation.

Video

Last but not least approach for me is to ask candidates to record some kind of video. They can ask you to just introduce yourself within a couple of minutes or/and answer some specific questions. I think it’s a trending and very efficient approach for both sides.

Links

It’s also popular to ask about your websites on the internet like GitHub, LinkedIn, Twitter, Blog and so on. It’s good to have them and prove your own skills with some real portfolio.

Scheduling a call

There are a couple of ways how recruiters organize this very first contact. Most of them use Calendly which is a scheduling appointments platform and is pretty convenient to choose from available times considering the selected timezone. I also saw some of them were using either Recruitee (BTW, do you know it is written in Elixir?) or Lever, for the same purpose, but they were far less popular. Probably because they are advanced recruitment tools instead of just meeting schedulers. Anyway, from my point of view, it doesn’t matter at all — the most important was to basically find a specific time with respect to my own timezone.

Introduction talk

As often as not, the initial contact was with a recruiter only. Sometimes it was the person dedicated to the particular company, i.e. working as a regular employee but from time to time, it was an external source from some kind of HR agency.

What I’ve noticed so far is that when you talk to some company member, they usually look for team fit and your attitude. They want to get to know you and discover your overall approach and spirit. On the other hand, a specialized recruiter usually investigates you a lot, trying to fill their questionnaire, looking for specific skills and making sure you satisfy all the requirements by checking subsequent boxes.

Technical part

Live programming

The first way of interviewing your technical skills may be a real-time coding with some tools like Codility or a regular screen sharing.

To be honest, I’m not a big fan of it. I interviewed many people who were highly skilled, but when a stranger observes what they are doing, it makes them stop thinking clearly. And I experienced the same myself. I had a 45 minutes pair-programming when I was almost unable to find any creative solution. However, once the interview finished, I immediately wrote the entire algorithm in 2 minutes! That was insane, especially because I couldn’t say I was stressed or felt some time pressure consciously.

Problem-solving

The other approach I noticed is to either send a gist via email or even post on their website a small problem to solve. It’s usually some kind of algorithm, simple enough to be done within 2 hours, but sufficiently complex to check your coding style, way of thinking and testing abilities.

This is my favorite way of verifying skills because usually, these tasks are very interesting. They are pretty small but require me to think creatively and focus on code readability and naming conventions. They are easy to review and talk about during an interview.

Home assessment

The last method for verifying one’s code is to instruct you to provide some small project.

I really don’t like this approach because I’ve never met any small assessment there. Usually, they involve JSON RESTful API, form validations, database operations, performance testing and production readiness, which is pretty insane for recruitment purposes. I’ve already built a pretty big portfolio of these tasks available at:

And, as you can see, there are neither small nor quick projects to be completed. At the very end, you may still hear “well, it’s not something we were expecting”, or, what is even worse, “it’s not production-ready”.

In my opinion, such companies don’t respect candidates’ time. They may think that we are taking part in only one recruitment process and have no current job to be done (what, of course, sometimes can be true) and we can fully commit to their request. I think that there has to be some balance between how much they need to verify our experience.

Interview

Most companies conduct also a technical talk during which they ask about your experience, skills, knowledge and technology-related aspects.

Such talks may be as well concentrated around your technical solution, GitHub repos, previous projects or any technical skills you have.

Usually, company developers, CTO or VP of Engineering want to get to know you from a technical perspective.

Offer

Remote or on-site?

There are a couple of points worth mentioning when considering your work environment. Some companies are remote-only, some of them are remote-friendly but most of them prefer having their employees on site. Having remote work culture has its own requirements and conditions. Just allowing to work remotely is not enough. It’s more about respecting remote employees and treating them the same as if they worked from the office. Without that, it’s almost impossible to feel comfortable in a partially remote environment.

My favorite setup is being on-site from time to time but working mainly remotely. I notice I’m more productive when I can focus in my home office. The only distraction I might have then is either Slack or email which I can fully mute. However, working with clients and investors in the office is also very beneficial. Face to face discussions and personal meetings give extreme benefits on the business level. The case is that such things don’t happen every day but rather periodically. Therefore, your presence in HQ is not required on a daily basis, and companies which understand it usually perform better.

Just to sum up this part: in my opinion, work is something you do, not somewhere you go. Remote work is a topic for a separate article though and I believe I will extend it a little more soon.

Salary

This part is still a tabu topic in lots of companies. Very rarely do they transparently announce their salary range. They may ask you about it and then alternatively respond whether to proceed with the process.

What is even worse, sometimes they might tell you how much they can pay only after you have already gone through a couple of steps. It can mean wasting your time unnecessarily if you have higher requirements.

When I apply to different companies, it’s hard for me to actually define my expectations. Of course, I do have some range in my mind, but working in different countries, I have been paid very differently so far. I earned from €30 per hour up to even $12,000 monthly. And it’s not like I have some strict requirements right now, I could accept a lower salary if the project was extremely interesting, the team was experienced and I had room to learn a lot. On the other hand, if the project itself was demanding and had high requirements in terms of my skills, I would probably start negotiations with some higher expectations.

Thus, I haven’t found a good approach yet on how to actually present my range. I prefer to hear the offer firstly, and, considering all the details, decide whether to accept it.

Benefits

Different companies offer various non-financial incentives, e.g. free lunches, gym cards, game rooms, paid holidays and so on. From my perspective, especially when working remotely, they are not important whatsoever. I care more about company organization, work culture, time flexibility, people and technologies rather than some additional benefits which I can afford.

Time zone

This may be tricky sometimes, not only when scheduling recruitment calls, but also (what is more important) when planning the entire cooperation.

It’s not that bad when I’m in Poland and the company is in London, which makes only a 1-hour difference. If I live in Europe and the office is in either the NY or Singapore, the offset is +/- 6 hours, which still is not that problematic. However, when I cooperate with San Francisco or New Zealand, it’s getting more extreme. 9 hours difference causes a very short overlap when we can work at the same time.

While considering your remote cooperation, always ask how many meetings there are, how often you will need to sync and whether you are expected to work while others are doing it too.

Freelancing or employment?

I have noticed that, more often than not, many companies are not used to a contract when I, as an employee, send them invoices for my work. They usually treat that as freelancing and don’t understand how affordable it is for both sides.

The thing is that the most convenient config from a taxation perspective is being a contractor paid based on invoices. Not only does a company treat me as a cost, but also I’m the one responsible for paying taxes.

Subscribe to get the latest content immediately

https://tinyletter.com/KamilLelonek

Summary

As you can see, finding an Elixir and remote job may not be so trivial. There are multiple aspects to consider. You have to pay attention to many details and lots of them I haven’t even mentioned.

I have also noticed that there’s little room for trust these days. No matter what your employment history looks like, no matter how many GitHub contributions you open-sourced and no matter whether you have a pretty big blog — you still need to be verified as you wouldn't have any proven track record whatsoever.

If you have any thoughts, please feel free to share them here in the comments. I’m aware that looking for a job can be a very long and demanding process but the more time you commit to it, the more suitable position you will find.

I wish you a quick process and positive results :)