At a Glance
- Tasks: Join us as a Formal Methods Engineer, bridging product, research, and development in blockchain.
- Company: IOG is a pioneering tech company focused on blockchain research and development with a scientific approach.
- Benefits: Enjoy remote work, laptop reimbursement, learning opportunities, and competitive PTO.
- Why this job: Be part of a dynamic team driving innovation in blockchain technology and making a global impact.
- Qualifications: A higher degree in Computer Science and 2-3 years experience in functional languages like Haskell required.
- Other info: Work in an international team and contribute to cutting-edge formal verification tools.
The predicted salary is between 36000 - 60000 £ per year.
Who are we?
IOG is a technology company focused on Blockchain research and development. We are renowned for our scientific approach to blockchain development, emphasizing peer-reviewed research and formal methods to ensure security, scalability, and sustainability. Our projects include decentralized finance (DeFi), governance, and identity management, aiming to advance the capabilities and adoption of blockchain technology globally. We invest in the unknown, applying our curiosity and desire for positive change to everything we do. By fueling creativity, innovation, and progress within our teams, our products and services are designed for people to be fearless, to be changemakers.
What the role involves:
As a Formal Methods Engineer at IO, you act as a bridge between product, research, architecture, and development. When embedded in a web3 product team, you will develop formal artifacts as early as possible in the development process that 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, prototypes 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 modelled, 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 researchers. Based on specifications, designs, simulations and/or prototypes, you will implement and integrate your work into production systems. You are also an expert in formal methods tooling and can contribute to the development of new tools and propose and implement improvements to existing tools.
You will participate in knowledge sharing and continuous learning through interactions with Formal Methods Engineers across the company and more broadly with researchers and engineers as well.
You will integrate the Cardano High Assurance team whose primary missions are to build easy to use formal verification tools for the community to develop and verify DApps, but also to assist internal teams in the verification of their smart contracts. You will be able to challenge DApps or library specifications, implement verification strategies, and, if needed, adapt and improve the tools we develop and maintain.
- Build formal artifacts from research and architectural guidance, and business and engineering requirements
- Develop and maintain cornerstone formalizations in Lean4 (e.g. Plinth libraries, PlutusLedgerAPI, Blockchain state and events)
- Produce prototypes and simulations
- Verify production ready code
- Integrate your work into production ready code
- Challenge and refine design and/or specification based on safety and threat analysis
- Discover new properties about the specifications and their implications
- Prove properties of the specifications and of the correctness of refinement steps
- Communicate well with a variety of stakeholders such as architects, researchers, software engineers, and end users
- 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 review
- Contribute to the implementation, extension, and maintenance of custom formal verification 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
Requirements
Who you are:
- 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 with developing production level formal verification tools
- Experience working and collaborating with Git
- Experience with Lean4, SMT solvers and SMTLib, Automated theorem proving, model checking, proof assistants
- Experience in one or more of the domains we are working in -- networking, distributed systems, programming language design, blockchain applications, compilation -- would be a bonus
- 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
- Ability to identify and communicate discrepancies in research findings that may impact product direction or execution, and work together with researchers to resolve them
- Ability to recognize and escalate incomplete or inaccurate technical specifications to ensure development clarity, and work together with developers to resolve them
- Ability to detect and challenge architectural decisions that introduce security vulnerabilities, and to communicate concerns effectively to relevant stakeholders, and work together to resolve them
- Prioritise the user experience of the tooling you develop and work together with stakeholders to resolve issues and continually improve
- Ability to receive input from researchers, thoroughly understand and translate information into contributions to final production quality code, and communicate findings back to researchers
- 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
Benefits
- 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.
Formal Methods Engineer - IOE: Cardano employer: Input Output (IOHK)
Contact Detail:
Input Output (IOHK) Recruiting Team
StudySmarter Expert Advice 🤫
We think this is how you could land Formal Methods Engineer - IOE: Cardano
✨Tip Number 1
Familiarise yourself with the specific formal methods and tools mentioned in the job description, such as Lean4 and SMT solvers. Having hands-on experience or projects that showcase your skills with these tools can set you apart from other candidates.
✨Tip Number 2
Engage with the blockchain community, especially around Cardano and its ecosystem. Participating in forums, attending meetups, or contributing to open-source projects can help you build connections and demonstrate your passion for the field.
✨Tip Number 3
Prepare to discuss your problem-solving approach during interviews. Be ready to share examples of complex problems you've tackled, particularly those related to formal verification or functional programming, as this will highlight your analytical skills.
✨Tip Number 4
Showcase your ability to communicate complex ideas clearly. Since the role involves liaising between various stakeholders, practice explaining technical concepts in simple terms, which will demonstrate your capability to bridge gaps between research and engineering.
We think you need these skills to ace Formal Methods Engineer - IOE: Cardano
Some tips for your application 🫡
Understand the Role: Before applying, make sure you fully understand the responsibilities and requirements of the Formal Methods Engineer position. Tailor your application to highlight relevant experiences and skills that align with the job description.
Highlight Relevant Experience: In your CV and cover letter, emphasise your experience with functional programming languages, particularly Haskell, and any work you've done with formal verification tools. Be specific about projects where you've applied these skills.
Showcase Problem-Solving Skills: Provide examples in your application that demonstrate your ability to tackle complex problems independently. Discuss how you've approached difficult challenges in past roles, especially in areas related to blockchain or distributed systems.
Communicate Effectively: Since the role involves collaboration with various stakeholders, ensure your application reflects your communication skills. Mention any experience you have in translating complex technical concepts into simpler terms for different audiences.
How to prepare for a job interview at Input Output (IOHK)
✨Understand Formal Methods
Make sure you have a solid grasp of formal methods and their applications in blockchain technology. Be prepared to discuss how you've used these methods in past projects, especially in relation to verification tools and functional programming.
✨Showcase Your Problem-Solving Skills
During the interview, highlight your ability to tackle complex problems independently. Prepare examples that demonstrate your deep thinking and problem-solving capabilities, particularly in areas relevant to the role, such as distributed systems or programming language design.
✨Communicate Effectively
Since the role involves liaising with various stakeholders, practice explaining complex concepts in simple terms. Be ready to discuss how you've successfully communicated technical findings to non-technical team members in the past.
✨Demonstrate Collaboration Experience
Emphasise your experience working in collaborative environments, especially with Git. Share specific instances where you contributed to team projects, participated in code reviews, or worked across different time zones to achieve common goals.