Hiring guide for TADS Engineers

TADS Developer Hiring Guide

TADS, or Text Adventure Development System, is a robust, free authoring system for creating interactive fiction, originally developed by Michael J. Roberts in 1987. It has undergone several revisions, with the latest version, TADS 3, released in 2006, offering advanced features for complex storytelling. TADS gained popularity for its object-oriented approach, making it easier for programmers to manage the complexity of large games. It has been used to create award-winning games, such as "Spider and Web" and "Photopia". The language, along with its extensive documentation and libraries, is available for download on the official TADS website.

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

First 20 minutes

General TADS app knowledge and experience

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

How would you describe the basic structure of a TADS game?
A TADS game is structured around objects and classes. Objects represent things in the game world, and classes define types of objects. The game world is built by creating objects and arranging them in a hierarchy.
What are the main components of a TADS game?
The main components of a TADS game are objects, properties, methods, and functions. Objects represent things in the game world, properties store information about objects, methods define what objects can do, and functions perform general tasks.
Describe the difference between a property and a method in TADS.
A property in TADS is a variable that stores information about an object, such as its name or location. A method, on the other hand, is a function that's associated with an object and defines what the object can do.
How would you create a new object in TADS?
To create a new object in TADS, you use the 'new' keyword followed by the name of the class that the object should be an instance of. You can then define properties for the object using the 'prop' keyword.
What are the steps to compile a TADS game?
To compile a TADS game, you first write the game in TADS source code. Then, you use the TADS compiler to convert the source code into a game file that can be played with a TADS interpreter.
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 TADS language?
Has the candidate demonstrated problem-solving skills?
Does the candidate have experience with similar projects or tasks?
Has the candidate shown an ability to work in a team?

Next 20 minutes

Specific TADS 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 player input in TADS?
Player input in TADS is handled by the parser, which interprets the player's commands and calls the appropriate methods on the relevant objects. You can customize the parser's behavior by defining your own command verbs and syntax.
What are the key features of TADS 3?
TADS 3 has many key features, including a powerful object-oriented programming language, a flexible parser, a rich library of pre-defined objects and classes, and support for multimedia elements like images and sound.
Describe the difference between TADS 2 and TADS 3.
TADS 3 is a major upgrade from TADS 2, with a more powerful programming language, a more flexible parser, a richer library, and better support for multimedia. However, TADS 2 is simpler and easier to learn, and some authors still prefer it for that reason.
How would you implement a puzzle in a TADS game?
To implement a puzzle in a TADS game, you would create objects that represent the elements of the puzzle, define properties and methods for those objects that model the puzzle's behavior, and write code that checks for the puzzle's solution and reacts accordingly.
What are the advantages of using TADS over other interactive fiction systems?
TADS has several advantages over other interactive fiction systems, including a powerful programming language, a flexible parser, a rich library, and support for multimedia. It's also free and open source, and has a large and active community of authors and players.
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 TADS engineer at this point.

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

What does this simple TADS code do?
main(args) { "Hello, World!".print(); }
This code prints the string 'Hello, World!' to the console.
What does this TADS code do?
main(args) { local x = 5; local y = 10; x = y; y = x; }
This code declares two local variables x and y, assigns the value of y to x, and then assigns the value of x to y. However, the final values of x and y will both be 10, because the original value of x is lost when it is assigned the value of y.
What will be the output of this TADS code?
main(args) { local arr = [1, 2, 3, 4, 5]; arr.forEach({x: x*2}.print()); }
This code will print the numbers 2, 4, 6, 8, 10. It multiplies each element of the array by 2 and prints the result.
What does this TADS code do?
main(args) { local x = 5; local y = 10; Thread.create({x = y;}); Thread.create({y = x;}); }
This code creates two threads. The first thread assigns the value of y to x, and the second thread assigns the value of x to y. However, due to the nature of threading, the order of execution is not guaranteed, and the final values of x and y could be either 5 or 10.

Wrap-up questions

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

How would you debug a TADS game?
To debug a TADS game, you can use the TADS debugger, which lets you step through your code, inspect the values of variables, and set breakpoints. You can also use the 'trace' function to print out information about the game's state.
Describe the difference between 'replace' and 'modify' in TADS.
'Replace' and 'modify' are both used to change the definition of an existing object or class in TADS. The difference is that 'replace' completely replaces the original definition, while 'modify' only changes the specified parts and leaves the rest unchanged.
How would you implement a conversation system in TADS?
To implement a conversation system in TADS, you would create objects that represent the characters, define properties and methods for those objects that model the characters' responses, and write code that handles the player's input and generates the appropriate responses.

TADS application related

Product Perfect's TADS development capabilities

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