Code Sample for Drupal Positions at Axelerant

Axelerant needs to know your coding capabilities when applying for a Drupal position. Unfortunately, this is incredibly difficult to do properly. We have to make many tradeoffs between reliability and the time it takes to complete the test.

Currently, Axelerant gives an assignment of writing a small custom Drupal module to all candidates. This assignment is now outdated and will be replaced with something more relevant. At the same time, we understand that completing this test is a challenge for some. This is why we are making an alternative option available to the candidates.

TL;DR

Here’s a quick version of this document intended to give you a glimpse of the process. To go into the details and the intent, read the whole document. Here are the criteria for your code sample.

  • You should be able to prove that you have written it.

  • It must be open-source, contain multiple commits over a period of time (at least a month before your application), and be available at common places where open-source code may be found.

  • That code could be anything to do with a Drupal 8/9 website. It could be a website (should still be open-source), a contrib module, profile, or other tooling strongly related to Drupal.

  • It should not be trivial.

  • If you don’t have anything that satisfies the above (and requirements in the document), request a code test.

What we look for in your code sample

You are expected to deliver production-grade code adhering to various standards. We look for adherence to software engineering best practices and Drupal coding standards. Some of the things we will check are as follows:

  • Drupal code style

  • Drupal Composer workflow

  • Configuration exported as per Drupal configuration management practices

  • Readable and efficient code in custom modules

  • Clear naming convention and proper grammar in descriptions, code, and configuration

  • Clear and meaningful commit messages with links to issue numbers where applicable

This list is not exhaustive and should indicate the quality standards we expect when interviewing and working at Axelerant.

Code Sample

With the above in mind, let’s look at the two options you can use to demonstrate your coding experience. The first option is to send us your existing open-source work as long as it meets a few conditions (see below). But we also understand that you may not have any open-source contributions or may not be of sufficient complexity. In that case, we have a second option described below. Further, we may not be able to determine fitment based on your existing work. In that case, we ask you for other work or give you the test as per our second option.

Option 1: Existing open-source work

You can send us a link to an existing open-source Drupal module, package, or website with reasonable history. To make sure we are actually reviewing your work, here are a few rules.

  • The work MUST be related to Drupal 8 or later. PHP packages are awesome but don’t help us evaluate your Drupal skills.

  • The code MUST be in a version-controlled repository that is publicly accessible on Github, Drupal.org, or a similar platform.

  • The work MUST be open-source or of a license similar to open-source. In other words, the code you have written which is meant to be proprietary is NOT acceptable.

  • There MUST be a useful commit history dating from before your application to Axelerant.

  • A reasonable number of commits MUST be from your email address. The definition of “reasonable number” is subjective, but as a hint, 30% of the commits in a given timeframe should be yours.

  • You MUST have at least a few commits recently. This is subjective, but as a hint, you should show some work you have done recently. It doesn’t help us evaluate you based on the code you wrote a year back.

  • The work SHOULD be meaningful and useful. That is to say; please don’t submit hello world modules or programs. That doesn’t help you or us.

  • The work SHOULD demonstrate multiple aspects of development for Drupal. For example, if you send a Drupal website, we would love to see how you manage the site configuration. For a module, we want to see coding standards and structure. Remember that any of this code MUST NOT be proprietary.

  • If you are sending a website, it MUST still contain a few custom modules you have worked on.

We realize this may feel like a lot, but we believe this reasonable expectation of any open-source work. We cannot verify closed-source work as yours, and hence we cannot accept that. We also review how you work, and that is why we need to look at the commit history, not just the code.

If this does not work for you, please read on for the second option.

Option 2: Axelerant’s coding test

We understand that you may not have work fulfilling the conditions required in option 1. In that case, you can ask for Axelerant’s coding test. You must do the coding test on our portal (solve.axelerant.com), for which you will receive account details via email. The portal is our Gitlab instance where you get access to a code repository for yourself. You are required to complete the test within that repository.

We will split your test into 6-7 tasks depending on the level you have applied for. These tasks will be present in the portal as Gitlab issues, and you may refer to them in your commit messages and merge requests. The code repository already contains a functioning Drupal project along with a database that contains sample content. Your tasks will include a few routine tasks similar to what you might deal with day-to-day when working at Axelerant. Some of them are trivial and may take only 5 mins whereas others may be more involved. Overall, we are aiming for the test to take you 4 hours. However, we don’t measure the time you actually spend, and you are free to complete the test over a period of 2-3 weeks.

Submitting your code

Depending on your selected option, you will submit the code as a link or commits made to our test portal. Look out for more specific instructions in our emails or talk to our recruitment team.