Hiring guide for Turing Engineers

Turing Developer Hiring Guide

Turing is a procedural programming language developed in 1982 by Ric Holt and James Cordy, named after the British mathematician Alan Turing. It was designed with the purpose of teaching students the basics of computer science and programming. Turing is known for its clean syntax and simplicity, making it an ideal choice for beginners. It supports various features such as control structures, data structures, modular programming with procedures and functions, as well as basic graphics operations. However, it is not widely used in professional software development due to its limited capabilities compared to more modern languages.

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

First 20 minutes

General Turing app knowledge and experience

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

What is your experience with Turing?
I have been working with Turing for over 3 years now. I have developed several applications using Turing, ranging from simple console applications to complex web applications.
How would you debug a Turing program?
I would use the built-in debugger in the Turing IDE. I would set breakpoints at the points where I suspect the error might be, then step through the code line by line, inspecting the variables and their values.
What are the key features of Turing?
Turing is known for its simplicity and ease of use. It has a clean syntax, strong typing, and built-in graphics capabilities. It also has a comprehensive standard library.
Describe the difference between a procedure and a function in Turing.
In Turing, a procedure is a block of code that performs a specific task but does not return a value. A function, on the other hand, is similar to a procedure but it returns a value.
How would you handle errors in Turing?
Turing provides a mechanism for error handling using the 'catch' and 'throw' statements. I would use these to catch and handle errors in a controlled 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

Has the candidate demonstrated a strong understanding of coding principles?
Does the candidate show good communication skills?
Is the candidate able to think critically and solve problems?
Does the candidate show a willingness to learn and adapt?

Next 20 minutes

Specific Turing 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 the use of the 'for' loop in Turing?
The 'for' loop in Turing is used to repeat a block of code a specific number of times. The number of repetitions is determined by the start and end values provided in the loop declaration.
How would you optimize a Turing program for performance?
I would use various techniques such as efficient use of data structures, avoiding unnecessary computations, and using the built-in profiling tools in the Turing IDE to identify and optimize bottlenecks.
What are the different data types in Turing?
Turing supports several data types including integer, real, boolean, char, string, and arrays of these types.
Describe the difference between local and global variables in Turing.
Local variables are declared within a procedure or function and can only be accessed within that procedure or function. Global variables are declared outside all procedures and functions and can be accessed anywhere in the program.
How would you implement recursion in Turing?
Recursion in Turing can be implemented by having a function call itself. The key to implementing recursion is to have a base case that the function can return without calling itself.
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 Turing engineer at this point.

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

What does the following Python code do?
def greet(name):
    print(f'Hello, {name}!')
greet('Turing')
This code defines a function called 'greet' that takes one argument, 'name'. The function prints a greeting that includes the value of 'name'. When the function is called with the argument 'Turing', it prints 'Hello, Turing!'.
What will be the output of the following JavaScript code?
let x = 10;
let y = '5';
let z = x + y;
console.log(z);
The output will be '105'. This is because JavaScript performs automatic type conversion, and in this case, it converts the number 10 to a string before performing the addition, resulting in string concatenation rather than numerical addition.
What does the following Ruby code do?
arr = [1, 2, 3, 4, 5]
arr.map! {|num| num ** 2}
puts arr
This code squares each element in the array 'arr'. The 'map!' method in Ruby modifies the original array in place. The output will be '[1, 4, 9, 16, 25]'.
What does the following Java code do?
public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            System.out.println('Hello from a thread!');
        });
        thread.start();
    }
}
This code creates a new thread and starts it. The new thread prints 'Hello from a thread!' to the console. This demonstrates basic usage of Java's concurrency features.

Wrap-up questions

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

What is the use of the 'case' statement in Turing?
The 'case' statement in Turing is used to perform different actions based on the value of a variable or expression. It's similar to a series of 'if' statements, but it's more concise and easier to read.
How would you handle file I/O operations in Turing?
Turing provides several built-in functions for file I/O operations. I would use these functions to open, read from, write to, and close files.
What are the different control structures in Turing?
Turing supports several control structures including 'if', 'for', 'while', 'case', and 'loop'. These are used to control the flow of execution in a program.

Turing application related

Product Perfect's Turing development capabilities

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