We are searching for a Software Engineer to lead our Plutus team. The Plutus team is building the core of Cardano’s smart contract functionality on the bedrock of functional programming languages. We are an interdisciplinary team who do original R&D and turn it into production systems.
In the past few years, the Plutus team has:
- Published five peer-reviewed papers with top academic researchers
- Designed and implemented three programming languages
- Formalized the semantics of two of those languages using Agda
- Helped to improve the ability of Agda to generate usable Haskell output
- Created novel compilation techniques for data types
- Written a GHC proposal, which is now being taken into implementation work
- Implemented a compiler for a subset of Haskell as a GHC plug-in
- Used statistical modeling to infer evaluation cost models
- Participated in the design and implementation of the Cardano ledger extensions to support smart contracts.
- Such a heady and complex mixture of research, development, and design work needs a competent leader to keep it all working well. If that sounds like fun to you, drop us a line!
As a leader at IOG your mission is to motivate and develop your team members. You will empower your team to provide the best results by organizing clear processes and coordinating team efforts as your top priority.
Day to day, you will work with functional programming languages research. You will understand the technical issues involved enough to make decisions, if not necessarily in full detail.
You will be comfortable with research. That includes research work itself (including writing papers); engineering work that relies on research; and working with the researchers themselves.
Here are some examples of the duties:
- Follow agile software development practices
- Work with teams across time zones
- Work independently on software development 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 existing software
- Write documentation for the code
- Write technical user manuals
- Update your knowledge of distributed and concurrent computation.
- A background in academia or industrial R&D is a bonus; however, self-taught is also great!
- A strong people leader who is friendly, supportive, and compassionate to colleagues.
- Experience working with Git and Git workflow
- Practical experience with Agile software development methods
- Significant Haskell experience