If you were interviewing a candidate for a Senior Elixir role, what coding exercise would you give them?

Hey all!

If you are interviewing a candidate for a Senior Elixir role, what coding question or exercise would you give them for an interview of 1hr?

Thanks in advance!

I think languages are not that hard to learn and it may take three to six months to master an ecosystem. Given that philosophy, I would start by posing a small, simple, typical exercise, and pair with the interviewer driving in the interviewer’s language of choice. Then, let interviewee do a small take home problem for thirty minutes (with no candidates screened as a result of submission) in a language of their choosing, with minimal dependencies like build a CLI application that reads in a CSV and computes something simple.

1 Like

Elixir is easy enough as a language, I’d give a senior candidate a task that involves parallel processing and maybe require them to orchestrate stuff with Supervisor and GenServer-s.

Alternatively, have your team chat with them and just tell them they’ll get the senior payment after 1-2 months of a trial period.

2 Likes

Most probably none or some really trivial example project to:

  1. ensure that developer known the stack/dependencies required by project
  2. show candidates what are the code quality conditions (credo, format, dialyzer, tests, etc.) which needs to be met before paying for specific issue//part of application

The recruitment process should be as easy as possible. Think about it you have 2 job offers. One needs 5 talks each in other day - good, if this ends within a week, but most probably because of many applicants it would take from 2 weeks to 1 month if not more. However the second job offer requires only a simple talk and/or exercise - first developer wins, so whole process takes not more than 2-3 work days. Of course it’s worth to apply to both, but what you think, which one gets bigger priority?

Doing something in limited time is bad assume in my opinion. It’s much better to post a job offer with a simple test exercise and then all you need to do is to read your email and reply/talk to first applicant who have met all of your requirements.

If you do not trust how developer spends a time when working for you then you can pay him/her for let’s say 1 week iterations, so developer declares that he/she is able to do x number of features within said period and regardless if the iteration is submitted after 4, 5 or 6 days you pay for iteration and not for time developer spend on it.

There is lots of possibilities when both sides want to sign an agreement and especially if we talk about senior developer you can just talk with him/her and decide what kind of agreement is best for both sides. Once again: a simple and flexible job offers are best for both sides and especially are attractive for applicants.

7 Likes

@Eiji wish you were in charge of every interview processes of every tech company ever, lol.

I would love it if all tech companies would offer a trial contract position to really suss out fit but alas, I have yet to come across one.

When I was an interviewer I always went far more by personality than ability. Of course, you need some sort of exercise to gauge if someone is capable, but you can learn a lot from a simple exercise, especially if you pair. It all depends on your company’s culture, of course. If you’re a feature factory then none of the above applies… just pick a random leetcode question :upside_down_face:

Ideals aside, I think it depends on the type of interview you’re conducting @grangerelixx. Is it a pairing exercise? Domain modelling?

My favourite to do as a pairing exercise is stringcalc (link is in Java, just read the README). It starts simple and the difficulty ramps up at a pretty even click. It’s pretty fun and not algorithm-y so candidates are generally relaxed.

3 Likes

How about we just stop making developers endure coding exercises for interviews?

11 Likes

That would be fantastic. I can only guess what you have in mind as an alternative, though—these types of statements need backup. What do you propose?

Well my argument is this: I feel like time-limited, on-site(or off) coding exercises don’t actually exercise anything that you would necessarily use in your day-to-day tasks as a developer. Especially now more than ever since development has become so heavily scrum-based that it has become more about conformity to consensual standards and demonstrating a collaborative mindset among your peers.

Here’s a thought: if I were an experienced lawyer who has worked at a law firm and accumulated experience, would I be subjected to a time-limited case law quiz for my job interview? No.

If you’ve already presented a prospective employer with your resume that has outlined your development experience and provided at least two solid references, why is it then that developers in particular are held to this distinctive standard?

9 Likes

That’s a really solid point and never thought of it that way. I was asking in earnest because I have given some thought of how to justify eliminating coding exercises before. They have been helpful in the past, though. Like, clearly this was a screening failure, but we interviewed a guy for leadership who apparently had over 10 years experience coding and he was unable to figure out how to turn "1,2,3" into [1,2,3], so in that one case that was useful.

Ugh, I could on and on about this topic so I’ll stop in a minute, but ya, this is why I always go by personality far more than technical ability. I think interviewers should be conducted in a way where the interviewer is trying to help the interviewee to be successful, especially when it comes to coding exercises. I have walked this walk before and it was quite successful at quickly identifying who would fit and who wouldn’t. Of course it doesn’t have a 100% success rate, but it was quite high. Like, nothing says “bad fit” to a candidate you are trying to help along and they just aren’t having it.

EDIT: I feel I’ve glossed over a bunch here as it’s a pretty near-and-dear topic to me and have many thoughts I haven’t fully sorted.

2 Likes

I am of the same opinion, beside these interviews abuse, there is a new trend for last few years to give big tasks at the expense of the the person that applies to the job.

I had 2 kind of these nasty interviews lately:

  • A company that was hiring only “seniors”. On the question on why, they said that they have a very complicated product, on clarification of the complexity they were unable to specify any details. Their plan was to have 6 interviews, from witch the coding interview was to be 2+ hours. After talking with the recruiter, the second interview was with their team lead, a very disappointing conversation, I was trying to understand and reason with him on the coding interview, but to no avail, he did not care about hiring procedure at all, nor cared about making it better. I have declined to go any further after that as it seemed clear that the interview will be some classic mathematical algorithms, for witch I didn’t have time to relearn them after 5 years of not writing algorithms.
  • The second company had the other end of approach. The job posting was for a mid level ruby developer. At the first interview I clearly pointed to them that I was working in elixir exclusively before without any prior production experience in ruby, however I told them that the switch will not be a problem since phoenix and ror share pretty much same approach. Their second stage is to give a task, and to be fair I should have declined out of the door after reading the task, the task contained a task for a product that would integrate with their services (this included fault tolerance in case their api is down, local caching, authentication, background jobs for data update, a small frontend, full deploy). This kind of application would take me about 1 week of effort to accomplish in elixir, not to speak in ruby. I ended up investing 3 days, finishing the integration, caching, authentication, frontend without any styling, deploy. After they followed with their generic decline response, had to send them another email to receive any specific feedback and the feedback was in the form of “you could at least use bootstrap to style” and “there are not enough tests”.

After working 4+ years on hard projects with very limited resources, I find these companies not only incompetent but disgusting, they treat people like labor resources without any care. If I had possibility to leave this industry altogether I would do it tomorrow without looking back.

7 Likes

This seems to be an extreme example, a glance over his CV and a discussion over what he worked with seem to have solved this problem before having to do the coding interview, because there is a 90% chance that he used at least something from the stack you are using.

I am in the boat with @maz on this topic, coding interviews are just a reminiscent of big corporations like google hiring people in bulk, and while it is a good fit for students fresh out of university, it doesn’t prove efficient for people with experience.

I’m clearly not great at expressing myself (I already knew this). When I said “clearly this was a screening failure” I was trying to signal that this was extreme case (2 years later, I’m still reveling in the relief that that interview is over). I’m otherwise also in the same boat as you, but was trying to shed some light on some positive experiences with coding exercises I’ve had, although it was a pretty special company I was at and it doesn’t match the experience of most of the interviews I’ve done recently. I’m feeling the urge to start venting about these interviews so I’m going to stop.

…but for a taste:

I was told the “next steps” was going to a pairing exercise. This “pairing exercise” ended up being a timed (3 hour) solo exercise on zoom, being recorded, having to talk aloud to myself through what I was doing. I’m still kicking myself for agreeing to do that as… well, I mean, we’re all very lucky with the money we can make in this industry but that did not feel good at all. To top it off, when they rejected me they said they could “give me feedback, but not necessarily feedback, just talk through the exercise” and I said ok and I never heard from them again.

3 Likes

Probably none. The ideal situation is when you can arrange a two week trial period before hiring that person, to test the skills in practice. Could be shorter too, maybe 3 days would be enough, and start working on real stuff.

Coding interview skills are entirely different skill than writing real software.

8 Likes

we’re all very lucky with the money we can make in this industry

I would be happy to work with less money, but in a company where people really care about their product and people they hire, and it seems to me the market will be saturated at some point and the salaries will start to drop radically for junior-middle levels.

A funny story, I was searching for a elixir job and being unable to find any, I thought that maybe a better strategy was to come with a proposition of being paid much less for let’s say a few months to prove my skills and then discuss new terms, I couldn’t be more wrong, recruiters hearing this would just not take me seriously and most of the times either decline after application or not answering at all :).

3 Likes

Surprisingly many people who call themselves developers dont know what they are doing.
Some kind of coding exercise or code sample is needed, but it shouldn’t take more than maybe 2 evenings to get it done.
One example I got is to write a small program with an ui to score a bowling game, which I think was kinda fun.
For elixir I would maybe pick something that shows that the candidate knows how processes and supervision trees work. Maybe build a networked bowling scoring server, which could be called from telnet :sweat_smile:

1 Like

If there are many who say they are developers but cannot code then could you argue that coding exercises are not effective in the first place?

If coding exercises were effective, then wouldn’t they act as a hedge against the very thing that corporations are hoping to avoid(developers who can’t actually code)?

It’s kind of a silly argument I know but let me put it this way: if every developer just refused to do a coding exercise, would the software industry collapse? I don’t think it would. I believe the job and the developer would actually find each other more quickly because this artificial ceremony has been done away with and people get hired and fired until they find the job they actually deserve.

1 Like

While I do generally agree, this would likely be more churn on the employers ends. Yes coding exercises are not a perfect measurement of an applicants abilities. It neither prevents a bad pick nor is a great tool to highlight ones abilities (in a general manner). But overall I think from an employers perspective it’s a tool to lessen the risk of getting someone they don’t want. In a perfect world that risk would be well handled by employers, but I think we’re just not in such a world. Even in education, which deals with the issue of evaluating people so much more, there’s not many alternatives to tests when it comes to quickly doing assessments.

4 Likes

Only if they are paid for would I spend two evenings writing code for a throw away project. For all you know, they have been giving the same assignment to 1000 people and will choose one of the 200 who passed at random.

2 Likes

I was once at a company where we gave a simple coding exercise to a candidate with a Ph.D. in a computer-related field. The candidate was unable to complete the exercise, so we ended up not hiring him. I think it is important to screen for basic programming ability, even if the candidate seems qualified.

3 Likes

What if you are working full time for another company and can’t afford the risk of leaving your current company and being told you’re not a good fit at the new one after the trial period?

2 Likes