Software Engineer - Distributed Systems
Job description
About the role
You will partner across product and infrastructure teams to shape platform strategy and engineering practices.
Software engineers turn product ideas into working code. Engineers work in small teams, review each other's work, and ship in small batches. Most teams follow agile practices such as sprints and daily standups. Engineers also write tests, fix bugs, and improve performance. The field values clear communication as much as technical skill. Engineers spend part of every week on planning, code review, and debugging, not just writing new code. The ability to explain a technical decision in plain words separates strong engineers from the rest.
Key facts
What you'll do
Distributed systems are architected and evolved to serve millions of collaborators in real-time design.
Storage platforms, streaming infrastructure, and compute orchestration are combined into a unified distributed foundation.
Secure, maintainable, and performant systems are designed with product and infrastructure teams to support key workflows.
Requirements
The posting states a pay range of $153000 to $376000.5+ years of Software Engineering experience in backend or infrastructure engineering is required.
Deep understanding of distributed systems concepts such as sharding, replication, consistency, and eventual convergence is required.
Experience with cloud-native environments on AWS, GCP, or Azure, infrastructure-as-code, and container orchestration is required.
Proficiency in languages such as Go, TypeScript, Python, Rust, or Ruby is required.
Strong system design skills and a track record of architecting resilient production systems are required.
Collaboration across teams is handled with excellent communication skills and experience mentoring others.
Nice to have
Experience scaling storage platforms such as Postgres, Redis, S3, or DynamoDB, or operating streaming systems like Kafka is a plus.
Background in traffic management, DDoS mitigation, or service mesh technologies such as Envoy or Istio is a plus.
A history of developing complex, realtime distributed systems at scale is valued.
A passion for building developer productivity tools, including development environments, CI/CD pipelines, and build systems, is beneficial.
Experience evolving large-scale, shared developer platforms to improve reliability and developer velocity is considered an advantage.
Strong problem-solving skills and a bias for action on high-impact, gritty challenges are expected.
Practical notes
Accommodations are available for applicants with disabilities; please reach out to accommodations-ext@figma.com.
Typical interview steps
Hiring for engineering roles usually starts with a recruiter screen, followed by one or two technical rounds. Candidates often solve a coding problem, discuss past projects, and answer system design questions. Some loops include a take-home task. Final rounds typically cover team fit and give candidates a chance to ask questions. Interviewers look for how you break down an unfamiliar problem, not just whether you reach the answer. Practicing a few problems aloud and reviewing your own past projects are the best preparation.
Good to know
Distributed systems engineers design services that must remain consistent and available under load.
Cloud infrastructure on major platforms is commonly managed through infrastructure-as-code tools.
Container orchestration platforms automate deployment and scaling of applications.
Streaming systems move data in real time between services and applications.
Service meshes manage traffic, security, and observability between microservices.
Developer productivity tools reduce friction in building, testing, and deploying software.
Real-time collaborative platforms synchronize state across many clients instantly.
Career growth
Engineering careers usually progress from individual contributor to senior, staff, and principal levels. Some engineers move into management and lead teams of five to twenty people. Others stay on the technical track. Growth follows demonstrated impact, not tenure alone. A typical engineering ladder has clear levels with defined expectations for scope, quality, and mentorship. Moving up usually requires owning outcomes end to end rather than completing assigned tickets.