Software Engineer

Input Output
Summary
Join IOG, a blockchain technology company, as a Senior Software Engineer to enhance software development and maintenance, contribute to product development, and improve engineering practices. You will collaborate across teams, mentor junior engineers, and act as a technical leader. Responsibilities include designing components, integrating software, writing documentation, implementing new features, and designing testing strategies. The role requires a degree in Computer Science, 5+ years of Haskell experience, and knowledge of functional and object-oriented programming. Additional experience with blockchain, DeFi, and Nix is preferred. IOG offers remote work, laptop reimbursement, a new starter package, learning and development opportunities, and competitive PTO.
Requirements
- Degree in Computer Science or equivalent / related qualification
- 5+ years of writing maintainable and well-tested Haskell in a commercial environment
- Good understanding of Haskell type system, libraries and GHC runtime & performance
- Experience working with Git and Git workflow
- Practical experience with Agile software development methods
- Knowledge of functional and object-oriented programming paradigms
- Ability to work in a team and collaborate across different time zones and levels of experience
- Exceptional ability to communicate ideas in writing. Must be able to implement formal specifications
- Ability to understand project needs, objectives and timescales to feed into planning and setting deadlines for a specific stream
- Clearly articulates new issues, suggests changes to management for implementation
- Write idiomatic 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
- Provide detailed guidance on the work to be done, assist with task assignments and deliver deep reviews and feedback on the work
- Pragmatically adhere to software engineering principles (modularity, incremental development, no premature optimization, no feature creep, no speculative generality, ...)
Responsibilities
- Improve how IOG builds and maintains software
- Actively contribute to product development, including the quality of engineering practices within a team
- Work across teams to identify cross-team improvements by (for example) sharing code, removing complexity or implementing new practices
- Mentor and grow other software engineers and act as a go-to person within the team and the wider organisation across multiple codebases and languages
- Advocates for and models great quality with proactive actions, and tackles difficult and subtle system issues
- Uses systematic debugging to diagnose all issues within a set of related domains and leads in fostering a culture of observability and monitoring across several teams
- Regularly works across teams to build a culture for iterative, autonomous development and future scaling
- Is a technical and prioritisation leader across a set of related team's domains, consistently pushing boundaries and exploring gaps in understanding
- Is a go-to within the team and the wider organisation across multiple codebases and languages
- Be proactive and require minimal supervision or mentoring to complete tasks
- Review specifications produced by architects and formal methods specialists
- Lead the design of components and their interactions
- Be available for emergency fixing of severity 1 issues on deployed products
- Integrate software components and third-party libraries
- Verify and deploy programs and systems
- Write documentation for the code
- Write technical user manuals
- Be knowledgeable of distributed and concurrent computation
- Be knowledgeable of the basics of cryptography
- Implement new features of the stablecoin protocol and additional products
- Design and implement testing strategies for stablecoin and other products
- Synchronize with the technical manager to validate the roadmap
- Identify opportunities for improving productivity and robustness through refactorings / adoption of industry best practices
- Translate specifications into concrete designs, considering architectural design and security aspects
- Pair program with other team members, aiming to collaborate and educate
- Liaise with operations and UI teams to ensure that all aspects of product quality are considered
- Occasionally work on prototypes to try out new features in an experimental setting
- Estimate & prioritize work items and break them down into smaller tasks
Preferred Qualifications
- Knowledge of blockchain and DeFi applications, specifically Cardano
- Experience with finance applications
- Experience using nix
Benefits
- Remote work
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO
Share this job:
Similar Remote Jobs

