Hiring guide for E Engineers

E Developer Hiring Guide

The E programming language is a secure, distributed, pure-object-oriented language developed by Mark S. Miller and others at Electric Communities in 1997. It was designed to support secure cooperation among mutually suspicious parties over networks using capabilities-based security principles. The E programming language's primary influences include Java for its syntax and concurrency model, Python for its readability and ease of use, NewtonScript for its prototype-based inheritance mechanism, Actor Model languages like Joule for their event-loop concurrency model as well as capability systems such as KeyKOS. According to the official website (erights.org), it has been used in various fields including peer-to-peer networking software development and cryptographic systems implementation. Despite not being widely adopted or recognized like other mainstream languages such as Python or Java, the E programming language remains an influential project due to its unique focus on robust security

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

First 20 minutes

General E app knowledge and experience

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

How would you describe the E language?
E is a secure, distributed, pure-object platform and p2p scripting language for writing Capability-based Smart Contracts.
What are the key features of the E language?
E language features include support for distributed computing, capability-based security, promise pipelining, non-determinism, and event-loop concurrency.
How would you run a simple E program?
To run a simple E program, you need to use the E interpreter, typically with a command like 'rune filename.e'.
Describe the difference between E and JavaScript.
While both are object-oriented languages, E is designed for secure distributed computing and has features like promise pipelining and event-loop concurrency. JavaScript, on the other hand, is primarily used for client-side web development.
What is promise pipelining in E?
Promise pipelining is a feature in E that allows asynchronous method calls. It enables an object to send a message to another object's future result, even before the result is known.
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 strong understanding of E development?
Has the candidate demonstrated problem-solving skills?
Is the candidate able to communicate their thoughts and ideas effectively?
Has the candidate shown they can work well under pressure?

Next 20 minutes

Specific E 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 exceptions in E?
In E, exceptions are handled using 'try-catch-finally' blocks, similar to many other programming languages.
What are the data types supported by E?
E supports several data types including numbers, text, lists, maps, and more complex types like objects and promises.
How would you create a custom object in E?
In E, you can create a custom object using 'def' keyword followed by the object name and its methods enclosed in curly braces.
What is capability-based security in E?
Capability-based security in E is a security model that controls access and permissions based on 'capabilities', which are unforgeable tokens of authority.
How would you implement inheritance in E?
E doesn't support class-based inheritance. Instead, it uses prototypal inheritance where an object can inherit properties and methods from another object.
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 E engineer at this point.

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

What does the following code do?
{ "name":"John", "age":30, "city":"New York" }
This code snippet is a JSON object that represents a person with properties name, age, and city. The name of the person is John, age is 30, and city is New York.
What will be the output of the following code?
{ "employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter", "lastName":"Jones"} ]}
This JSON object represents a collection of employees. Each employee is an object with properties firstName and lastName. The output will be a list of employees with their first and last names.
What does the following code do?
{ "book":[ {"title":"Harry Potter", "author":"J.K. Rowling"}, {"title":"Lord of the Rings", "author":"J.R.R. Tolkien"} ]}
This JSON object represents a collection of books. Each book is an object with properties title and author. The collection contains two books: Harry Potter by J.K. Rowling and Lord of the Rings by J.R.R. Tolkien.
What does the following code do?
{ "thread": { "id":1, "state":"RUNNING" } }
This JSON object represents a thread with properties id and state. The id of the thread is 1 and its state is RUNNING.

Wrap-up questions

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

Describe the difference between synchronous and asynchronous messages in E.
Synchronous messages in E wait for the receiver to finish processing before the sender can continue, while asynchronous messages allow the sender to continue without waiting for the receiver.
How would you write a recursive function in E?
In E, you can write a recursive function by defining a function that calls itself within its body. However, you need to ensure there's a base case to prevent infinite recursion.
What are guards in E and how are they used?
Guards in E are used to verify the type and structure of data. They provide a way to ensure that the data an object receives matches the expectations.

E application related

Product Perfect's E development capabilities

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