Skip to main content

Software Engineer - Code Search & Indexing (Haskell)

Posted: 29 Dec 2020 Closes: 28 Jan 2021
London, United Kingdom Competitive
Permanent & Full-time FBK_402214191176704

Facebook's mission is to give people the power to build community and bring the world closer together. Through our family of apps and services, we're building a different kind of company that connects billions of people around the world, gives them ways to share what matters most to them, and helps bring people closer together. Whether we're creating new products or helping a small business expand its reach, people at Facebook are builders at heart. Our global teams are constantly iterating, solving problems, and working together to empower people around the world to build community and connect in meaningful ways. Together, we can help people build stronger communities - we're just getting started.


Our team is designing and implementing systems for helping developers and tools navigate and understand source code. A major focus is on Glean, a novel system for collecting, deriving and working with facts about source code. It is inspired by Datalog and Prolog and is currently serving a wide range of use cases, from semantics-aware code browsers for humans to automated static analysis. Some details about the system can be gleaned from this talk: are building something that goes beyond the capabilities of existing systems in this space and there are many exciting problems to solve. Figuring out how to maintain up to date information for a huge and rapidly changing code base, optimising and extending the distributed fact storage, writing compiler-like indexers to collect semantic information for a wide variety of programming languages - these are just examples of the challenges we face daily. Trying to be the main provider of semantic information about the code base that powers Facebook is not easy but very rewarding. The bulk of the system is written in Haskell, with some low-level code in C++. We also develop and maintain a few other systems written in a variety of languages.

Required Skills

  • Working on the design and implementation of the core components of Glean, its external APIs and its query language.
  • Implementing and maintaining indexers for a wide variety of programming languages, including C++, Python, Hack, Java, Haskell etc.
  • Engaging with external stakeholders and cross-functional team partners.

Minimum Qualification

  • Familiarity with functional programming
  • Some familiarity with C++
  • Basic understanding of compilers
  • Ability to work independently
  • Keen interest in learning

Preferred Qualification

  • Fluency in Haskell or some other functional programming language
  • Fluency in C++
  • Familiarity with a variety of programming languages and ability to pick up new ones quickly
  • Compiler experience, including working with existing frameworks (such as Clang)
  • Experience with implementing virtual machines and language runtimes
  • Experience with building distributed systems


Share Job