In this role you will...

  • Lead engineering at Fig. You are objectively the best engineer on the team. You will be instrumental in establishing Fig's engineering culture and best practices. Your core role is to code but you oversee all engineers and engineering efforts at Fig. You are the go-to person for any engineering or architecture questions.
  • Work across the stack.  You can comfortably jump into any repo at Fig including our macOS app, autocomplete VueJS app, or our bash parser. You help lead Fig's autocomplete standard and the corresponding autocomplete parsing engine. You will also lead major engineering initiatives at Fig such as taking Fig cross platform.
  • Solve the most bizarre and most complex engineering problems. How does Fig attach itself to the cursor of an application we don't own? Great question 😊
  • Wear many hats. We are a fast growing startup. We all have to be generalists. You will be regularly talking with users, companies, and Fig developers for autocomplete. You may also find yourself doing support or writing blog posts.


You will be a great fit if...

  • 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 have worked across the stack. You can jump into just about anything and get up to speed in the things you don't know very quickly. You've worked professional as a software engineer for several years, if not more.
  • 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. While you are building autocomplete for users, you are building the autocomplete standard for developers. You can encapsulate complex ideas in simple language.
  • 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