Our Hiring Process

No interviews. No resumes. The standard tech industry hiring process doesn’t work, and we don’t use it.

Instead, we’re weird about hiring. We’ve been delivering these engineering roles, some of them for years, and we have a good idea of what the work entails. We’ve taken the time to distill that work into challenge problems. We hire by giving you challenges to do at home, and then grading the results.

Your resume is not part of our decision-making process. Feel free to send us a resume! We’ll look at it! But we’ll forget about it when we grade your challenge results.

People ask us all the time if they should apply given they don’t have much job experience in the work we do. Well: for any of our roles, we’ll tell you what the hiring challenges are. If you can knock them out, go for it. We love discovering talent, and, just as importantly, we’re set up to actually do it.

We are serious about this process, and have built it carefully. For candidates with experience (or aptitude) delivering this kind of work, we believe our whole process will take less time than a standard tech industry interview gauntlet.

There are other good things about our process:

  • We don’t time the challenges, and you can get them done in dribs and drabs of your spare time if that’s best for you.
  • We don’t look over your shoulder, can’t see your typos, and aren’t driving up your cortisol with loaded sighs and “hmms” as you work. We want to see you in your best light.
  • You get to use your own dev setup, which, of course, includes Internet connectivity and the ability to Google things, because that is how all code in the industry is actually written.

Our challenges aren’t artificial. There are no binary trees to invert. We just extract work we’ve actually done ourselves, and simplify it to the point where we think it can get done in a few hours. Our challenges all have objective rubrics (that turns out to be the hard part of developing a work-sample challenge!) and we can usually grade them pretty mechanically.

So that’s another win: if you find our challenges dreadful, you’ve learned something important about whether you’re going to enjoy the actual work here.

Our Process In More Detail

A typical hiring process for an engineering job at Fly.io looks like this:

  1. You send us an email. There’s an email address at the bottom of all our job descriptions.
  2. We say “hi”, lay out our hiring challenges, and give you some time to ask us questions. We’re happy to field questions!
  3. When you’re ready, we deliver you a series of at-home challenges (usually 2-3). You knock them out one at a time. If things go roughly with any of them, we’ll let you know.
  4. If you knock out all the challenges, we’ll schedule a “work day”, our last challenge. That’s “day” as in “day in the life” — we don’t ask for a full day of your time! During the work day, you’ll collaborate with us on Slack on an engineering design project.
  5. That’s it! If everything goes well, the next step is us working out an offer with you.

What About Time Limits?

We don’t take delivery time into account when grading challenges. Take a day, take a week, take a month.

We have only two caveats to offer about the amount of time you spend on challenges:

  1. If you really do take a month to do the challenges, our staffing situation might change by the time you’re done, and we won’t be able to move forward immediately. So: if it’s going to be a while before you can get to the challenges, let us know, and we’ll be able to warn you if there’s any time sensitivity on the role you’re applying to. We don’t want to have you doing challenges for a role that isn’t open by the time you’re done!

  2. We’ve said it already but we’ll say it again: we’ve tried to calibrate these challenges (by running them many times) so they take roughly the same amount of time as an interview would. You can put as much time into them as you’d like; we’re not going to notice. But if you’re getting sore about the amount of time they’re taking, you should reach out to us and we can try to figure out what’s happening. Sometimes, you might be overthinking the challenge; other times, the role you’re applying to might not be a perfect fit for where you’re coming from.

What If I Have Questions?

You can’t lose points by asking us questions. Generally, we look at questions as a positive indicator.

There are questions you might ask that we can’t answer. That’s fine; we’ll just give evasive answers. Don’t moderate your questions for our sake. You might be surprised at how much we’re willing to cough up.

A lot of hiring systems keep their cards close to the vest, and (deliberately or otherwise) evaluate candidates based on their ability to navigate a murky process. That’s not us.

We want to predict how well you’ll function on our team doing real work. In a real working week, if our processes were so murky that sniffing them out was a real test of your skill, on like a day-to-day basis, we’d have problems of our own to fix. We want to see you in your best light.

What About Start Dates?

This is important: we can only make offers with start dates 1 month out or less. If you’re looking for a role to start a couple months from now (when you graduate, etc), you’re generally welcome to run through our process and get a “soft yes” from us.

When you’re available to take an offer starting within a month, you can ping us, and we’ll extend an offer.

A word of warning: while we expect to be hiring most of our roles pretty much continuously, the economy can get spooky. We can’t make promises about openings several months out from now. An offer is a commitment, and that’s the one thing we can’t do if you’re looking to start several months from now. We’ll do our best to stay up-front about this stuff!

What About Compensation?

At Fly.io, we’re focused on getting pay equity (the fairness kind) embedded as close to the core of our philosophy as possible. We want to eliminate as much bias in the hiring process as we can, and we don’t want anyone who works here to second-guess themselves on how hard they negotiated their offer. So, we designed our salaries to be intentionally simple and straightforward: everyone at a given level is offered the same salary and options, regardless of their role, geography, and previous experience.