Input Output (IOHK)

Formal Methods Engineer, Cardano

Input Output (IOHK)

full-time

Posted on:

Origin:  • 🇬🇧 United Kingdom

Visit company website
AI Apply
Manual Apply

Job Level

JuniorMid-Level

Tech Stack

Distributed SystemsHaskell

About the role

  • IOG: technology company focused on Blockchain research and development
  • Develop formal artifacts early in development and iteratively refine specifications, properties, and proofs
  • Form part of day-to-day quality assurance of production system development
  • Test critical steps against formal models or prove them using formal frameworks and tools
  • Model expected performance of resulting systems to assess impact of design decisions
  • Provide feedback to developers and project management
  • Participate in knowledge sharing and continuous learning with Formal Methods Engineers, researchers, and engineers
  • Build formal artifacts from R&D, architectural guidance, and business and engineering requirements
  • Model the performance of formally specified systems
  • Produce prototypes and simulations
  • Refine specifications using performance models and simulations
  • Discover and prove properties of specifications and correctness of refinement steps
  • Communicate with product, R&D, and developers; assist developers in turning specifications into production code
  • Report on work via blog posts, technical reports, presentations, workshops, conferences, and academic papers
  • Participate in code reviews
  • Contribute property-based tests for executable specifications and production code verification
  • Contribute to implementation, extension, and maintenance of custom formal analysis tooling
  • Work in an international team across multiple time zones
  • Break down large complex tasks into workable items and work independently
  • Share specialized knowledge with other team members

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
  • Experience in one or more of the domains we are working in -- networking, consensus, 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
  • General Software engineering skills, and an understanding of Software Engineering processes: requirements capture, specification, testing, verification, validation.
  • Apply research concepts in an engineering setting.
  • Translate and reshape information for the software engineers to understand properly
  • Telling researchers and developers when there is a discrepancy - presenting formal concepts in context.
  • Be able to receive input from researchers about formal models, thoroughly understand and translate that information and its impact on the production code.
  • Continuously brings fresh ideas to the mix
  • Be versatile and enjoy a fast-paced, ever-changing environment
  • Ability to explain complex concepts in documents and presentations for a technical but not specialist audience.