Tweag is a software innovation lab with a global team of thoughtful and friendly engineers, working together to build better software by applying mathematics, computer science and the methods of open source.

Our high-profile open source community projects and contributions are driven by experience helping deep tech startup clients quickly scale their engineering performance and execute on high-risk, high-reward projects with confidence.

We are big on composable software: functional, typed, immutable. In our client projects, we apply these principles to build efficient, reproducible and maintainable systems in complex industry sectors such as biotech, retail, finance and autonomous vehicles.

We're looking for engineers to join our software verification and audit team, which is applying formal methods to ensure critical software is working correctly, and sharing techniques and tools with the wider software community.

You would work either remotely (from almost any country), or on-site at our office in the centre of Paris. Most of our team works remotely, and has done since long before the pandemic.

Who are you?

You care about correctness and understand that real-world software is different from academic examples. You know the canon of formal methods techniques, which include your favorite proof-assistant, how to operate an SMT solver and your favorite model-checker. More broadly, you understand how these tools work from within and could work towards the implementation of domain-specific variants of those.

Your skill set will grow constantly with each new client project, so consider applying if you are inquisitive, willing to fail often and adapt quickly. You should be comfortable with feeling out of your depth and rapidly becoming an expert in a new field.

As an engineer at Tweag, you:

  • work autonomously, organising and clearly communicating your plans,
  • cultivate good relationships with clients and with colleagues,
  • identify and quickly learn new skills and techniques needed to work in new areas,
  • value high-quality and elegant software (and proofs!)
  • enjoy using principles from one area to help solve problems in another,
  • can explain, document, and discuss complex topics,
  • are highly competent in at least one programming language (we favour strongly typed functional languages),
  • have a good understanding of developer tools and techniques such as Git, GitHub/GitLab, CI, testing, Docker, Nix.

In addition, a typical formal methods engineer candidate:

  • is highly competent in at least one proof assistant (Agda, Coq, Isabelle, etc) 
  • is knowledgeable of some modelling language and/or model checkers (TLA+, SPIN, NuSMV, mCRL2, Alloy, …)
  • can identify and contribute to writing up potential research papers that spin out of client projects.
  • can efficiently and independently navigate the relevant literature when studying a domain or technique to solve some new challenge.

What will you be doing?

Engineers at Tweag primarily work in small groups embedded in a client team, collaborating with the client’s engineers and each other. In parallel, Tweag engineers connect and collaborate with each other across project boundaries, teaching, learning and improving our many research and community projects.

As a Formal Methods engineer, especifically, you will be spending some of your time doing research with the rest of the group and some of your time on client projects. Client projects can vary from validating and auditing some code for a few weeks to developing high-assurance software from scratch. Our research interests are always growing and include smart-contract verification, language design for verifiable software, improvement of existing tools and infrastructure.

Benefits

  • The chance to work on interesting problems and work with and learn from amazing people,
  • a flexible work environment, based either remotely or in our Paris office,
  • the opportunity to work on your own innovative projects, if they align with Tweag’s goals,
  • support to grow into other specialist areas.

 

 

Apply for this Job

* Required