---
title: "Code review pre-work"
source: 18F Guides
source_url: https://github.com/18F/guides
licence: CC0-1.0
domain: engineering
subdomain: 18f-guides
date_added: 2026-04-25
---

The goal of code review pre-work is to enable an interviewer to ask thoughtful questions about the kind of code, thought processes, and choices that the candidate will make at 18F.

Candidates have two options: complete a coding exercise, or bring an existing code sample. Interviewers will have read your code, run it, and prepared follow-up questions to ask as described in [the interviewer’s guide]({{ '../interviews/code-review/' | url }}).

## Instructions to candidates

We know that the best way to tell if someone's a good engineer is to actually look at their code, so before your interview you'll need to submit a code sample for us to review.

You have two options, explained below. Both options are equivalent in our eyes, so choose the one you think will be easiest and will present yourself in the best light.

18F’s core languages are Python, Ruby, and JavaScript. We may be able to review code in other languages as well, if we have a knowledgeable reviewer — just ask. Choose the language you’re strongest in — we’re looking to have a conversation with you about the decisions you’ve made in your code.

**Please let us know right away what language you'll be using so we can select an appropriate reviewer.**

Your code sample is due by {DATE}, and you can submit by replying to this email. Please don't be late; if you miss the deadline, that'll jeopardize your application.

One of your interviews will be with someone who has reviewed and run your code, so be prepared to explain your code, walk through it with our interviewer, and answer questions.

Your choices for code samples are:

**Option 1**: Submit a code sample you've written elsewhere to share with us and discuss. This could be something you've done at a previous job, for an outside project, or even something you did for fun. This is subject to a few conditions:

- You must be allowed to share this code with us (so, nothing you've produced under NDA, etc.). Open source is best.

- As mentioned above, please submit code written in the language we agreed upon.

- It should be short, no longer than 1,000 lines (shorter is OK!), and stand-alone.

- Include documentation about your development environment and instructions on how to run your program. Make sure that someone familiar with your chosen language can easily run your code.

- Your sample must include tests and instructions on how to run those tests.

- Share your code via a publicly accessible Git repository.

**Option 2**: Complete a short programming assignment. We re-use [coding problems developed by Ad Hoc](https://homework.adhoc.team), and add a few extra rules and restrictions of our own:

- Choose from one of these exercises, and only complete a single exercise:
   - [Fetch exercise](https://homework.adhoc.team/fetch/)
   - [Hhbuilder exercise](https://homework.adhoc.team/hhbuilder/)
   - [SLCSP exercise](https://homework.adhoc.team/slcsp/)
   - [NOClist exercise](https://homework.adhoc.team/noclist/)

- Each exercise has its own rules and instructions. Where our rules and Ad Hoc's differ, follow our rules. Let us know if you have questions!

- As mentioned above, please submit code written in the language we agreed upon.

- Include documentation about your development environment and instructions on how to run your program. Make sure that someone familiar with your chosen language can easily run your code.

- Include tests and instructions on how to run the tests.

- Share your code via a publicly accessible Git repository.

Please don't spend more than 3 hours on your exercise. If you reach 3 hours, and haven't completed work, please contact us and we'll help you decide what to do next.

Good luck! If you have any questions, please let us know!
