In this role you will...

  • Own Fig's macOS App. You will own everything macOS from complex concurrency issues to testing to updating to compilation. There will be a healthy mix of fixing bugs vs building new product.
  • Own Fig's integrations with each Terminal. Fig integrates with your existing terminal (e.g. iTerm, the native macOS terminal, VSCode, Hyper). We plan to continue building out these integrations with new platforms like IntelliJ's IDEs or Alacritty / Kitty.
  • Make heavy use of the macOS accessibility API. A lot of Fig's functionality is based on the powerful, but often under-documented macOS accessibility API. This helps Fig's experience feel native everywhere
  • Wear many hats. We are a fast growing startup. We all have to be generalists. You will be working users, companies, and Fig developers for autocomplete. But you may also find yourself doing support, scaling infrastructure, or even 

 

You will be a great fit if...

  • You have built native macOS applications before and used the accessibility API. You have done more than just a todo list. You have worked on large scale apps with multiple contributors
  • You are product minded. You put our users first. You have a sense for creating magical user experiences. You will put in the extra work to make sure the user doesn't have to.
  • You move quickly. We prototype things very quickly. We push updates to autocomplete every few days. No coding challenge is impossible. You will find a way to get something working.
  • You've built developer tools before. You understand the many many usability issues at play when building a developer tool. You establish sane defaults but give users the option to fully customise things if they want to.
  • You are good at systems design. You can encapsulate complex ideas in simple language. You build things in a modular way.
  • You are mission driven. You are working at Fig because you want to re-imagine the terminal. You are building Fig to make your own life easier as well as the millions of other developers who use the terminal every day. 

Our Stack

  • Swift/Objective-C/C for our macOS app. Our pseudoterminal, window management, CLI, and our menu are written in combinations of these languages. We also make heavy use of macOS accessibility APIs.
  • Typescript/Javascript for all of our apps (including autocomplete) We use VueJS to build autocomplete. Our bash parser and arg parser are written in Javascript. Fig's Autocomplete specs are in Typescript. Our website is Next.js and we have a simple Express backend. We are in the process of shifting to Typescript.
  • A lot of shell, CLIs, and systems We wrote integrations with bash, zsh, and fish in their respective languages. Our autocomplete app has to integrate with just about every CLI tool... We also go deep into signals, processes, and file descriptors.
  • Modern work tools. Linear for issue tracking, GitHub for source control and open source, Sentry for error reporting, Segment and Amplitude for analytics, Discord for community management and internal communication, Notion as knowledge base. A few others.

 

Some of the engineering challenges we've faced

  • Defined a declarative standard for building autocomplete for CLIs 
  • Wrote a left-to-right bash parser from scratch
  • Used zsh's ZLE module to accurately get your current buffer and cursor position when typing in zsh
  • Used the macOS accessibility API to get your cursor position in an application we don't own
  • Used UNIX sockets and Docker’s dockerd API to get a container’s current process and working directory
  • Injected a custom API into a WKWebview that gives web apps the ability to run local shell commands

Apply for this Job

* Required