IOG is a technology company focused on Blockchain research and development, emphasizing peer-reviewed research and formal methods for security, scalability, and sustainability.
The Software Engineer will be responsible for writing high-quality code for IOG's products, working with cutting-edge research and technology.
The role involves following agile software development practices and collaborating with teams across multiple time zones.
The engineer will work independently on software development tasks, requiring minimal supervision or mentoring.
Responsibilities include reviewing specifications, contributing to algorithm design, writing clean and efficient code, committing often, and covering code with tests.
The engineer will also review team members' pull requests, fix bugs, be available for emergency fixes, integrate software components, verify and deploy systems, troubleshoot existing software, and write documentation and technical user manuals.
Knowledge of distributed and concurrent computation and basic cryptography is required.
Requirements:
A minimum of 2-3 years of development experience in Haskell is required.
Experience working with Git and Git workflow is necessary.
Practical experience with Agile software development methods is essential.
Knowledge of functional and object-oriented programming paradigms is required.
A good understanding of concurrent programming, software transactional memory, call-by-need, memoization, and lazy evaluation is necessary.
Familiarity with Quickcheck/Hedgehog and property testing is required.
Experience with or contributions to GHC (Glasgow Haskell Compiler) is necessary.
Experience with profiling GHC generated executables and inspecting event logs is required.
Familiarity with similar languages such as Idris, Agda, PureScript, or Elm is preferred.
Knowledge of frameworks/libraries such as aeson, async, lens, optparse-applicative, stm, and template-haskell is necessary.
Proficiency with advanced functional programming techniques is required.
A good understanding of tracing and monitoring systems, distributed systems, automation, network topologies, and performance testing/modeling is necessary.
Experience with nix and cloud platforms such as AWS is required.
Proficiency in software development best practices, including design, implementation, testing, and debugging, is essential.
Familiarity with version control and continuous integration is necessary.
Benefits:
The position offers remote work flexibility.
Employees receive laptop reimbursement and a new starter package to buy hardware essentials.
There are opportunities for learning and development.