Apply

Software Engineer (Haskell) - Ledger

Posted 2024-10-15

View full description

💎 Seniority level: Senior, A minimum of 5 years development experience (professional or otherwise) in Haskell.

📍 Location: United Kingdom

🔍 Industry: Blockchain

🏢 Company: IO Global

🗣️ Languages: English

⏳ Experience: A minimum of 5 years development experience (professional or otherwise) in Haskell.

🪄 Skills: Backend DevelopmentSoftware DevelopmentBlockchainGit*NixHaskellCommunication SkillsCollaboration

Requirements:
  • Write idiomatic Haskell code that satisfies the acceptance criteria of a given task.
  • Write tests (unit tests, property tests) that provide sufficient and non-superfluous efficient code coverage.
  • Document code and APIs concisely and unambiguously.
  • Break down tasks into subtasks that are completable in a short amount of time and report completion as required by managers.
  • Pragmatically adhere to software engineering principles (modularity, incremental development, no premature optimization, no feature creep, no speculative generality, no code duplication ...).
  • Degree in Computer Science is desirable but not essential.
  • A minimum of 5 years development experience (professional or otherwise) in Haskell.
  • Strong experience at writing code in the declarative programming paradigm.
  • Experience working with Git and Github.
  • Experience with nix is preferred, but not required.
  • Proficiency with advanced FP techniques such as: Type families, Higher Kinded Data, Dependent types, Generic programming, Type-level programming, Free monads.
  • Good understanding of evaluation strategies and related concepts: call-by-need, lazy evaluation, memoization, weak-head normal form vs normal form. Capable of identifying and avoiding space leaks.
  • Experience with serialization techniques in Haskell using any of the common libraries: cborg, serialise, store, flat, binary, etc.
  • Advanced level understanding of pure functional data structures and Haskell libraries that provide such functionality: containers, vector, bytestring, etc.
  • Comfortable using other common Haskell libraries such as: cryptonite, random, transformers, mtl, lens, conduit, persistent, aeson, etc.
Responsibilities:
  • Write high-quality code, working with cutting-edge research and technology to implement features like protocol rules and transaction validation.
  • Work with teams across multiple time zones in Europe and America.
  • Be proactive, work independently, and require minimal supervision or mentoring to complete tasks.
  • Collaborate with other teams on integration issues and problems that span a greater context.
  • Review specifications produced by formal methods specialists.
  • Commit often and submit small pull requests frequently.
  • Cover your code with unit, property, and integration tests.
  • Review the pull requests of your team mates.
  • Fix bugs in your own code and in legacy code from others.
  • Be available for emergency fixing of severity 1 issues on deployed products.
  • Integrate software components and third-party libraries.
  • Write clear documentation with sensible examples.
  • Communicate with others professionally, effectively, and efficiently.
Apply