Hiring guide for Nu Engineers

Nu Developer Hiring Guide

Nu is a dynamic, interpreted programming language that was developed as an alternative to traditional shell scripting. It was designed by Tim Burks and is heavily influenced by Lisp and Ruby. Nu uses a Lisp-like syntax but incorporates features from other modern programming languages such as object-oriented programming, functional programming, and data-driven programming. It also allows developers to directly access Objective-C APIs on macOS platforms, making it particularly useful for tasks related to system administration and scripting on these systems. Nu's design philosophy emphasizes expressiveness and flexibility, aiming to make it easier for programmers to write clear and concise code.

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

First 20 minutes

General Nu app knowledge and experience

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

How would you install Nu on a macOS?
You can install Nu on macOS using Homebrew. The command is 'brew install nushell'.
What are the basic data types in Nu?
The basic data types in Nu include integers, strings, booleans, decimals, and tables.
How would you convert a string to an integer in Nu?
You can use the 'str to-int' command to convert a string to an integer in Nu.
Describe the difference between 'where' and 'select' in Nu.
'Where' is used to filter rows in a table based on a condition, while 'select' is used to choose specific columns from a table.
How would you sort a table in Nu?
You can use the 'sort-by' command to sort a table in Nu. For example, 'ls | sort-by size' would sort the files by size.
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

Has the candidate demonstrated a strong understanding of Nu programming language?
Does the candidate show problem-solving skills?
Is the candidate able to communicate effectively?
Does the candidate have relevant experience or projects?

Next 20 minutes

Specific Nu 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.

What are the uses of 'each' command in Nu?
'Each' command is used to apply a block of code to each element in a list or table.
How would you create a custom command in Nu?
You can create a custom command in Nu using the 'def' keyword. For example, 'def add [x y] { = $x + $y }' would create a command 'add' that adds two numbers.
Describe the difference between 'let' and 'def' in Nu.
'Let' is used to create a variable, while 'def' is used to create a function or command.
How would you handle errors in Nu?
You can handle errors in Nu using the 'try' and 'catch' commands. For example, 'try { command } catch { echo $it }' would catch any errors from 'command' and print them.
What are the uses of 'match' command in Nu?
'Match' command is used for pattern matching. It can be used to destructure data and perform different actions based on the pattern.
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 Nu engineer at this point.

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

What does the following Nu code do?
(defn hello-world [] (println "Hello, World!"))
This code defines a function named 'hello-world' that takes no arguments and prints the string 'Hello, World!' when called.
What will be the output of the following Nu code?
(set x '(1 2 3)) (set y (map (do (x) (* x x)) x)) (println y)
This code will output a list of the squares of the numbers 1, 2, and 3. So, the output will be '(1 4 9)'.
What does the following Nu code do?
(set x '(1 2 3 4 5)) (set y (filter (do (x) (> x 3)) x)) (println y)
This code filters the list 'x' to only include elements greater than 3. It then prints this new list. So, the output will be '(4 5)'.
What does the following Nu code do?
(do (x) (Thread.sleep 1000) (println x))
This code creates a new thread that sleeps for 1000 milliseconds (or 1 second) before printing the value of 'x'.

Wrap-up questions

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

How would you parse JSON in Nu?
You can parse JSON in Nu using the 'from json' command. For example, 'open file.json | from json' would parse a JSON file.
Describe the difference between 'open' and 'read' in Nu.
'Open' is used to open a file and read its contents into a table, while 'read' is used to read the file as a string.
How would you write a script in Nu?
You can write a script in Nu by creating a file with the '.nu' extension and writing Nu commands in it. You can then run the script using the 'nu' command.

Nu application related

Product Perfect's Nu development capabilities

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