Hiring guide for Erlang 23 Engineers

Erlang 23 Developer Hiring Guide

Erlang 23 is the latest version of the open-source programming language, Erlang. Developed by Ericsson in 1986 for telecommunication systems, it has evolved to support distributed, fault-tolerant, soft-real-time systems with requirements on high availability. The new release brings several enhancements including improved performance and scalability features. It also introduces a new concept called "dirty schedulers" that helps in handling long-running native code without blocking system operations. This version continues to uphold Erlang's reputation as a robust choice for concurrent programming.

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

First 20 minutes

General Erlang 23 app knowledge and experience

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

How would you describe the core philosophy of Erlang programming?
Erlang's core philosophy is built around the concepts of concurrency, distribution, and fault-tolerance. Its design emphasizes the creation of numerous lightweight processes that communicate via message passing.
What are the main benefits of using Erlang for software development?
Erlang shines in real-time systems and serves well for hot swapping, where code can be changed without stopping a system. It's also known for its built-in support for concurrency, distribution and fault tolerance.
Describe the difference between list and tuple in Erlang.
Lists are dynamic and can change their size, but access time is linear. Tuples are fixed in size and offer constant time access, but changing them involves copying the whole tuple.
How would you handle errors in Erlang?
Erlang uses a 'let it crash' philosophy for error handling. This means that when a process encounters an error, it crashes and sends a message to a supervising process, which then decides how to handle the error.
What is the role of OTP in Erlang?
Open Telecom Platform (OTP) is a set of libraries that ships with Erlang. It provides reusable modules to structure applications, handle error recovery, manage distribution, concurrency and others.
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 have a solid understanding of Erlang's syntax and semantics?
Is the candidate familiar with OTP (Open Telecom Platform) principles and able to apply them effectively?
Can the candidate demonstrate experience with concurrent programming in Erlang?
Has the candidate shown problem-solving skills and the ability to debug Erlang code?

Next 20 minutes

Specific Erlang 23 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 are the types of variables in Erlang?
In Erlang, there are bound and unbound variables. Bound variables have been assigned a value, while unbound variables have not. Once a variable is bound to a value, it cannot be changed.
Describe the difference between spawn and spawn_link in Erlang.
Both spawn and spawn_link create a new process. The difference is that spawn_link also creates a link to the new process. If either process terminates, the other process will also be terminated.
How would you implement a loop in Erlang?
Erlang does not support traditional looping constructs like 'for' or 'while'. Instead, it uses recursion where a function would call itself to achieve looping.
What is hot code swapping in Erlang?
Hot code swapping is the ability to change code in a running system without stopping or restarting it. Erlang supports hot code swapping natively, which is a significant advantage in systems requiring high availability.
What are some common use cases for Erlang?
Erlang is often used in real-time systems where high availability is required. It's commonly used in telecom routing or chat servers, distributed databases, and massively multiplayer online games.
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 23 engineer at this point.

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

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 evaluates the expression 1+2*3 and prints the result.
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] and returns a new list with the results.
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.

Wrap-up questions

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

How would you handle a scenario where a process needs to maintain state in Erlang?
In Erlang, processes maintain state by keeping state data in their stack and passing it to themselves in recursive calls.
What are ETS tables in Erlang?
ETS, or Erlang Term Storage, is a robust in-memory database available in Erlang. It allows you to store large amounts of data in Erlang's memory space and access it very quickly.
Describe the difference between synchronous and asynchronous message passing in Erlang.
In synchronous message passing, the sender waits for the receiver to process the message. In asynchronous message passing, the sender just sends the message and continues its process.

Erlang 23 application related

Product Perfect's Erlang 23 development capabilities

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