GDL Developer Hiring Guide

Hiring Guide for GDL Engineers

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

GDL (Geometric Description Language) is a computer language for describing 3D objects. It was developed in the early 1980s by researchers at the University of Utah. GDL is used in a variety of applications, including computer-aided design (CAD), 3D printing, and virtual reality. Sources: * [GDL on Wikipedia](https://en.wikipedia.org/wiki/GDL_(computer_language)) * [GDL on the University of Utah website](https://graphics.cs.utah.edu/software/gdl/)

First 20 minutes

General GDL knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

How would you use arrays in GDL?

Arrays in GDL are used to store multiple values in a single variable. You can use arrays to store a list of values, such as the coordinates of a series of points, and then access these values using an index number. To use an array in GDL, you would declare the array, assign values to the array elements, and then access the elements using their index numbers.

Describe the difference between global and local variables in GDL.

Global variables in GDL are accessible from anywhere in the script, while local variables are only accessible within the function or subroutine where they are declared. This means that global variables can be used to share data between different parts of the script, while local variables are used to store temporary data that is only needed within a specific function or subroutine.

What is the role of parameters in GDL?

Parameters in GDL are used to control the properties and behavior of an object. They can be used to set the size, shape, color, and other attributes of an object, and can also be used to control how the object behaves in different situations.

How would you create a custom object in GDL?

To create a custom object in GDL, you would start by defining the object's parameters, then write the GDL script to create the object's geometry, and finally save the object as a library part.

What are the basic components of GDL?

The basic components of GDL include the GDL Object, GDL Script, and GDL Library Part. The GDL Object is the 3D model or 2D symbol that is created, the GDL Script is the programming code that defines the object, and the GDL Library Part is the file that contains the object and script.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate show a willingness to learn and adapt to new technologies or methodologies?

This is crucial in the ever-evolving field of software development, where new tools and practices are constantly emerging.

Is the candidate able to work under pressure and meet deadlines?

This is important as it shows the candidate's ability to manage their time effectively and deliver results when needed.

How well does the candidate communicate?

Good communication skills are essential in a team environment to ensure everyone is on the same page and to avoid misunderstandings.

Has the candidate shown problem-solving skills during the interview?

Problem-solving skills are crucial in development roles as they often require finding solutions to complex issues.

Does the candidate have experience with projects similar to ours?

This would indicate that the candidate is capable of handling the tasks and challenges that our project would entail.

Has the candidate demonstrated a deep understanding of GDL programming?

This is important because it shows that the candidate is well-versed in the language and can effectively use it in their development work.

Next 20 minutes

Specific GDL development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

How would you create a parametric object in GDL?

To create a parametric object in GDL, you would first define the parameters that control the object's properties, such as its size, shape, and color. Then, you would write the GDL script to create the object's geometry based on these parameters. Finally, you would save the object as a library part, allowing it to be used in different projects with different parameter values.

What are the different control structures in GDL?

GDL supports several different control structures, including IF-THEN-ELSE for conditional execution, FOR-NEXT and WHILE-WEND for loops, and GOSUB-RETURN for subroutines. These control structures can be used to control the flow of the script and to create complex behaviors.

Describe the difference between a subroutine and a function in GDL.

A subroutine in GDL is a block of code that performs a specific task and can be called from anywhere in the script. A function, on the other hand, is similar to a subroutine but can also return a value. This means that a function can be used in an expression, while a subroutine cannot.

How would you handle errors in GDL?

Error handling in GDL can be done using the ERROR command, which stops the execution of the script and displays an error message. You can also use the IFERROR function to check for errors and handle them in a specific way, such as by displaying a custom error message or by executing a different part of the script.

What are the different data types in GDL?

GDL supports several different data types, including integer, real, string, and boolean. Integer is used for whole numbers, real is used for floating-point numbers, string is used for text, and boolean is used for true/false values.

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 GDL engineer at this point.

At this point, a skilled GDL engineer should have demonstrated strong technical skills in GDL coding, problem-solving capabilities, and a solid understanding of architectural design. Red flags would include inability to explain complex concepts clearly or lack of detail in their responses.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with GDL.

What does the following GDL code do?

def x = 5
def y = 10
def z = x + y
println z

This code defines two variables, x and y, assigns them the values 5 and 10 respectively, then adds them together and assigns the result to a third variable, z. It then prints the value of z, which will be 15.

What will be the output of the following GDL code?

def list = [1, 2, 3, 4, 5]
list.each { println it }

This code will print each element of the list on a new line. So the output will be the numbers 1 through 5, each on their own line.

What does the following GDL code do?

def list = [1, 2, 3, 4, 5]
def newList = list.collect { it * 2 }
println newList

This code creates a new list where each element is twice the value of the corresponding element in the original list. It then prints the new list, which will be [2, 4, 6, 8, 10].

What does the following GDL code do?

import groovy.transform.Immutable

@Immutable
class Person {
  String name
  int age
}

def bob = new Person(name: 'Bob', age: 30)
println bob

This code defines an immutable class Person with properties name and age. It then creates an instance of Person with the name 'Bob' and age 30, and prints the instance.

What will be the output of the following GDL code?

def list = [1, 2, 3, 4, 5]
def sum = list.inject(0) { result, item -> result + item }
println sum

This code calculates the sum of all elements in the list by using the inject method, which applies a binary operation (in this case addition) to all elements of the list. The output will be 15.

What does the following GDL code do?

def list = [1, 2, 3, 4, 5]
def evens = list.findAll { it % 2 == 0 }
println evens

This code creates a new list that contains only the even numbers from the original list. It then prints the new list, which will be [2, 4].

Wrap-up questions

Final candidate for GDL role questions

The final few interview questions for a GDL candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

How would you handle compatibility issues when developing a GDL object for different versions of ARCHICAD?

To handle compatibility issues when developing a GDL object for different versions of ARCHICAD, you would use the VERSION command to check the version of ARCHICAD, and then use conditional execution to run different parts of the script depending on the version. You could also use the IFGDL command to check for the availability of specific GDL features, and use this information to adapt the behavior of the object to the capabilities of the current version of ARCHICAD.

What are the different ways to optimize a GDL script?

There are several ways to optimize a GDL script, including reducing the number of calculations, using efficient data structures, and avoiding unnecessary commands. You can also optimize the script by using the most efficient commands for each task, by reusing code instead of duplicating it, and by organizing the script in a way that makes it easy to understand and maintain.

How would you create a complex GDL object with multiple parts?

To create a complex GDL object with multiple parts, you would use the ADD command to add the parts to the object. Each part would be defined by its own GDL script, and the ADD command would be used to combine these scripts into a single object. The parts could be arranged in a hierarchy, allowing you to control the position and orientation of each part relative to the others.

Describe the difference between a 2D and a 3D GDL object.

A 2D GDL object is a symbol that is used in plan views and sections, while a 3D GDL object is a model that is used in 3D views and renderings. A 2D object is defined by a 2D GDL script, while a 3D object is defined by a 3D GDL script. However, a single GDL library part can contain both a 2D and a 3D script, allowing it to be used in both 2D and 3D views.

What are the different ways to debug a GDL script?

There are several ways to debug a GDL script, including using the CHECK command to check for errors, using the TRACE command to trace the execution of the script, and using the DEBUGGER command to start the GDL debugger. You can also use the PRINT command to display the values of variables, which can help you understand what the script is doing.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

GDL application related

Product Perfect's GDL development capabilities

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