Aurelia Developer Hiring Guide

Hiring Guide for Aurelia Engineers

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

Aurelia is a modern, open-source JavaScript framework for web, mobile and desktop application development. It was introduced in 2015 by Rob Eisenberg, who was a part of the AngularJS development team. Aurelia stands out due to its simplicity, forward-thinking standards compliance and strong emphasis on web standards. It supports ES5, ES2015, ES2016 and many other types of compilation targets. The information about Aurelia can be found on its official website (aurelia.io) and various tech blogs such as SitePoint or InfoWorld.

First 20 minutes

General Aurelia 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.

What are the lifecycle hooks in Aurelia?

The lifecycle hooks in Aurelia include canActivate, activate, canDeactivate, deactivate, bind, unbind, attached, and detached.

How would you create a custom attribute in Aurelia?

To create a custom attribute in Aurelia, you would need to use the @customAttribute decorator and export a class with the same name as your attribute. The class should have a method called 'valueChanged' that will be called whenever the attribute's value changes.

Describe the difference between one-way and two-way data binding in Aurelia.

One-way data binding in Aurelia allows changes in the model to update the view but not vice versa. On the other hand, two-way data binding allows changes in the model to update the view and changes in the view to update the model.

What are some of the benefits of using Aurelia?

Aurelia offers a range of benefits including its simplicity, extensibility, and adherence to modern web standards. It also provides a clean and intuitive syntax, and a strong focus on web components.

How would you install Aurelia?

You can install Aurelia using npm or yarn. For npm, use the command 'npm install aurelia-framework'. For yarn, use 'yarn add aurelia-framework'.

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 world of web development is constantly evolving, so it's important that the candidate is willing to learn and adapt to new technologies and practices.

Has the candidate worked on any projects or tasks that utilized Aurelia?

Practical experience with Aurelia is a strong indicator of the candidate's ability to use the framework effectively in a real-world setting.

Can the candidate solve problems and debug issues in Aurelia?

Problem-solving skills are essential for any developer role, and being able to debug issues in Aurelia specifically is a key skill for this position.

Is the candidate familiar with modern web development practices and tools?

This is necessary because Aurelia is a modern framework and using it effectively requires a good understanding of modern web development practices and tools.

Has the candidate demonstrated experience with JavaScript and TypeScript?

Aurelia is built with JavaScript and TypeScript, so experience with these languages is necessary to work effectively with the framework.

Does the candidate have a solid understanding of Aurelia's core concepts?

This is important because Aurelia is a complex framework and understanding its core concepts is crucial for effective development.

Next 20 minutes

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

What are the different ways to bind data in Aurelia?

In Aurelia, you can bind data using one-way binding, two-way binding, and event-to-method binding. One-way binding is used to bind data from the model to the view, two-way binding is used to bind data between the model and the view, and event-to-method binding is used to bind DOM events to methods in the view-model.

Describe the difference between 'attached' and 'bind' lifecycle hooks in Aurelia.

The 'bind' lifecycle hook in Aurelia is called when the databinding engine binds the view to the view-model. The 'attached' lifecycle hook is called after the view is attached to the DOM.

How would you implement dependency injection in Aurelia?

Dependency injection in Aurelia can be implemented using the @inject decorator. You can use it to annotate a class with the dependencies that it requires, and Aurelia will automatically provide them when creating an instance of the class.

What is the purpose of the Aurelia CLI?

The Aurelia CLI is a command line interface tool that helps with creating, developing, and testing Aurelia applications. It can generate project scaffolding, manage dependencies, run tests, and bundle your application for deployment.

How would you handle routing in Aurelia?

Routing in Aurelia is handled by the aurelia-router module. You can define routes in the configureRouter method of your ViewModel. Each route has a name, a route pattern, and a moduleId that points to the ViewModel for that route.

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

At this point, a skilled Aurelia engineer should demonstrate strong knowledge of JavaScript, including ES6 and TypeScript, as these are at the core of Aurelia. They should also show experience with modern web development tools and practices. Red flags would be lack of hands-on experience or poor understanding of JavaScript, TypeScript, and web components.

Digging deeper

Code questions

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

What does the following Aurelia code do?

export class App {
  message = 'Hello World!';
}

This code defines a class named 'App' with a single property 'message' that is initialized with the string 'Hello World!'. This is a simple Aurelia component.

What will be the output of the following Aurelia code?

This code will output the value of the 'message' property inside an h1 tag. If 'message' is not defined in the corresponding ViewModel, it will not output anything.

What does the following Aurelia code do?

export class App {
  items = ['item1', 'item2', 'item3'];
}

This code defines a class named 'App' with a single property 'items' that is initialized with an array of strings. This array can be used for data binding in the view.

What does the following Aurelia code do?

import {TaskQueue} from 'aurelia-framework';

export class App {
  static inject = [TaskQueue];

  constructor(taskQueue) {
    this.taskQueue = taskQueue;
  }
}

This code imports the 'TaskQueue' from 'aurelia-framework' and injects it into the 'App' class. The 'TaskQueue' can be used to queue tasks that will be executed in the next JavaScript event loop.

What does the following Aurelia code do?

export class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

This code defines a 'Person' class with a constructor that takes 'firstName' and 'lastName' as parameters. It also defines a getter 'fullName' that returns the full name of the person.

What will be the output of the following Aurelia code?

import {computedFrom} from 'aurelia-framework';

export class App {
  firstName = 'John';
  lastName = 'Doe';

  @computedFrom('firstName', 'lastName')
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

This code defines a 'fullName' getter that is computed from the 'firstName' and 'lastName' properties. The '@computedFrom' decorator is used to specify that 'fullName' should be recomputed whenever 'firstName' or 'lastName' changes. If 'fullName' is accessed, it will return 'John Doe'.

Wrap-up questions

Final candidate for Aurelia role questions

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

How would you optimize an Aurelia application for better performance?

To optimize an Aurelia application for better performance, you can use techniques such as lazy loading, bundling and minification, using the @computedFrom decorator for expensive computations, and optimizing your bindings and observers.

Describe the difference between 'valueConverter' and 'bindingBehavior' in Aurelia.

In Aurelia, 'valueConverter' is used to create custom conversion logic that can be used in bindings, while 'bindingBehavior' is used to modify the behavior of a binding. For example, a value converter could be used to format a date, and a binding behavior could be used to throttle the updates of a two-way binding.

How would you implement internationalization (i18n) in an Aurelia application?

Internationalization in an Aurelia application can be implemented using the aurelia-i18n plugin. This plugin provides a set of APIs and conventions to translate your application's text into different languages.

What is the role of the 'canActivate' lifecycle hook in Aurelia?

The 'canActivate' lifecycle hook in Aurelia is used to determine whether a route can be activated or not. If the canActivate method returns false or a Promise that resolves to false, the navigation will be cancelled.

How would you handle form validation in Aurelia?

Form validation in Aurelia can be handled using the aurelia-validation plugin. This plugin allows you to define validation rules for your model and validate user input against these rules.

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

Aurelia application related

Product Perfect's Aurelia development capabilities

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