Hiring guide for Axum Engineers

Axum Developer Hiring Guide

Axum is an imperative, compiled, object-oriented programming language designed to be efficient, easy to learn and use, and portable across multiple platforms. It was developed in the early 1990s by researchers at the University of California, Berkeley. The language is named after the ancient Ethiopian empire of Aksum. Sources: * [Axum programming language](https://en.wikipedia.org/wiki/Axum_(programming_language)) * [Axum home page](https://axum.cs.berkeley.edu/)

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

First 20 minutes

General Axum app knowledge and experience

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

How would you define Axum?
Axum is a programming language that is designed for building parallel and concurrent applications. It is based on the architecture of the web, providing isolation, actors, message-passing and a strong static type system.
What are the main features of Axum?
The main features of Axum include Domain Specific Language (DSL) for safe, productive parallel programming, strong isolation guarantees between agents to eliminate common parallel programming mistakes, a declarative concurrency model and a type system with strong static checking.
How would you use Axum to develop a concurrent application?
In Axum, you would define agents and channels to handle concurrent tasks. Agents are isolated from each other and communicate through channels, which are typed and can have multiple readers and writers. The Axum runtime handles scheduling and synchronization.
Describe the difference between Axum and traditional .NET languages like C# and VB.NET.
While C# and VB.NET are general-purpose languages, Axum is designed specifically for parallel and concurrent programming. It has a different syntax and provides higher-level abstractions for concurrency, such as agents and channels.
What is the role of channels in Axum?
Channels in Axum are the primary means of communication between agents. They allow for message-passing concurrency, where data is sent from one agent to another in a type-safe manner.
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 Axum?
Has the candidate demonstrated problem-solving skills?
Can the candidate communicate effectively?
Does the candidate have relevant experience with similar projects or tasks?

Next 20 minutes

Specific Axum 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 exceptions in Axum?
In Axum, exceptions are propagated along the channels. If an agent throws an exception, it can be caught and handled by the agent reading from the channel.
What are the isolation guarantees provided by Axum?
Axum provides strong isolation guarantees between agents. This means that agents cannot directly access each other's state. All communication must be done through channels, preventing many common concurrency bugs.
Describe the difference between synchronous and asynchronous channels in Axum.
Synchronous channels in Axum block the sender until the message is received. Asynchronous channels, on the other hand, do not block the sender, allowing for more concurrency.
How would you use Axum to implement a producer-consumer pattern?
In Axum, you would define a producer agent and a consumer agent, and a channel for communication. The producer would write to the channel, and the consumer would read from it. The Axum runtime would handle synchronization and buffering.
What is the role of the Axum runtime?
The Axum runtime handles scheduling of agents, synchronization, and buffering of channels. It also provides support for exception propagation along channels.
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 Axum engineer at this point.

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

What does the following simple Axum code do?
public domain SimpleDomain {
  public main() {
    Console.WriteLine('Hello, Axum!');
  }
}
This code defines a domain in Axum, within which there is a main function that outputs the string 'Hello, Axum!' to the console.
What will be the output of the following Axum code?
public domain SimpleDomain {
  public main() {
    int a = 5;
    int b = 10;
    Console.WriteLine(a + b);
  }
}
The output of this code will be '15'. The code defines a domain with a main function that declares two integers, a and b, and then outputs the sum of these two integers to the console.
What does the following Axum code do, which manipulates an array?
public domain ArrayDomain {
  public main() {
    int[] arr = {1, 2, 3, 4, 5};
    foreach (int i in arr) {
      Console.WriteLine(i);
    }
  }
}
This code defines a domain with a main function that declares an integer array and then iterates over the array, outputting each element to the console.
What does the following Axum code do, which involves threading?
public domain ThreadDomain {
  public agent ThreadAgent {
    public main() {
      Console.WriteLine('Hello, Axum!');
    }
  }
}
This code defines a domain and an agent within that domain. The agent has a main function that outputs 'Hello, Axum!' to the console. In Axum, an agent is a unit of execution similar to a thread.

Wrap-up questions

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

How would you implement data parallelism in Axum?
In Axum, you can use the 'foreach' construct with a range to implement data parallelism. The Axum runtime will automatically distribute the iterations over multiple cores.
How would you test an Axum application?
Testing an Axum application is similar to testing other .NET applications. You can use unit testing frameworks like NUnit or MSTest. However, due to the concurrent nature of Axum, you may also need to test for race conditions and deadlocks.
Describe the difference between Axum and other actor-based languages like Erlang.
While both Axum and Erlang use the actor model, there are differences in the implementation. Axum has strong static typing and a different syntax. It also provides stronger isolation guarantees and integrates with the .NET platform.

Axum application related

Product Perfect's Axum development capabilities

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