Hiring guide for Lava Engineers

Lava Developer Hiring Guide

The Lava programming language is an experimental software development environment, developed by the German Research Center for Artificial Intelligence (DFKI). It was designed to support the "Reuse-Driven Software Engineering Business" (RESUB) methodology, which emphasizes component reuse and separation of concerns. Lava's unique feature is its declarative specification of object structures, allowing programmers to focus on what the program should do rather than how it should do it. The language was first introduced in 2001 and has been used in various research projects since then. References for this information can be found in publications by DFKI and on the official Lava website.

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

First 20 minutes

General Lava app knowledge and experience

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

How would you define Lava?
Lava is a powerful scripting language used by Rock RMS, a church management system. It allows developers to create dynamic content and automate tasks.
What are the basic data types in Lava?
Lava supports several data types including strings, numbers, booleans, arrays, and dictionaries.
Describe the difference between a Lava array and a Lava dictionary.
An array in Lava is an ordered collection of items, while a dictionary is a collection of key-value pairs. Arrays are indexed by integers, while dictionaries can be indexed by any hashable type.
How would you create a loop in Lava?
You can create a loop in Lava using the 'for' keyword. For example, '{% for item in items %}...{% endfor %}' would loop over each item in the 'items' array.
What are Lava filters and how are they used?
Filters in Lava are used to modify the output of a Lava expression. They are applied using the '|' character. For example, '{{ 'hello' | Upcase }}' would output 'HELLO'.
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 strong understanding of Java?
How well can the candidate solve problems?
Is the candidate able to work effectively in a team?
Can the candidate adapt to new technologies and methods?

Next 20 minutes

Specific Lava 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 Lava?
Lava does not have built-in error handling. However, you can use conditional statements to check for potential errors before they occur.
Describe the difference between the 'if' and 'unless' statements in Lava.
The 'if' statement in Lava executes a block of code if a certain condition is true. The 'unless' statement, on the other hand, executes a block of code if a certain condition is false.
How would you access a dictionary value in Lava?
You can access a dictionary value in Lava using the '.' operator. For example, '{{ dictionary.key }}' would output the value associated with 'key' in the 'dictionary'.
What are Lava tags and how are they used?
Tags in Lava are used to create complex logic. They are enclosed in '{% %}' and can contain Lava expressions. For example, '{% if condition %}...{% endif %}' would execute the code between the tags if 'condition' is true.
How would you create a custom filter in Lava?
Lava does not support the creation of custom filters. However, you can create custom functionality using Lava plugins.
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 Lava engineer at this point.

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

What does the following Java code do?
public class HelloWorld {
 public static void main(String[] args) {
 System.out.println("Hello, World!");
 }
}
This code prints the string 'Hello, World!' to the standard output.
What will be the output of the following Java code?
public class Test {
 public static void main(String[] args) {
 int x = 10;
 int y = 20;
 System.out.println(x+y);
 }
}
The output of the code will be '30'. The code adds the integer values of x and y and prints the result.
What does the following Java code do?
import java.util.Arrays;
public class Test {
 public static void main(String[] args) {
 int[] arr = {1, 2, 3, 4, 5};
 Arrays.sort(arr);
 System.out.println(Arrays.toString(arr));
 }
}
This code sorts an array of integers in ascending order and then prints the sorted array.
What does the following Java code do?
public class Test {
 public static void main(String[] args) {
 Thread t = new Thread(() -> {
 System.out.println("New thread");
 });
 t.start();
 }
}
This code creates a new thread and runs it. The new thread prints 'New thread' to the standard output.

Wrap-up questions

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

Describe the difference between the 'include' and 'extends' tags in Lava.
The 'include' tag in Lava is used to include the contents of another file in the current file. The 'extends' tag, on the other hand, is used to inherit from a parent template.
How would you use the 'capture' tag in Lava?
The 'capture' tag in Lava is used to capture the output of a block of code into a variable. For example, '{% capture variable %}...{% endcapture %}' would store the output of the code between the tags in 'variable'.
What are Lava plugins and how are they used?
Plugins in Lava are used to extend the functionality of the language. They are written in C# and can be used to create custom tags, filters, and more.

Lava application related

Product Perfect's Lava development capabilities

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