We are looking for full-time Haskell Engineer(s) to develop software for DFINITY, a next generation blockchain computer that aims to address the performance and capacity problems of today’s blockchain technology and to become a trusted, decentralized and scalable cloud computing platform. You will be joining a team of experienced Haskell developers, as well as world class researchers and experts in the areas of programming languages, distributed computing, cryptography and other related fields to build technologies necessary to realize this goal.
Critical components of our software stack are written in Haskell, most notably the main client and a Haskell to Wasm compiler. Although Haskell is currently our primary choice, we are not adverse to the right tool to meet specific requirements. We believe that type-safe functional programming is not only a tremendous boost to productivity, but also brings out the best of programmers to build reliable, reusable, composable and architecturally superior software. If you share the same passion and aspire to influence the world with your vision and skills, we can’t wait to have you on board!
- Work closely with a distributed team of researchers, engineers and experts in the fields of programming languages, blockchain cryptography and distributed systems
- Develop software components for messaging protocol, peer-to-peer networking, storage, virtual machine runtime, smart contract compilers and interpreters and many other aspects of both the client software and the DFINITY network
- Design and implement domain specific languages and solutions with appropriate abstraction to elegantly solve problems
- Refactor and optimize Haskell programs for clarity, modularity, scalability and speed
- Implement randomized unit tests and automated testing platforms
- Integrate and work with other languages and tools to deliver high quality software products
- 3+ years of relevant academic or industrial experience in working with functional programming languages, such as Haskell (preferred), OCaml, Scala, F#, Clojure, Racket, or similar
- Computer science bachelor’s degree or an equivalent background in software engineering
- Deep understanding of one or more fields in computer science or software engineering, including but not limited to: functional programming, networking, operating system, database, theory of computation or cryptography
- Familiar with common software development tooling, including those of Haskell.
- Knowledge of programming language theory, formal semantics, type system, and abstraction techniques preferred
- Experience with distributed systems and networking preferred
- Independent, self-disciplined, self-motivated and intellectually curious
- Ability to work autonomously as part of a distributed team