LotusScript Developer Hiring Guide

Hiring Guide for LotusScript Engineers

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

LotusScript is a proprietary, object-oriented programming language developed by Lotus Development Corporation, now owned by IBM. It was first introduced in 1993 as part of Lotus Notes Release 4 and is primarily used for automating tasks within the Lotus platform. The language shares similar syntax and semantics with Visual Basic, facilitating ease of use for those familiar with VB. Despite its specific application scope, it remains an integral part of the IBM Domino environment due to its robust capabilities in manipulating text files and databases. Today, it continues to be utilized in various business applications that require complex document manipulation or integration with legacy systems.

First 20 minutes

General LotusScript 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 handle errors in LotusScript?

In LotusScript, errors can be handled using 'On Error' statement. For example, 'On Error Goto ErrorHandler' would direct the program control to the ErrorHandler section if an error occurs.

What is the purpose of the 'Option Declare' statement in LotusScript?

The 'Option Declare' statement forces explicit declaration of all variables. This helps in preventing errors due to misspelled variable names and also improves code readability.

How would you write a conditional statement in LotusScript?

A conditional statement in LotusScript can be written using 'If', 'ElseIf' and 'Else' keywords. For example: 'If x > y Then print "x is greater" Else print "y is greater" End If'.

What are the data types supported in LotusScript?

LotusScript supports several data types including Integer, Long, Single, Double, String, Variant, Date/Time, and user-defined types.

How would you declare a variable in LotusScript?

In LotusScript, you declare a variable using the 'Dim' keyword. For example, 'Dim x As Integer' declares a variable named x of type Integer.

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?

The tech field is always evolving, so it's important for developers to be open to learning new skills and adapting as needed.

Has the candidate shown an ability to work well in a team?

Most development projects require teamwork, so it's important that they can collaborate effectively with others.

Does the candidate have experience with other relevant technologies such as JavaScript, HTML, or CSS?

While the focus is on LotusScript, having a broader understanding of related technologies can be beneficial and allow for more versatile development.

Is the candidate able to communicate effectively?

Good communication skills are important in any role, but especially in development where they may need to explain complex concepts to non-technical colleagues.

Has the candidate demonstrated problem-solving skills?

Problem-solving is key in development roles as they will need to troubleshoot and resolve any issues that arise in the coding process.

Does the candidate have a solid understanding of LotusScript?

This is crucial as the primary responsibility of the role is to develop and maintain applications using LotusScript.

Next 20 minutes

Specific LotusScript 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 connect to a Domino server in LotusScript?

In LotusScript, you can connect to a Domino server using the 'NotesSession' class. For example, 'Dim session As New NotesSession' creates a new session.

What are the ways to access data in a NotesDocument object?

Data in a NotesDocument object can be accessed using the 'GetItemValue' method or by referencing the field directly. For example, 'doc.GetItemValue("FieldName")' or 'doc.FieldName'.

How would you create an array in LotusScript?

In LotusScript, an array can be created using the 'Dim' keyword followed by the array name and dimensions. For example, 'Dim arr(5) As Integer' creates an integer array with 6 elements.

What are the types of loops available in LotusScript?

LotusScript supports several types of loops including 'For', 'While', 'Do While', and 'Do Until'.

Describe the difference between a function and a sub in LotusScript.

In LotusScript, a function is a procedure that returns a value, while a sub is a procedure that does not return a value.

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

At this point, a skilled LotusScript engineer should demonstrate proficiency in LotusScript programming, a solid understanding of Lotus Notes/Domino applications, and problem-solving abilities. Red flags include lack of practical experience, inability to troubleshoot, or poor communication skills.

Digging deeper

Code questions

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

What does this simple LotusScript code do?

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Messagebox uidoc.FieldGetText("Subject")

This code gets the current document opened in the user interface, and then displays a message box with the value of the 'Subject' field from that document.

What will be the output of this LotusScript code?

Dim x As Integer
Dim y As Integer
x = 10
y = 20
Print x + y

The output of this code will be 30. It adds the values of x and y, which are 10 and 20 respectively, and then prints the result.

What does this LotusScript code do with an array?

Dim arr(1 To 5) As String
arr(1) = "Apple"
arr(2) = "Banana"
arr(3) = "Cherry"
arr(4) = "Date"
arr(5) = "Elderberry"
Forall fruit In arr
Print fruit
End Forall

This code declares an array of strings, assigns some fruit names to each element, and then prints each fruit name. The Forall loop is used to iterate over all elements in the array.

What does this LotusScript code do related to threading?

Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.GetDatabase("", "names.nsf")
Call db.OpenByReplicaID("8525646F:006B2E5C")

This code opens a database by its replica ID on the same server as the current database. LotusScript doesn't support multi-threading, but it can handle multiple database connections in the same script.

What does this LotusScript code do related to class design?

Class Car
Private brand As String
Sub New(b As String)
brand = b
End Sub
End Class
Dim myCar As New Car("Toyota")

This code defines a class 'Car' with a private member 'brand'. It also defines a constructor for the class that takes a string argument to initialize the 'brand'. Then it creates an instance of the 'Car' class with 'Toyota' as the brand.

What will be the output of this advanced LotusScript code?

Dim doc As NotesDocument
Set doc = New NotesDocument( db )
doc.Form = "Memo"
doc.Subject = "Test"
Call doc.Save( True, True )

This code creates a new document in the current database, sets its form to 'Memo', sets its subject to 'Test', and then saves the document. There is no output as such, but a new document will be created in the database.

Wrap-up questions

Final candidate for LotusScript role questions

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

How would you create and manipulate a 'NotesDocumentCollection' in LotusScript?

A 'NotesDocumentCollection' can be created using the 'Database' class's 'Search' method or 'View' class's 'GetAllDocumentsByKey' method. It can be manipulated using methods like 'AddDocument', 'DeleteDocument', etc.

Describe the difference between 'Call' and 'Run' methods in LotusScript.

'Call' is used to invoke a sub or function in the same script, while 'Run' is used to execute a command or another script.

What is the purpose of the 'NotesDatabase' class in LotusScript?

The 'NotesDatabase' class represents a Domino database. It provides methods and properties to create, delete, open, and manipulate databases.

How would you manipulate strings in LotusScript?

LotusScript provides several functions for string manipulation including 'Left$', 'Right$', 'Mid$', 'InStr', 'Len', 'Trim', 'Lcase', 'Ucase', etc.

Describe the difference between 'GetDocumentByUNID' and 'GetDocumentByKey' methods in LotusScript.

'GetDocumentByUNID' retrieves a document by its Universal ID, while 'GetDocumentByKey' retrieves a document based on a key in a view.

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

LotusScript application related

Product Perfect's LotusScript development capabilities

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