Facebook Software Engineer, Static Analysis in London, United Kingdom
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.
Facebook’s Static Analysis team is seeking an experienced software engineer with expertise in C++ and typed functional programming to help build and improve our analysis tools. You will help design and extend Infer for C++, which is used to find bugs across all Facebook engineering. Our tools are written in OCaml, part of the Infer open source static analysis suite, and we use Clang for the Front End. As a successful candidate, you improve our OCaml/Clang toolchain so we catch more bugs in C++. Candidates should have C++ language, compiler or relevant development experience. This is an OCaml role, so demonstrated experience in typed FP (e.g. OCaml, Haskell) is preferred. We are looking for someone who loves working at scale, where performance, reliability and modularity intersect.
Proactively develop software to support analyses on C++
Lead improvements to underlying OCaml code base
Work with engineers to identify improvements to our tools
B.S. or M.S. in Computer Science or related field, or equivalent experience
Experience with C++ language specification, semantics or compilation
Strong communication skills
M.S. or further study in an language design, functional programming or static analysis
Experience designing APIs for language tools
Experience with typed functional programming (e.g. OCaml, Haskell)
Knowledge of C++, Clang or other compiler Front Ends
Static analysis knowledge or other formal methods in verification and correctness
Knowledge of OCaml or equivalent typed language