Hiring guide for Erlang 21 Engineers

Erlang 21 Developer Hiring Guide

**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/)

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

First 20 minutes

General Erlang 21 app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in Erlang 21 application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable 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.
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.
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 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 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.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What you’re looking for early on

Has the candidate demonstrated a strong understanding of Erlang syntax and semantics?
Did the candidate show knowledge of OTP (Open Telecom Platform) principles?
How well does the candidate understand concurrency and distributed computing?
Has the candidate provided examples of previous projects they worked on using Erlang?

Next 20 minutes

Specific Erlang 21 development questions

The next 20 minutes of the interview should focus on the candidate's expertise with specific backend frameworks, their understanding of RESTful APIs, and their experience in handling data storage and retrieval efficiently.

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.
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.
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 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.
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.
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 point, a skilled Erlang 21 engineer should demonstrate strong problem-solving abilities, proficiency in Erlang 21 programming language, and knowledge of software development methodologies. Red flags include lack of hands-on experience, inability to articulate complex concepts, or unfamiliarity with standard coding practices.

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.

Wrap-up questions

Final candidate for Erlang 21 Developer role questions

The final few questions should evaluate the candidate's teamwork, communication, and problem-solving skills. Additionally, assess their knowledge of microservices architecture, serverless computing, and how they handle Erlang 21 application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

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.
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 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.

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.