Hiring guide for Erlang 22 Engineers

Erlang 22 Developer Hiring Guide

Erlang 22 is a general-purpose, concurrent, functional programming language and runtime system developed by Ericsson in the late 1980s to build robust telecommunication systems. It was named after Agner Krarup Erlang, a Danish mathematician known for his work in queueing theory. The language was open-sourced in 1998 and has since been used extensively for building massively scalable real-time systems with high availability requirements (source: "The History of Erlang", Armstrong et al., ACM SIGPLAN). Notable features of Erlang include its support for hot swapping, where code can be changed without stopping a system; lightweight processes; and built-in support for concurrency, distribution and fault tolerance. As per the official documentation from erlang.org, version 22 includes enhancements to the garbage collector as well as new features such as improved logging capabilities.

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

First 20 minutes

General Erlang 22 app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in Erlang 22 application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable systems.

What is the main use of Erlang?
Erlang is primarily used for building scalable and maintainable applications. It is especially good for building distributed, fault-tolerant, soft real-time concurrent systems.
How would you describe the concurrency model of Erlang?
Erlang uses a lightweight process concurrency model. It allows for the creation of thousands of processes that can run concurrently, with built-in support for communication and synchronization.
What are the advantages of using Erlang?
Some advantages of using Erlang include its fault-tolerant nature, support for hot swapping, highly efficient garbage collection, and support for distributed computing.
How would you handle errors in Erlang?
Erlang follows the 'let it crash' philosophy for error handling. It encourages the creation of supervision trees to manage and recover from errors.
Describe the difference between lists and tuples in Erlang.
Lists are used when the number of elements is unknown or can change, while tuples are used when the number of elements is known and fixed.
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

Does the candidate demonstrate a deep understanding of Erlang 22's syntax and semantics?
Has the candidate worked on projects that involved concurrent programming?
Can the candidate articulate how they have used Erlang's fault-tolerance features in previous projects?
Does the candidate have experience with OTP (Open Telecom Platform) which is a set of Erlang libraries?

Next 20 minutes

Specific Erlang 22 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.

What is tail recursion in Erlang and why is it important?
Tail recursion is a feature in Erlang where the recursive call is the last operation in the function. It is important because it allows the Erlang runtime system to reclaim memory used by the function call stack, making recursion more efficient.
How would you implement a server in Erlang?
In Erlang, servers can be implemented using the gen_server behaviour module. This provides a generic server functionality for implementing servers in a concurrent environment.
What are ETS tables in Erlang?
ETS (Erlang Term Storage) tables are in-memory databases provided by Erlang. They can store large amounts of data and provide constant time access.
What is the role of OTP in Erlang?
OTP (Open Telecom Platform) is a set of libraries and design principles in Erlang. It provides tools to build reliable and high-availability systems.
How would you implement a distributed system in Erlang?
Erlang provides built-in primitives for building distributed systems. This can be done by creating multiple Erlang nodes and using message passing for communication between these nodes.
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 22 engineer at this point.

At this point, a skilled Erlang 22 engineer should demonstrate strong problem-solving abilities, proficiency in Erlang 22 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 22.

What does this simple Erlang code do?
io:format("Hello, World!~n", []).
This code prints 'Hello, World!' to the standard output.
What does this Erlang code do?
lists:map(fun(X) -> X*X end, [1,2,3,4,5]).
This code applies the anonymous function, which squares a number, to each element in the list [1,2,3,4,5]. The result is a new list with each element squared.
What does this Erlang code do?
lists:filter(fun(X) -> X rem 2 == 0 end, [1,2,3,4,5]).
This code filters the list [1,2,3,4,5] and returns a new list with only the elements that are even. The anonymous function checks if the remainder of a number divided by 2 is 0, which is true for even numbers.
What does this Erlang code do?
spawn(fun() -> timer:sleep(1000), io:format("Hello, World!~n", []) end).
This code spawns a new process that waits for 1000 milliseconds, then prints 'Hello, World!' to the standard output. The spawn function is used for creating new concurrent processes in Erlang.

Wrap-up questions

Final candidate for Erlang 22 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 22 application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

Describe the difference between spawn and spawn_link in Erlang.
spawn creates a new process while spawn_link creates a new process and links it to the current process. If a process linked with spawn_link crashes, the current process will also be terminated.
What is the mnesia database in Erlang?
Mnesia is a distributed, soft real-time database management system written in Erlang. It provides high availability and partition tolerance features.
How would you handle hot code swapping in Erlang?
Erlang supports hot code swapping natively. This can be done by loading the new version of the module using the code:load_file/1 function.

Erlang 22 application related

Product Perfect's Erlang 22 development capabilities

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