Erlang 21 Developer Hiring Guide

Hiring Guide for Erlang 21 Engineers

Ask the right questions to secure the right Erlang 21 talent among an increasingly shrinking pool of talent.

**Erlang 21** is a general-purpose, concurrent, functional programming language designed at Ericsson in the 1980s. It is named after the Erlang Automatic Switching System, and was originally conceived as a replacement for it. Erlang is used in a wide variety of applications, including telecommunications, financial services, and web development. **Sources:** * [Erlang Wikipedia page](https://en.wikipedia.org/wiki/Erlang_(programming_language)) * [Erlang official website](https://www.erlang.org/)

First 20 minutes

General Erlang 21 knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

Describe the difference between functional and imperative programming.

Functional programming is based on the concept of using functions and immutable data, whereas imperative programming involves giving a sequence of commands to change mutable data. Erlang is a functional language.

What is pattern matching in Erlang and how would you use it?

Pattern matching in Erlang is a powerful feature that allows a program to check for the presence of certain structures or values, and bind variables to parts of that structure. It is used in function clauses, case expressions, and when assigning values to variables.

Describe the difference between lists and tuples in Erlang.

Lists are dynamic and can grow and shrink at runtime, whereas tuples have a fixed size. Lists are used for sequences of variable length, and tuples are used to group a fixed number of items together.

What are the benefits of using Erlang for building concurrent systems?

Erlang has lightweight processes with very low context switch overhead, message-passing concurrency model, preemptive scheduling and robust error handling, which makes it a great fit for building concurrent and distributed systems.

How would you describe the Erlang programming language?

Erlang is a functional, concurrent, general-purpose programming language and runtime system. It is designed for building robust, fault-tolerant, distributed, non-stop, real-time systems. Erlang has built-in support for concurrency, distribution and fault tolerance.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate keep up with the latest Erlang updates and trends?

The field of software development is constantly evolving. If the candidate is aware of the latest developments in Erlang, this shows they are committed to keeping their skills up-to-date.

Did the candidate show problem-solving skills during technical questions or coding challenges?

Problem-solving is a crucial skill for any developer. If the candidate has demonstrated this during the interview, it shows they can tackle complex issues and come up with effective solutions.

Has the candidate provided examples of previous projects they worked on using Erlang?

Past experience is often a good indicator of a candidate's ability. If they can provide examples of successful projects they have completed using Erlang, this shows they can effectively use the language in a practical setting.

How well does the candidate understand concurrency and distributed computing?

Erlang is well-known for its concurrency and distributed computing features. A competent Erlang developer should have a deep understanding of these concepts and be able to apply them.

Did the candidate show knowledge of OTP (Open Telecom Platform) principles?

OTP is a set of Erlang libraries, which provides solutions for designing and implementing robust and scalable systems. A good Erlang developer should be familiar with OTP principles.

Has the candidate demonstrated a strong understanding of Erlang syntax and semantics?

A proficient Erlang developer should be able to write and understand complex Erlang code. If they have shown this ability, it means they are comfortable with the language and can likely use it to solve complex problems.

Next 20 minutes

Specific Erlang 21 development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

How would you handle distributed programming in Erlang?

Erlang has built-in primitives for distributed programming. You can send messages to processes running on other nodes, and use distributed Erlang features like global name registration and distributed transactions.

What is hot code loading in Erlang and how would you use it?

Hot code loading is the ability to update a running system without stopping it. Erlang supports hot code loading, which is used to upgrade a live system without service interruption.

What is the difference between spawn and spawn_link in Erlang?

Both spawn and spawn_link are used to create a new process in Erlang. However, spawn_link links the new process to the current process, so that if either process terminates, the other one will also be terminated.

What are ETS tables in Erlang and how would you use them?

ETS (Erlang Term Storage) tables are in-memory storage that can be used to store large amounts of data in Erlang. They are used when you need to share state between processes or when you need fast access to data.

How would you handle errors in an Erlang program?

Erlang has a 'let it crash' philosophy for error handling. Rather than trying to catch every possible error, Erlang processes are allowed to crash and supervisors are used to restart them in a known good state when they fail.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the Erlang 21 engineer at this point.

At this stage, the candidate should demonstrate deep understanding of Erlang 21, proficiency in concurrent programming and fault-tolerant systems. They should also show good problem-solving skills. Red flags include difficulty explaining complex concepts, lack of real-world experience, or inability to write efficient code.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with Erlang 21.

What does this simple Erlang code do?

io:format("Hello, World!~n", []).

This code prints 'Hello, World!' to the console.

What will be the output of this Erlang code?

io:format("~p~n", [1 + 2 * 3]).

The output will be '7'. The code performs the arithmetic operation 1 + 2 * 3, where multiplication has higher precedence than addition.

What does this Erlang code do?

lists:map(fun(X) -> X * X end, [1, 2, 3, 4, 5]).

This code squares each element in the list [1, 2, 3, 4, 5]. The result is a new list [1, 4, 9, 16, 25].

What does this Erlang code do?

spawn(fun() -> io:format("Hello, World!~n", []) end).

This code spawns a new process that prints 'Hello, World!' to the console. The 'spawn' function creates a new process in Erlang.

What does this Erlang code do?

-record(person, {name, age}).
John = #person{name="John", age=30}.

This code defines a record 'person' with two fields 'name' and 'age'. Then it creates an instance of 'person' with name 'John' and age '30'.

What will be the output of this Erlang code?

lists:foldl(fun(X, Sum) -> X * X + Sum end, 0, [1, 2, 3, 4, 5]).

The output will be '55'. The code calculates the sum of the squares of each element in the list [1, 2, 3, 4, 5] using the 'foldl' function.

Wrap-up questions

Final candidate for Erlang 21 role questions

The final few interview questions for a Erlang 21 candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

What is the role of the BEAM virtual machine in Erlang?

BEAM is the virtual machine in which Erlang runs. It provides features like garbage collection, hot code loading, and preemptive scheduling, and allows Erlang code to be run on many different operating systems without modification.

How would you implement a stateful server in Erlang?

A stateful server in Erlang can be implemented using the gen_server behavior from the OTP framework. The state is kept in the server process and can be updated through calls or casts.

What is the difference between synchronous and asynchronous message passing in Erlang?

In synchronous message passing, the sender waits for the receiver to consume the message. In asynchronous message passing, the sender does not wait and can continue its execution. Erlang uses asynchronous message passing.

How would you handle failures in a distributed Erlang system?

Erlang provides several mechanisms to handle failures, including linking and monitoring of processes, 'let it crash' philosophy, and the OTP supervisor behavior for restarting processes when they fail.

What is the role of the OTP framework in Erlang?

OTP (Open Telecom Platform) is a framework that provides useful libraries and tools for building applications in Erlang. It includes a server template, a supervisor behavior, a generic finite state machine, and more.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

Erlang 21 application related

Product Perfect's Erlang 21 development capabilities

Beyond hiring for your Erlang 21 engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in Erlang 21 projects, and can engage in multiple capacities.