Software Engineer Compiler-Plutus Core

Input Output
Summary
Join IOHK, a blockchain research and development company, and contribute to the development of high-quality software solutions for Cardano's smart contract functionality. As a member of the Plutus Core team, you will work with cutting-edge research and technology, writing and maintaining code in Haskell, conducting code reviews, and implementing CI/CD pipelines. You will also be involved in testing, debugging, and troubleshooting existing software, designing and architecting software components, and writing comprehensive documentation. Collaboration with engineers and researchers is crucial, as is understanding blockchain, distributed systems, and functional programming languages. The role requires a Bachelor's degree in Computer Science or equivalent experience and at least one year of software development experience.
Requirements
- Bachelor’s degree in Computer Science, or equivalent practical experience
- 1 year of experience with software development, data structures and algorithms
- Experience in programming in Haskell or another functional language
- Experience in designing and implementing programming languages, compilers and runtime systems
- Strong English communication skills, in both speaking and writing
- Carrying out software development tasks independently
- Leading by example to build a culture of craftsmanship and innovation
- Writing documentation for code and technical user manuals
Responsibilities
- Write and maintain code in Haskell
- Use Git for version control, committing often, and submitting small pull requests
- Write clean, efficient code that meets acceptance criteria and specifications
- Write and execute unit, property-based, and integration tests to ensure code quality
- Identify and fix bugs, including emergency fixes for severity 1 issues
- Troubleshoot, debug, and upgrade existing software
- Conduct and participate in code reviews to maintain code quality
- Implement and manage CI pipelines using GitHub Actions, troubleshooting and improving as needed, optionally using Nix
- Design and architect software components
- Design secure software and perform security analysis
- Review specifications from architects and formal methods specialists
- Contribute to algorithm design
- Write clear software documentation and technical user manuals
- Simplify complex blockchain concepts
- Read and comprehend research papers on cryptography and blockchain
- Follow release processes, manage cabal project SRPs, and use GitHub Actions
- Split work into tickets with acceptance criteria and maintain ticket status using Jira
- Adhere to agile software development practices
- Understand Cardano, Blockchain, and Distributed systems
- Be knowledgeable in distributed and concurrent computation
- Work independently on software tasks, being proactive and requiring minimal supervision
- Collaborate with teams across multiple time zones
- Integrate software components and third-party libraries
- Verify and deploy programs and systems
- Enhance Plutus Core tooling to create a world-class product that meets diverse user needs within technical constraints of the system
- Collaborate with engineers and researchers to design and implement essential features for Cardano smart contract languages, compilers, and runtime systems, along with comprehensive user documentation
- Engage in technical discussions with peers and stakeholders to drive informed decision-making
- Conduct thorough code and design reviews to ensure high-quality deliverables
- Provide expert Plutus guidance to partner teams, ensuring alignment and knowledge sharing across projects
Preferred Qualifications
Exposure to blockchain and UTXO-based ledgers
Benefits
- Remote work
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO