Hiring guide for PL/M Engineers

PL/M Developer Hiring Guide

PL/M, or Programming Language for Microcomputers, is a high-level language developed by Gary Kildall of Digital Research Inc. in the mid-1970s. It was specifically designed for Intel's 8080 and 8085 microprocessors, serving as a precursor to the C programming language. PL/M was the first high-level language to fully exploit the capabilities of these microprocessors, making it instrumental in the development of early microcomputer systems. The language was widely used in Intel's software products, including their ISIS operating system. Its influence can still be seen in modern embedded systems programming. [Sources: Intel Corporation, Digital Research Inc.]

Ask the right questions secure the right PL/M talent among an increasingly shrinking pool of talent.

First 20 minutes

General PL/M app knowledge and experience

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

How would you declare an array in PL/M?
In PL/M, an array is declared by specifying the type of its elements, followed by the name of the array and its size in square brackets. For example: BYTE myArray[10];
What are the basic data types supported in PL/M?
PL/M supports several basic data types including BYTE, WORD, DWORD, and BIT.
How would you define a procedure in PL/M?
A procedure in PL/M is defined using the PROCEDURE keyword, followed by the name of the procedure, the list of parameters in parentheses, and the body of the procedure enclosed in BEGIN and END. For example: PROCEDURE myProcedure (param1, param2); BEGIN ... END;
What is the purpose of the CALL statement in PL/M?
The CALL statement in PL/M is used to invoke a procedure or function. The name of the procedure or function is followed by its arguments in parentheses. For example: CALL myProcedure(arg1, arg2);
Describe the difference between the WHILE and REPEAT statements in PL/M.
In PL/M, the WHILE statement tests the condition before executing the loop body, whereas the REPEAT statement executes the loop body first and then tests the condition. If the condition is true, the loop continues; otherwise, it terminates.
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 PL/M programming language?
Has the candidate demonstrated problem-solving skills?
Is the candidate able to communicate effectively?
Does the candidate have experience with similar projects or tasks?

Next 20 minutes

Specific PL/M 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 PL/M?
In PL/M, errors can be handled using the ON statement, which specifies an error handler procedure to be invoked when a particular error occurs. For example: ON OVERFLOW CALL myErrorHandler;
What are the bitwise operators supported in PL/M?
PL/M supports several bitwise operators including AND (&), OR (|), XOR (^), NOT (~), left shift (<<), and right shift (>>).
How would you implement recursion in PL/M?
Recursion in PL/M can be implemented by defining a procedure that calls itself. However, care must be taken to ensure that the recursion terminates, otherwise it could result in a stack overflow.
Describe the difference between local and global variables in PL/M.
In PL/M, local variables are declared within a procedure and are only accessible within that procedure. Global variables, on the other hand, are declared outside any procedure and are accessible from anywhere in the program.
What is the purpose of the INCLUDE statement in PL/M?
The INCLUDE statement in PL/M is used to include the contents of another file in the program. This is typically used to include library modules or to separate the program into multiple files for better organization.
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 PL/M engineer at this point.

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

What does the following PL/M code do?
PROCEDURE ADD(NUM1, NUM2); DECLARE (SUM); SUM = NUM1 + NUM2; RETURN SUM; END ADD;
The code defines a procedure named ADD that takes two arguments, NUM1 and NUM2. It declares a variable SUM, assigns the result of adding NUM1 and NUM2 to SUM, and then returns the value of SUM. Essentially, it is a function to add two numbers.
What will be the output of the following PL/M code?
PROCEDURE PRINTNUM(NUM); WRITE(NUM); END PRINTNUM; PRINTNUM(5);
The code will output 5. It defines a procedure called PRINTNUM which takes a single argument NUM and writes it out. Then it calls this procedure with the argument 5.
What does the following PL/M code snippet do?
PROCEDURE ARRAYPROC(ARR[10]); DECLARE I; FOR I = 0 TO 9 DO ARR[I] = I; END ARRAYPROC;
The code defines a procedure called ARRAYPROC that takes an array ARR of size 10 as an argument. It then populates each index of the array with its index value, essentially creating an array of numbers from 0 to 9.
What does the following PL/M code snippet do?
PROCEDURE THREAD_PROC; BEGIN ATOMIC; WRITE('Hello World'); END ATOMIC; END THREAD_PROC;
The code defines a procedure called THREAD_PROC. Inside the procedure, it has an atomic block that writes 'Hello World'. The atomic block ensures the operation inside it is executed without interruption, providing thread safety.

Wrap-up questions

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

How would you implement a switch-case construct in PL/M?
PL/M does not directly support a switch-case construct. However, it can be implemented using a series of IF-ELSEIF statements, or by using a jump table with the CASE statement.
What are the different types of loops in PL/M?
PL/M supports several types of loops including WHILE, REPEAT, and FOR. The WHILE and REPEAT loops are conditional loops that continue as long as a condition is true, whereas the FOR loop is a count-controlled loop that iterates a specified number of times.
Describe the difference between the = and := operators in PL/M.
In PL/M, the = operator is used for comparison, whereas the := operator is used for assignment. For example, IF a = b THEN ...; assigns the value of b to a.

PL/M application related

Product Perfect's PL/M development capabilities

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