The Figma Design Tools are the heart and soul of our product offerings and has set a new standard for what’s possible on the web. Our users spend hours in the design tools each day brainstorming, iterating on designs, crafting prototypes, and getting feedback at all stages of the creative process. Our design tools empower entire teams to design together in real time via a high-performance browser-based graphics application—even with intermittent internet connectivity and network bandwidth—which presents unique technical challenges around how we craft our UX and data models.
Everything you see on the canvas in a Figma design tool uses C++, which compiles to WebAssembly to run in the browser and offer more control over performance, memory management, and rendering. We use Typescript and React/Redux for the UI around the canvas, where key elements like the properties panel, toolbar, and modals live. Typescript gives us type checking capability, more guardrails around code correctness, and allows us to generate HTML and CSS in order to take advantage of more standard UI patterns. We have a service-oriented architecture and use Ruby/Sinatra, Go, and Rust on the backend for Figma’s main API server. Professional experience with these languages and technologies is not a requirement. We encourage candidates to use the programming language that they’re most comfortable with during interviews—new hires will be ramped in our codebase during onboarding.
Figma is a highly collaborative organization. You’ll form strong relationships with product managers and designers, and can expect to partner regularly with engineers and leaders beyond your immediate team. We strive to foster an inclusive culture that promotes equity and belonging, and use the following values to guide how we work together: communicate early and often, lift your team, focus on craftsmanship, and prioritize impact. You can learn more about our engineering values and how we developed them here.
What you’ll do at Figma:
- Build new features in a real time, multiplayer system with a complex data model that enables collaboration across files
- Build design features to enable users have strong and accurate control on design elements, such as layout, transformations, color management, typography, etc.
- Build features to accelerate the creative process by offering out-of-the-box design assets such as presets, kits, templates, and so on.
- Build tooling for authoring prototype behaviors in Figma design tools, allowing users to create dynamic, interactive designs
- Solve for performance and memory optimizations—we want to keep pushing the limits of what it's possible to create in a browser while maintaining a highly performant UX
We'd love to hear from you if you have:
- 4+ years of professional experience shipping user-facing features or products as a full-stack developer
- Demonstrated fluency with one or more programming languages, including: Typescript/Javascript, React, C++, Python, Java, Objective-C, Go, or Rust
- Experience communicating and working across functions to proactively drive solutions
While not required, it’s an added plus if you also have:
- 2+ years of experience operating in a technical lead capacity
- Experience in and a desire to teach fellow engineers through pairing, code review, and in-the-moment feedback.
- Experience working on editors, whiteboards products
- Experience writing C++ (or related languages such as Objective C or C) in a user-facing context (e.g. gaming, native applications).
At Figma, one of our values is Grow as you go. We believe in hiring smart, curious people who are excited to learn and develop their skills. If you’re excited about this role but your past experience doesn’t align perfectly with the points outlined in the job description, we encourage you to apply anyways. You may be just the right candidate for this or other roles.