Summary
As a Formal Methods Engineer at IO you will work closely with an engineering team, IOE broadly and the Cardano Community in providing high assurance and mathematical rigor and clarity to design and implementation. This enhances the quality of our products, time to market and enables open and decentralized development.
You will build on formal artifacts developed in R&D or developed later in the development process. Artifacts will grow with the project and continue to provide impact throughout into the late stages. You will develop and iteratively refine specifications, working towards high quality designs and practical implementations. Your work will form part of the day-to-day quality assurance of production system development. In some projects, critical steps will be tested, or proven using appropriate formal frameworks and tools. In other projects, the expected performance of the resulting system will be modeled, so that the impact of design decisions on performance and stability can be assessed early on. Based on this process, you will provide feedback to the engineers.
As a member of the Formal Methods Engineer you will participate in knowledge sharing and continuous learning through interactions with Formal Methods Engineers across the company and other job families as well.
Duties
- Build formal artifacts from R&D and architectural guidance, and business and engineering requirements.
- Model the performance of formally specified systems
- 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
- 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
Key Competencies
- Deep thinking, problem solving
- Ability to understand and translate overview of complex ideas and break it down simply for yourself and others
- Software engineering skills
- Bridge between research and engineers
- Translate and reshape information for the coders to understand properly
- Telling researchers when there is a discrepancy - feedback to research
- To 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
Education / Experience
- A higher degree in Computer Science or a related field or currently pursuing one
- Experience in a functional language, preferably Haskell
- Experience working and collaborating with Git
- Prior experience with theorem provers or model checkers is essential
- Remote work
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO
At IOG, we value diversity and always treat all employees and job applicants based on merit, qualifications, competence, and talent. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.
What We Do
Founded in 2015, IOHK is one of the world’s pre-eminent blockchain research and engineering companies, best known for the Cardano blockchain platform
We are a fully decentralized, remote-working organization committed to the highest principles of academic rigour and evidence-based software development. The company builds high-assurance blockchain products for public and private sector clients.
Our goal is simple – to fuel our drive to be best in class by giving you the opportunity, resources and support to deliver your finest work to date. You’ll work with some exceptionally talented and friendly individuals who are always open to new ideas and ways of working.
IOHK is an advocate of decentralized remote working, with over 300 people working in more than 50 countries. Everyone has a different skill set, a different culture, and is at a different stage in their life. We aim to make collaboration between diverse people fun, exciting, and always rewarding. Many companies say they ‘think outside the box’ – for IOHK it’s more, ‘we think outside the geography’.