Hiring guide for TUTOR Engineers

TUTOR Developer Hiring Guide

TUTOR is a programming language developed in the 1960s for use with the PLATO system at the University of Illinois. It was designed specifically for computer-assisted instruction and online courseware creation, allowing educators to create interactive lessons without needing extensive programming knowledge. TUTOR is known for its simple syntax and direct commands that facilitate creating complex educational software. Its features include support for graphics, multiple choice questions, fill-in-the-blank exercises, student tracking capabilities and more. However, it's largely obsolete today due to advancements in technology and newer languages better suited to modern systems.

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

First 20 minutes

General TUTOR app knowledge and experience

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

How would you install Tutor on a local machine?
First, you need to install Docker and Docker-compose. Then, you can install Tutor by running 'pip install tutor-openedx' in the terminal.
What are the main components of Tutor?
The main components of Tutor are the Open edX platform, an SQL database, an Elasticsearch database, a MongoDB database, a RabbitMQ message queue, and the Caddy web server.
Describe the difference between Tutor and native Open edX installations.
Tutor is a Docker-based Open edX distribution, which makes it easier to install, customize, and upgrade. Native Open edX installations are more complex and require more resources.
How would you customize the look and feel of an Open edX platform using Tutor?
You can customize the look and feel of an Open edX platform using Tutor by modifying the comprehensive theme in the 'tutor/env/build/openedx/themes' directory.
What are the steps to upgrade an Open edX platform using Tutor?
To upgrade an Open edX platform using Tutor, you need to first stop all services, then pull the latest version of Tutor, rebuild the Docker images, and finally restart all services.
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 TUTOR language?
Has the candidate demonstrated problem-solving skills during the interview?
Is the candidate able to communicate effectively about technical concepts?
Does the candidate have experience with other programming languages?

Next 20 minutes

Specific TUTOR 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 use Tutor to manage multiple Open edX instances?
You can use Tutor to manage multiple Open edX instances by creating separate Tutor environments for each instance and using the '-root' option to specify the environment directory.
Describe the difference between the 'tutor local quickstart' and 'tutor local start' commands.
'tutor local quickstart' is a command that initializes and starts an Open edX platform, while 'tutor local start' only starts the platform.
How would you add a new service to an Open edX platform using Tutor?
You can add a new service to an Open edX platform using Tutor by creating a new Docker image for the service and adding it to the 'docker-compose.yml' file.
What are the steps to migrate an existing Open edX platform to Tutor?
To migrate an existing Open edX platform to Tutor, you need to first export the data from the existing platform, then install Tutor, and finally import the data into the new platform.
How would you troubleshoot a Tutor installation issue?
You can troubleshoot a Tutor installation issue by checking the logs using the 'tutor local logs' command, checking the Docker and Docker-compose versions, and checking the system resources.
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 TUTOR engineer at this point.

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

What does the following Python code do?
def square(num):
    return num ** 2
This code defines a function named 'square' that takes an input 'num' and returns its square by using the power operator '**'.
What will be the output of the following Python code?
print('Hello, {}'.format('World'))
The output of this code will be 'Hello, World'. The '{}' is a placeholder that gets replaced by 'World' due to the format function.
What does the following Python code do?
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
This code creates a new list 'squares' that contains the square of each number in the 'numbers' list. This is done using list comprehension.
What does the following Python code do?
import threading

def print_numbers():
    for i in range(10):
        print(i)

def print_letters():
    for letter in 'abcdefghijklmnopqrstuvwxyz':
        print(letter)

thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)

thread1.start()
thread2.start()
This code creates two separate threads that execute concurrently. The first thread executes the 'print_numbers' function and the second thread executes the 'print_letters' function.

Wrap-up questions

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

Describe the difference between the 'tutor config save' and 'tutor config printroot' commands.
'tutor config save' is a command that saves the current configuration to the 'config.yml' file, while 'tutor config printroot' prints the root directory of the Tutor environment.
How would you use Tutor to integrate an Open edX platform with a third-party service?
You can use Tutor to integrate an Open edX platform with a third-party service by creating a new plugin that adds the necessary configuration to the platform.
What are the steps to create a new Tutor plugin?
To create a new Tutor plugin, you need to first create a new Python package, then define the plugin in the 'tutor.plugin' module, and finally install the plugin using the 'pip install' command.

TUTOR application related

Product Perfect's TUTOR development capabilities

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