We are looking for an experienced Haskell Software Engineer to join our fantastic Ledger team. You will be working on features being added to the Cardano blockchain, which usually involve changes to the ledger. Features originate with our researchers, are turned into a formal specification, and are then implemented in Haskell by the Ledger team.
You will be a friendly, hard-working, self-motivated individual who is excited about using advanced Haskell features and open to working with formal specifications. You will help implement features, such as decentralized governance, decentralized updates, and scalability, on the Cardano ledger. This work includes property tests. The Cardano our code base makes heavy use of Haskell’s type classes and type families, so experience with these, or the ability to pick them up, is crucial.
In your day-to-day duties s a Software Engineer you will:
- Follow agile software development practices
- Work with teams across time zones
- Work independently on software development tasks
- Be proactive and require minimal supervision or mentoring to complete tasks
- Review specifications produced by architects and formal methods specialists
- Contribute to the design of algorithms
- Write clean, straightforward, efficient code that satisfies acceptance criteria and specifications
- Commit often and submit small pull requests frequently
- Cover your code with unit, property and integration tests when applicable
- 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 severe issues on deployed products
- Integrate software components and third-party libraries
- Verify and deploy programs and systems
- Troubleshoot, debug and upgrade software
- Write documentation for the code
- Write technical user manuals
- Improve your knowledge of distributed and concurrent computation
- Improve your knowledge of the basics of cryptography.
- Experience with Haskell, particularly type classes and type families
- Experience with Nix is a big advantage.
- Able to work on a complex system and have an aptitude for simplifying complexities
- Good communication skills, both written and spoken