- Backend development, in Rails (and some Go, and some Elixir). Backend makes our API work, and defines much of the developer experience of the product. Rails and Postgres are the big things here.
- UX development, in Elixir (and some Rails). UX is user interface, and, importantly, new customer experience and growth development. If it has a web interface, this is the role where it happens.
- Security engineering, in Rust, Go, Ruby, and whatever else makes sense. A modern startup security practice includes corpsec (protecting our staff and their machines), appsec (hunting and killing security vulnerabilities in our code), and infrasec (hardening the operating systems we run that code on). Currently, security engineers in our practice do all three of those roles.
- Infrastructure engineering, in Go, Ruby, Rust, and whatever else makes sense. Infra keeps the spice flowing. Infra opens up new regions, grows regions to meet capacity, and outguesses our tricksy software and operating systems with monitoring tools that predict and head off outages.
- Platform development, in Rust and Go. Platform runs the apps, and connects them to the Internet. It’s the “engine” of Fly.io.
- Proxy: this is overwhelmingly Rust-based work on
fly-proxy, building features that connect customer apps to the Internet. - Machines: this is mostly Go-based work on
flydand other orchestration components (think: building a better, simpler K8s, at global scale). Exception:initis part of this work, and it’s Rust. - Private Networks: this is Go, Rust, and BPF work extending and streamlining our WireGuard-backend private networks.