Formal Methods Engineer

Input Output Logo

Input Output

πŸ“Remote - United Kingdom

Summary

Join IOHK, a blockchain research and development company, as a Formal Methods Engineer. You will bridge the gap between product, research, architecture, and development teams. Responsibilities include building formal artifacts, modeling system performance, refining specifications, and proving properties. You will communicate with researchers and developers, providing feedback and translating complex ideas. The role also involves reporting on your work and contributing to code reviews and testing. This position requires a higher degree in Computer Science, experience with functional languages (preferably Haskell), and formal methods. Remote work, laptop reimbursement, a new starter package, learning and development opportunities, and competitive PTO are offered.

Requirements

  • A higher degree in Computer Science or a related field
  • A minimum of 2-3 years of experience in a functional language, preferably Haskell
  • Experience working and collaborating with Git
  • Experience with one or more formal methods
  • Demonstrated ability to work on difficult problems in a self-driven way
  • Deep thinking, problem solving
  • Ability to understand and translate complex ideas and break them down simply for yourself and others
  • Software engineering skills
  • Bridge between research and engineers
  • Translate and reshape information for the software engineers to understand properly
  • Telling researchers when there is a discrepancy - feedback to research
  • Be able to receive input from researchers, thoroughly understand and translate information into final code
  • Continuously brings fresh ideas to the mix
  • Be versatile and enjoy a fast-paced, ever-changing environment
  • Be a savvy problem solver
  • Ability to explain complex concepts in documents and presentations

Responsibilities

  • Build formal artifacts from research and architectural guidance, and business and engineering requirements
  • Model the performance of formally specified systems
  • Produce prototypes and simulations
  • Refine specifications, using the performance models and simulations to gauge the impact of design decisions during refinements
  • Discover new properties about the specifications and their implications
  • Prove properties of the specifications and of the correctness of refinement steps
  • Communicate with both researchers and developers, and act as a bridge between the two: you will provide feedback to researchers about issues that come up when their work is incorporated into real world systems. You will assist developers in understanding your specifications and in turning them into production code
  • Report on your work, in the form of blog posts, technical report documents, presentations at internal seminars, as well as at workshops and conferences, and/or by contributing to academic papers
  • Participate in code reviews
  • Contribute property-based tests, both for testing properties of the executable specifications/prototypes, and for verifying production code against the executable specifications
  • Contribute to the implementation, extension, and maintenance of custom static analysis tooling
  • Work in an international team across multiple time zones
  • Break down large and complex tasks assigned to you into workable items, and work on them independently
  • Share specialized knowledge with other team members

Preferred Qualifications

Experience in one or more of the domains we are working in -- networking, distributed systems, programming language design, blockchain applications -- would be a bonus

Benefits

  • Remote work
  • Laptop reimbursement
  • New starter package to buy hardware essentials (headphones, monitor, etc)
  • Learning & Development opportunities
  • Competitive PTO

Share this job:

Disclaimer: Please check that the job is real before you apply. Applying might take you to another website that we don't own. Please be aware that any actions taken during the application process are solely your responsibility, and we bear no responsibility for any outcomes.