Hiring guide for Perl 6 Engineers

Perl 6 Developer Hiring Guide

Perl 6, now known as Raku, is a versatile and powerful open-source programming language that was first announced in 2000 by its creator Larry Wall. It was designed to be a major revision of Perl 5, incorporating elements from other scripting languages such as Python and Ruby. Unlike its predecessor, Perl 6 supports object-oriented programming and includes features like concurrency and parallel processing. After nearly two decades in development, the first stable version of Perl 6 was released in December 2015. The language's name was officially changed to Raku in October 2019 to distinguish it from earlier versions of Perl (source: Wikipedia).

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

First 20 minutes

General Perl 6 app knowledge and experience

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

How would you declare a variable in Perl 6?
In Perl 6, you declare a variable using the 'my' keyword followed by the variable name. For example, 'my $variable;'
What are sigils in Perl 6?
Sigils are symbols that you put before a variable name in Perl 6. They indicate the type of the variable. The $ sigil is for scalar variables, @ is for arrays, and % is for hashes.
How would you define a subroutine in Perl 6?
In Perl 6, you define a subroutine using the 'sub' keyword followed by the subroutine name and a block of code. For example, 'sub subroutine_name { #code }'.
What is the purpose of the 'given' keyword in Perl 6?
The 'given' keyword in Perl 6 is used to introduce a topicalizer, which temporarily assigns a value to the special $_ variable.
How would you perform exception handling in Perl 6?
In Perl 6, you perform exception handling using the 'try' and 'CATCH' blocks. The 'try' block contains the code that might throw an exception, and the 'CATCH' block contains the code to handle the exception.
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 clear understanding of Perl 6 syntax and semantics?
Has the candidate demonstrated experience with Perl 6's object-oriented programming features?
Can the candidate handle complex data structures in Perl 6?
Does the candidate understand Perl 6's concurrency and parallelism features?

Next 20 minutes

Specific Perl 6 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 different types of variables in Perl 6?
In Perl 6, there are three main types of variables: Scalars, Arrays, and Hashes. Scalars hold single values, Arrays hold ordered lists of values, and Hashes hold unordered collections of key-value pairs.
Describe the difference between '==' and 'eq' operators in Perl 6.
In Perl 6, '==' is a numerical comparison operator used to check if two numbers are equal. On the other hand, 'eq' is a string comparison operator used to check if two strings are equal.
How would you create a class in Perl 6?
In Perl 6, you create a class using the 'class' keyword followed by the class name and a block of code. For example, 'class ClassName { #code }'.
What is the purpose of the 'self' keyword in Perl 6?
In Perl 6, the 'self' keyword is used inside a class to refer to the current object. It's similar to 'this' in other object-oriented programming languages.
How would you perform file I/O operations in Perl 6?
In Perl 6, you perform file I/O operations using the 'open' function to open a file, the 'lines' method to read lines from a file, and the 'spurt' function to write to a file.
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 Perl 6 engineer at this point.

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

What does the 'say' function do in Perl 6?
say 'Hello, World!';
The 'say' function prints the text 'Hello, World!' to the console, followed by a newline.
What is the purpose of the 'given' keyword in Perl 6?
given $x {
  when 1 { say 'one'; }
  when 2 { say 'two'; }
  default { say 'not one or two'; }
}
The 'given' keyword is used to create a switch statement. In this case, it checks the value of $x and prints a different message depending on its value.
What will be the output of the following code that manipulates an array?
@a = 1, 2, 3, 4, 5;
@a.pop;
say @a;
The code removes the last element from the array @a and then prints the array. The output will be '1 2 3 4'.
What does the 'start' keyword do in Perl 6?
my $promise = start { sleep 1; say 'done'; };
await $promise;
The 'start' keyword is used to create a new thread of execution. In this case, it creates a new thread that sleeps for 1 second and then prints 'done'. The 'await' keyword is used to wait for the thread to finish.

Wrap-up questions

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

What are the different types of context in Perl 6?
In Perl 6, there are three main types of context: Void, Item, and List. Void context is when a value is not expected, Item context is when a single value is expected, and List context is when multiple values are expected.
Describe the difference between 'my' and 'our' variables in Perl 6.
'my' variables in Perl 6 are lexically scoped to the enclosing block, subroutine, or file. 'our' variables are lexically scoped to the current package. 'my' variables are private, while 'our' variables can be accessed from outside the package.
How would you use regular expressions in Perl 6?
In Perl 6, you use regular expressions by placing them between slashes (/). You can use the '~~' operator to match a string against a regular expression.

Perl 6 application related

Product Perfect's Perl 6 development capabilities

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