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 the Cardano blockchain, as well as other products in the areas of decentralized finance (DeFi), governance, and identity management, aiming to advance the capabilities and adoption of blockchain and Web3 technology globally.
What the role involves:
As a Formal Methods Engineer at IO you act as a bridge between product, research, architecture, and development. 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 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 researchers. Finally, based on their specifications, designs, simulations and/or prototypes, you will advise and assist other development teams to implement and integrate their work into production systems.
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.
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
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
A minimum of 2-3 years of experience in a dependent-typed language, preferably Agda
Experience working and collaborating with Git
Experience with one or more formal methods
Experience in one or more of the domains we are working in - networking, distributed systems, programming language design, blockchain applications - 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
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
Benefits
Remote work
Laptop reimbursement
New starter package to buy hardware essentials (headphones, monitor, etc)
Learning & Development opportunities
Competitive PTO
At IOG, we are committed to fostering a diverse and inclusive workplace where all individuals are valued and empowered to succeed. We welcome people of all backgrounds and ensure that employment decisions are based solely on merit, qualifications, and potential. Everyone is given equal opportunities regardless of race, color, religion, national origin, gender, gender identity, sexual orientation, age, marital status, veteran status, disability, or any other characteristic protected by law.
Beware of fraud agents! do not pay money to get a job
MNCJobs.co.uk will not be responsible for any payment made to a third-party. All Terms of Use are applicable.