Remote

Haskell R&D Engineer

Serokell is a fast-growing, fully-remote software development company that works on innovative solutions for complex problems.

We are eager to connect with engineers who are passionate about developing cutting-edge software using modern technologies such as functional programming.

We’re seeking a Haskell software engineer to join a team of fierce and fun Serokellers and work on a blockchain project.

Requirements

We require solid knowledge of:

  • Haskell 98 features. Writing your own typeclasses. Using applicative functors. Using monad transformers and understanding the ins and outs of the most common ones (like ReaderT & StateT).
  • Modern Haskell ecosystem. You should be familiar with text, mtl, basic lenses, Stack/Cabal, type families, QuickCheck/Hedgehog, Template Haskell.
  • Algorithms and data structures. Fundamental ones, like binary search tree, DFS, hashtable, quicksort, etc.
  • Computer networks. HTTP, TCP/IP stack, P2P, DHT and peer discovery. Understanding of poll- and push-based data synchronization models and their usage in modern service APIs.
  • Basic cryptography. Fundamental knowledge, public/private keys, signing, encryption, hashing.

Important skills for this job:

  • Research. Every cutting-edge software development starts with a research stage that involves studying prior work in the field, solving theoretical problems and writing down specifications.
  • Good coding culture. Code structuring and decoupling, using git, code review practices.
  • Self-organization. To a decent level.

Good-to-have, but not crucial:

  • Blockchain. Experience working on a blockchain project is a huge bonus, but not a strict requirement if you are good at algorithms, computer networks and cryptography.
  • Smart contracts. If you worked with at least one smart contract language it’s also a bonus.
  • Parsers. Writing your own parsers, using parser combinators and/or parser generators.
  • Haskell. Experience with popular libraries for real-world problems (web servers, streaming like conduit, serialization, databases, etc.); advanced type-level features: GADTs, DataKinds.
  • Experience with Rust, TypeScript, Elixir, OCaml, and Nix as well as an interest in learning new technologies, will be advantageous.

Tech stack

The specific technological stack will be determined during the research stage. To give you an overview of the most common technologies used at Serokell, we have prepared the following description.

Our backend is typically written in Haskell and does the following:

  • Exposes HTTP API. By default, we use servant for this.
  • Interacts with a database, usually PostgreSQL. We have used at least beam and esqueleto, but don’t have a strong preference.
  • Parses data in a specific format. For this, we use parser combinator libraries such as megaparsec or the Happy parser generator.
  • Makes HTTP requests. We like servant-client, but for just one endpoint it may be overkill.
  • Is tested using tasty, HUnit and hedgehog.

In some projects, we do full-stack development of web applications. Our frontend is typically written in TypeScript using React. While we don’t require anything about frontend development, being able to review, understand and contribute to frontend code is definitely a bonus.

In each repo we have continuous integration (CI) to build our code and run tests before merging any change. We also have continuous delivery (CD) to automatically deploy applications on some events or build artefacts (if applicable).

We like Nix and use it in CI and CD to build production artefacts. We don’t require any knowledge of Nix, however, you will have to read and probably modify Nix files, so be ready to learn it. We have a team of Nix experts always ready to help.

What we offer to you

  • Competitive salary.
  • Attractive international projects.
  • Participation in the leading world conferences.
  • International teams and multicultural environment.
  • Fully remote work and flexible working hours.
  • Possibility to take days off any time you need.
  • Investment in your professional and career growth, which will correspond to wage growth.
  • Mentoring and training.
  • Yoga classes and therapy sessions to support your well-being.
  • English language courses.
  • Opportunity to contribute to one of the functional programming industry’s leading blogs.

By joining Serokell, you’ll become a part of a warm community of ingenious engineers, computer scientists, designers, marketing experts, and other inventive people. You will be able to take part in ambitious projects that work on building the next generation of computer software, try out crazy initiatives unhindered by bureaucracy or judgment, and have fun in our Slack channels that range from #music to #butthurt (did we mention the huge custom emoji set?).