Match score not available

Senior Software Engineer (Haskell) - Consensus

EXTRA HOLIDAYS - WORK FROM ANYWHERE - FULLY FLEXIBLE
Remote: 
Full Remote
Contract: 
Experience: 
Mid-level (2-5 years)
Work from: 

Offer summary

Qualifications:

Strong Haskell background, Understanding of distributed systems.

Key responsabilities:

  • Maintain Consensus layer codebase
  • Collaborate with teams and consultancy companies
Input Output (IOHK) logo
Input Output (IOHK) Information Technology & Services Scaleup https://iohk.io/
201 - 500 Employees
See more Input Output (IOHK) offers

Job description

Logo Jobgether

Your missions

Summary

IO Global is seeking a Senior Software Engineer (Haskell Developer) to join its Consensus team. The Consensus layer is an open-source implementation of the Ouroboros family of Consensus protocols written in Haskell. It ties together the Ledger, Network, and Cardano Node components. We work closely with the teams that develop them, asking and answering questions and making and responding to requests. The Consensus layer also handles block forging and storage, so serialization is also an essential part of the codebase.

We favour writing understandable Haskell, emphasising documentation and readability to explain the complex choices behind our code.

Your mission

Our codebase consists of over 160,000 lines of Haskell code distributed across several packages. We maintain a core package that defines abstractions that will later be instantiated with different protocols and ledger implementations, particularly the Cardano implementation.

N-ary products and sums are very present in our code, so a degree of type-level programming is involved when maintaining and extending the Consensus layer. On the testing front, we tend to favour property-based testing (QuickCheck), which is also used in state machine testing (QuickCheck).

Sometimes, we must dive deeper into issues in code that we do not own (such as fixing a bug in an upstream library or investigating something in the GHC). We allocate some time to improving the open-source libraries we use (such as quickcheck-state-machine) as long as it benefits the company's goals in the long run and doesn't become a time sink.

The company is at the vanguard of Haskell+Nix infrastructure (`haskell.nix` was made by IOG). We also have teams dedicated to GHC development (you might see their biweekly updates in Haskell news), benchmarking, system-wide testing, and quality assurance. It also collaborates with some top-notch Haskell (or FP) consultancy companies.

Requirements

Your expertise

We expect you to be a good engineer and be comfortable with the usual developer workflow, such as reviewing others’ pull requests, being ready to work on a new part of the codebase, debugging bugs here and there, and documenting the decisions and steps taken.

Communication is asynchronous because the team (and the company) are distributed in several time zones. It happens in English, so you must be fluent enough to communicate your ideas and designs and participate in discussions.

A good candidate would also be proactive, passionate, thorough, and have an eye for detail. We would like you to be open to learning new things. Prior experience with blockchain is a nice bonus but otherwise, it is good if you have a strong understanding of distributed systems in general.

We are looking for someone with a strong Haskell background. An ideal candidate is familiar with the wide Haskell ecosystem of libraries and has worked or at least made an effort to understand the concepts behind fundamental libraries and concepts like lenses, Template-Haskell, CBOR, GHC Generics, STM, Effects systems, mtl, pipes, SOP, etc. We use only some of these, but listing them gives a general overview of our expectations.

Bonus points

Prior experience with blockchain projects is helpful but optional.

We use Nix in our infrastructure, but knowing Nix is optional.

Prior experience in developing high-quality backend system architecture and knowledge of how such architecture principles should apply to blockchains

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, colour, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.

Required profile

Experience

Level of experience: Mid-level (2-5 years)
Industry :
Information Technology & Services
Spoken language(s):
Check out the description to know which languages are mandatory.

Soft Skills

  • Detail Oriented
  • Communication
  • Proactivity

Software Engineer Related jobs