Contra Technical Assessment

Introduction

Welcome to the next step of Contra's engineering interview process! You'll be asked to complete a code assessment in the stack we use internally at Contra: Node.JS, TypeScript, React, GraphQL, and PostgreSQL. We've configured sensible repository defaults and boilerplate Frontend and Backend projects, so you can spend your time writing actual code, not configuration.

We know not everyone has experience with our core stack — that's okay! The goal of this exercise is to assess your ability to learn, and make good software design decisions along the way. To be respectful of your time, this assessment is designed to be completed in under 4 hours and has no deadlines or due dates.

If you have any questions, reach out to Joseph -- he is very helpful 😉.

Choose your own adventure

Software Engineers:

We have split our technical assessment into a backend assessment and frontend assessment -- you are free to choose which one you'd like to complete. While everyone we hire is full-stack, we want every candidate to play to their strengths and past experiences -- we recommend choosing the assessment at which you'll be the most successful. Show us what you've got!

Within the backend and frontend folder you will find a README.md that outlines the technical assessment, criteria and setup steps.

Site Reliability Engineers:

While the SRE role will have you working with frontend and backend code, we would like you to complete the backend assessment so we can get a deeper understanding of your backend software engineering experience.

Repository Setup Instructions

Install NVM The easiest way to install and manage versions Node.JS on your local machine is nvm.

Follow the nvm installation instructions

Next, you'll want to install the version of Node this repository uses -- v16.11

$ nvm install 16.11
$ cd contra-interview-assessment
$ nvm use

If successful, you should get a message like this:

Now using node v16.11.0 (npm v7.11.2) Install Yarn Next, you'll need to install the yarn package manager to install project dependencies and run scripts.

Follow the yarn setup instructions

Evaluation

When evaluating your submission, we care about the following:

  • Correctness
  • Developer Experience
  • Tests of any kind, as long as you can explain why you added the tests that you did
  • Performance & Scaleability
  • Code consistency, style, and quality

There's no perfect solution — "Developer Experience, "Performance & Scaleability,", and "Code Quality" mean different things in different contexts. Use your best judgement, and explicitly call out any assumptions you made along the way. Remember: there aren't any tricks here, and we review every submission with the best intent.

AI Tools

With the rapid pace and innovation of AI for software engineering, we have found tools such as Github CoPilot, ChatGPT and Codeium to be helpful in enabling us to be more productive in writing code. You are free to use these tools (heck we encourage it) with this technical assessment but keep in mind you need to understand the code suggestions they generate if you use them.

Submission

Fork & PR When you're ready, fork this repository and create a Pull Request. In your Pull Request, be sure to clearly explain the changes you made, and any assumptions your reviewer should keep in mind.

Loom Submission

At Contra, we prize great communication over all else. In addition to great written communication, we love concise Loom demos that capture your personality and passion for your work, and convey what you can't in writing. As part of your submission, attach a <5 minute Loom to your PR description that introduces yourself, walks through your code, and the decisions you made along the way. Let us know what your experience was like with AI assisted tooling, what portions you were able to use with them and what modifications (if any) you needed to make.