Hiring guide for Pharo Smalltalk (Pharo) Engineers

Pharo Smalltalk (Pharo) Developer Hiring Guide

Pharo Smalltalk, or simply Pharo, is a modern, open-source programming language inspired by the original Smalltalk-80 language. It was first introduced in 2008 as a fork of Squeak, another Smalltalk variant. Pharo is developed and maintained by an international community of developers and has been used for various applications including web development and data analysis. The software offers a unique live coding environment which allows developers to modify running programs directly. Its design principles emphasize simplicity and immediate feedback, making it an ideal tool for both novice programmers and experienced professionals.

Ask the right questions secure the right Pharo Smalltalk (Pharo) talent among an increasingly shrinking pool of talent.

First 20 minutes

General Pharo Smalltalk (Pharo) app knowledge and experience

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

What are the key features of Pharo Smalltalk?
Pharo Smalltalk has several key features including live programming and debugging, a pure object-oriented language, a powerful IDE, and a large and active community. It also supports reflective programming, which allows the modification of the program's structure and behavior.
How would you create a new class in Pharo?
In Pharo, you can create a new class by using the class creation template in the system browser. You need to specify the class name, its superclass, instance variables, and class variables.
What is the role of the System Browser in Pharo?
The System Browser in Pharo is a tool that allows developers to browse and edit the source code of the system. It provides a view of the classes, methods, and packages in the system.
How would you handle exceptions in Pharo?
In Pharo, exceptions are handled using the on:do: method. The first argument is the exception class and the second argument is a block of code that will be executed when the exception is raised.
What is the purpose of the Transcript in Pharo?
The Transcript in Pharo is a tool that provides a simple way to output text. It is often used for debugging and logging purposes.
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 Pharo Smalltalk syntax and semantics?
Has the candidate demonstrated experience with object-oriented programming?
Can the candidate solve complex problems using Pharo Smalltalk?
Does the candidate have experience with test-driven development in Pharo?

Next 20 minutes

Specific Pharo Smalltalk (Pharo) 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.

Describe the difference between a BlockClosure and a Method in Pharo.
A BlockClosure in Pharo is a piece of code that can be executed later, while a Method is a piece of code associated with a class that can be executed when an object of that class receives a message.
What are Traits in Pharo and how would you use them?
Traits in Pharo are a way to share behavior among classes. They are similar to interfaces in other languages, but they can provide both method definitions and state variables. You can use them by declaring them in the class definition.
How would you perform file I/O operations in Pharo?
In Pharo, you can perform file I/O operations using the FileSystem library. It provides classes and methods for reading from and writing to files.
What is the role of the Metaclass in Pharo?
In Pharo, every class has a metaclass. The metaclass defines the behavior of the class itself, such as its class methods.
How would you implement polymorphism in Pharo?
In Pharo, polymorphism is implemented through the use of inheritance and message passing. A method can be defined in a superclass and overridden in a subclass to provide different behavior.
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 Pharo Smalltalk (Pharo) engineer at this point.

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

What does the following code do in Pharo Smalltalk?
'Hello, World' printString
This code prints the string 'Hello, World' to the console.
What will be the output of the following code?
5 factorial
The output of the code will be 120. The factorial method calculates the factorial of a number, in this case 5.
What does the following code do in Pharo Smalltalk?
#('apple' 'banana' 'cherry') collect: [ :each | each size ]
This code creates a new collection with the sizes of the strings in the original collection. The output will be a collection with the values (5, 6, 6).
What does the following code do in Pharo Smalltalk?
[ 1 to: 1000 do: [ :i | i factorial ] ] fork
This code starts a new thread that calculates the factorial of each number from 1 to 1000.

Wrap-up questions

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

What is the purpose of the doesNotUnderstand: method in Pharo?
The doesNotUnderstand: method in Pharo is a part of the exception handling system. It is invoked when an object receives a message that it does not understand, i.e., there is no method corresponding to that message in the object's class.
Describe the difference between == and = in Pharo.
== in Pharo tests for identity, i.e., whether two variables refer to the exact same object. = tests for equality, i.e., whether two objects are equivalent in some sense, which is defined by the = method in the class of the objects.
How would you implement a recursive algorithm in Pharo?
In Pharo, you can implement a recursive algorithm by defining a method that calls itself. You need to ensure that there is a base case to stop the recursion, otherwise it will result in a stack overflow.

Pharo Smalltalk (Pharo) application related

Product Perfect's Pharo Smalltalk (Pharo) development capabilities

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