Full-Stack Engineer

Now Hiring
Level 1
Level 2
Work From

In this role, you’ll get up close and personal with our users. You’ll build out and improve the in-browser experience, and develop the APIs that power the web and command line experience. These are things our users directly interact with, and we think that’s pretty fun.

Here are some cool problems you might work on:

  • Help us reach a bigger audience, by giving developers new ways of getting stuff done with Fly.io (that is, in the browser). We’re CLI-first, and that’s not going to change, but we want to give developers more options!
  • Help developers build new exciting stuff on top of our platform, by building out a better user-facing API.
  • Help us build out the UI for new products, like LiteFS Cloud.

Like most roles at Fly.io, your day-to-day work will touch a lot of other important things, like security and even the low-level platform. You can expect to work primarily with Phoenix/Elixir, but you’ll also touch Ruby and Go code regularly.

This Role Is a Good Fit For You If:

  • You care about users. You can empathize with developers and make decisions to improve their lives.
  • You have opinions about UX, and can create new UIs from scratch. We don’t expect you to be a visual designer (we have designers on the team), but you’re comfortable building stuff that visual designers can chrome up.
  • You know Phoenix or another web development framework. If you don’t know Phoenix and Elixir already, you’re excited to learn them!
  • You love jumping into something different every day! Sometimes that will be a web service in Elixir, Rails, and Go. Sometimes you’ll wind up digging into our CLI or interfacing with our lower-level platform. Sometimes you’ll be working through weird infrastructure problems that no one’s solved before to make a feature possible.
  • You’re comfortable with uncertainty, maybe even thrive in it; you can take big ideas and break them down into small, concrete features and then build those incrementally.
  • You like to move quickly to get your work into people’s hands, even if it means pushing your messy drafts and improving them later. We’re OK with imperfect solutions that have a really good UX and solve a real customer problem.
  • You view writing code as part of, but not the whole, of your role. You’re down to answer questions, help someone get unstuck, and mentor and develop the people around you.

You’ll Know You’re Succeeding in This Job If:

  • You feel comfortable making Fly.io better for developers. You’re always thinking about how developers are using the features you’re building, and what problem you’re solving for them.
  • You’re building features that meet developers where they are. They’re easy to use for newbie developers, while being powerful enough to not annoy experienced devs.
  • You ruthlessly scope features down to the smallest thing that’s valuable for users, and get it in front of users as quickly as possible.
  • You know when to optimize for now versus later. You can make quick progress while keeping your eye on the end-goal.
  • You consider all the different touch points where developers interact with Fly.io, from the flyctl CLI, to the public API, to the web UI, and how those interfaces interact and can work better together.
  • You’re actively contributing to the growth of the people around you.

More Details

This is a mid to senior level fully-remote full-time position. You can live anywhere in the world; your work hours and holidays observed are up to you. The salary ranges from $120k to $200k USD. We offer competitive equity grants with a long exercise window. Hopefully that’s enough to keep you intrigued; here’s what you should really care about:

  • We’re a small team, almost entirely technical.
  • Engineers at Fly.io have an unusual amount of autonomy and decision-making power. You will be making real product decisions that directly impact users, on a daily basis, without anyone standing over your shoulder telling you what to do.
  • We are active in developer communities, including our own at community.fly.io.
  • Virtually all customer communication, documentation and blog posts are in writing. We are a global company, but most of our communication is in English. Clear writing in English is essential.
  • We are remote, with team members in 17 countries (and counting). Most internal communication is written, and often asynchronous. You’ll want to be comfortable with not getting an immediate response for everything, but also know when you need to get an immediate response for something.
  • We are an unusually public team; you’d want to be comfortable working in open channels rather than secretively over in a dark corner.
  • We’re a real company - hopefully that goes without saying - and this is a real, according-to-Hoyle full-time job with health care for US employees, flexible vacation time (with a minimum), hardware/phone allowances, the standard stuff.

How We Hire People

We’re weird about hiring. We’re skeptical of resumes and we don’t trust traditional interviews. We respect career experience but we’re more excited about potential.

The premise of our hiring process is that we’re going to give you two challenges, a “work sample” and a “work day”, that simulate the kind of work you’ll actually be doing here. Unlike a lot of places that assign “take-home problems”, our challenges are the backbone of our whole process; they’re not pre-screeners for an interview gauntlet. For the “work sample”, you’ll build an part of an invoicing system so that we can properly bill users (we’ll tell you more). You can do this challenge at your own pace, and it should take about 2 hours if you already know Elixir. For the “work day” you’ll join two of us on Slack to work through a problem together.

If you’re interested, mail jobs+fullstack@fly.io. You can tell us a bit about yourself if you like. Please also include 1. your GitHub username (so we can create a private work sample repo for you) 2. your location (so we know what timezone you’re in for scheduling) and 3. a sentence about your favorite food (so we know you’re not a bot.)