Remote

Senior Haskell Engineer

Serokell is a fast-growing, fully-remote software development company that works on innovative solutions for complex problems. We’re packed full with adventurous, curious, and inclusive folks that want to build cutting-edge software with modern technologies like functional programming.

We’re seeking a senior-level Haskell software engineer to join a team of fierce and fun Serokellers.

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. Understanding of poll- and push-based data synchronization models and their usage in modern service APIs.
  • Good coding culture. Code structuring and decoupling, patch management with git, code review practices.
  • Self-organization. To a decent level.

Good-to-have, but not crucial:

  • 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.
  • Cryptography. Fundamental knowledge, public/private keys, signing, encryption, hashing.
  • Experience with Rust. We sometimes use Rust for our projects, so it will be an advantage if you have previous experience with it.

Tech stack

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 application on some event or build artifacts (if applicable).

We like Nix and use it in CI and CD to build production artifacts. 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 wellbeing.
  • 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?).