A coding assessment is a short technical interview that is typically carried out live, where the candidate is accompanied by an interviewer and is asked to solve a coding challenge.
Throughout this guide we'll use beat-interviewing/example-coding-assignment as the coding assignment. The assignment requires candidates to implement a function which when called returns the next number in the Fibonacci sequence. In practice we encourage assignments that test on-the-job knowledge.
From the new
issue
page we'll invoke the /challenge command, using the GitHub
username of our candidate.
Shortly after the issue was created, Bot has done the following:
- Cloned the assignment creating a new repo unique to the candidate
- Updated the issue title
- Assigned the
assignment/example-coding-assignmentlabel to the issue
When we are ready to begin, we can grant the candidate access to the repository
using the /join command.
The candidate will receive an email inviting them to the repository. Once they accept the invitation, they will have collaborator access to the repository.
With the candidate having access to the repository, we're ready to conduct the interview. This would typically involve a video call, where the candidate works on their assignment with the support and guidance of an interviewer.
The candidate may use their own environment and their editor of choice, an in-browser IDE such as Repl.it, CodePen, JSFiddle or GitHub Codespaces
Our example assignment makes use of VSCode Remote Containers to provide the tools/runtime stack and its prerequisites in a Docker container. Read more on development containers here.
When the time allocated for the interview has elapsed, you may revoke the
candidates access to the repository using the /end command.
Once the interview has concluded, the interviewer can review and grade the candidates submission.
To assist in reviewing the submission invoke the /review
command. This will grant the reviewer access to the repository and (if
configured accordingly) copy files from the assessment to help with the review.
These files may range from additional tests, benchmarks, or even GitHub actions.
Our coding example, copied a file named bench_test.go which benchmarks the
candidates implementation of FibFn(). Since the example has a GitHub Actions
Workflow which triggers on each push, a new run is triggered.
challenge:
review:
copy:
# Branch name from which to copy files. This will be from the assignments
# repository.
#
# E.g. beat-interviewing/example-coding-assignment
head: 'review'
# Branch name to which to copy files. This will be from the candidates own
# repository.
#
# E.g. beat-interviewing/example-coding-assignment-billmckay-xpq
base: 'main'
# Glob pattern with which files are matched. Anything matching this pattern
# will be copied from the assignment repository to the candidates repository
#
# See: https://github.com/isaacs/minimatch
paths:
- 'bench_test.go'For a full reference of the .github/assignment.yml options, see
configuration.
With the review material in place, reviewers are able to finally grade the assignment. Grading assigns metadata to the assignment relating to the candidates performance.
The /grade command is particularly useful when integrated with
a third-party recruitment tool such as Greenhouse.





