What makes a good hiring process assignment?
Tags: interview, rails, react, hiring
Published: 2020-08-16 12:23:55

When you are opening a position there ius a number of things you can do to _try_ to assess a candidate's fit for the job, but all of the have pros and cons.

This is the list, ordered by fidelity of the signal, but commented with potential pitfalls:
 
1. Hire them for 2-4 weeks and give them a small but significant business-relevant task.
  - expensive
  - time intensive
  - very difficult if the candidate is engaged ful-time anywhere else
  - limited by the complexity of your company's onboarding/stack
1. Pair with the candidate for a couple of hours on an exercise that is representative of their future responsibilities
  - expensive (even if you don't compensate the candidate, the interviewer will be pulled away from regular tasks)
  - may be difficult to judge teamwork-collaboration while pairing with a stranger
  - may missrepresent candidates used to async collaboration
1. Give candidates and (small) exercise to take home, then review their code in a Pull Request manner and chat with them about the tradeoffs
  - very demanding of the candidate's time specially if they are in several processes, or already working full-time
  - difficult to make the exercise relevant, but not overbearing
1. Give candidates a real time exercise to solve in front of you during the interview (a.k.a the whiteboard test)
  - it relates more to stress-tolerance than to potential performance
  - it can go well for good quizz-solvers, but badly for meticulous analysts/planners.
  - you just go [read it](https://duckduckgo.com/?t=ffab&q=why+whiteboard+interview+is+bad&atb=v198-1&ia=web)

When you are in a small company with no full time HR dept, you may count yourself lucky Num 3, so how can it be done in the best possible way?

Here is what I have come up with, I hope you find it useful, and comment if you have suggestions:


## Avoid Boilerplate

Don't make the candidates waste time setting up a basic project for you. Either give them a readymade repository with all trivial stuff already set up, or better, give them a realistic sandbox. 

**Examples:**

* [Single File Rails Application](https://christoph.luppri.ch/articles/rails/single-file-rails-applications-for-fun-and-bug-reporting/) this cam be easily adapted to use RSpec instead of Minitest, or sqlite instead of postgres, go make yours! it is useful for personal experiments too.

* Single File React and SCSS playground:
```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Interview test</title>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/browser-scss@1.0.3/dist/browser-scss.min.js"></script>
    <style style type="text/scss">
      $primary-color: #333;
      body {
        color: $primary-color;
      }
      /* Your CSS */
    </style>
  </head>
  <body>
    <div id="root"></div>
    <script type="text/babel">

      class Interview extends React.Component {
        render() {
          return (
            <div className="interview">
              your component here
            </div>
          )
        }
      }

      ReactDOM.render(
        <DropDown />,
        document.getElementById('root')
      );
    </script>
  </body>
</html>
```

## Make it relevant, not _real_

Sure your company knows about all the little details of your business domain, but your candidates shouldn't need to. So simplify, take your three core business domain classes, and trim them down to the most abstract, just paper napkin level detail as the CEO could have done a couple years ago pitching the idea to tha first investor.

Details and trade slang re second nature to you, after some years in the biz, but they can get a candidate lost for no good reason.

Build your exercise entities with a level of detail than can be explained in two minutes, and leave up to the chat to see if the candidate has good questions about the details, or if they don't, you can ask them and see how they do respond, without making the original exercise unwieldy complicate. 

## Make bells and whistles optional

Don't you do a stopwatch controlled exercise, people have lives and they are not even working for you yet.

Do plan an exercise that can be solved in a couple of hours because asking for more unpaid work is wrong. Some candidates might be able, and willing to throw more time than others into your exercise. You ask for a ruby script that makes stats, and some of them bring it with tests, rich format documentation, sample data, and command-line interactive help about the arguments...

You may thing that shows commitment and thoroughness, and it does, but also shows you who has free time, is not a main care giver, or is not parallelizing 20 job application because they are the main earner at home. None of that matters, those who do not go the extra mile might know perfectly how to do it, and can tell you if asked, but could no go there on a couple of hours or just though it was not part of the exercise.

I hope you like these reflection, or at least you find them useful, or thougth provoking.

How do you design you hiring exercises?