Haskell + Rust Software 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 currently searching for developers comfortable with programming in both Rust and Haskell. The position is suitable for both middle- and senior-level developers and involves working on our clients’ projects in a wide variety of areas.

Rust requirements:

  • Solid knowledge of the modern Rust language. You are expected to comfortably use enums, references, lifetimes, generics, standard and custom traits, be familiar with the standard library, know how to organize a project with modules and crates, etc.
  • Async programming with Rust. You should be comfortable with writing multi-threaded code and are expected to be familiar with the concepts of tokio, even though working experience with it is not a requirement.
  • Application-level integration. You should be able to integrate your code with a wide variety of other systems. Experience with various databases and database client libraries as a plus. Experience making API clients is plus. Experience making Web and API servers is a plus.
  • Unit and property testing. You are expected to write well-tested code (with tests that catch likely defects and are not too hard to maintain). Familiarity with property-based testing ideas is a bonus.
  • Logging and tracing. Experience organizing logging, tracing, and monitoring (also, working with logs and metrics aggregation systems) is a bonus.

Haskell requirements:

  • Solid knowledge of Haskell 98 features. You can write your own typeclasses, are comfortable with applicative functors, are comfortable using monad transformers and know the ins and outs of the most important ones like ReaderT, StateT, etc.
  • Familiarity with the modern Haskell ecosystem. You should be able to use text, mtl, basic lenses, Stack/Cabal, type families, Template Haskell (use existing TH generators, not write your own), QuickCheck/Hedgehog. (If an item is missing, it’s not critical.)

General requirements:

  • Knowledge of the fundamental algorithms and data structures like binary search tree, DFS, hashtable, quicksort, etc.
  • Knowledge of computer networks: HTTP, TCP/IP stack, understanding of poll- and push-based data synchronization models and their usage in modern service APIs.
  • Familiarity with tools used for build/deploy automation and CI/CD: Docker, Nix, Kubernetes, etc.
  • Good coding culture (code structuring and decoupling, using git and pull requests, code review practices).
  • Good level of self-organization.

Why you should work with Serokell:

  • 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.
  • English language courses.
  • Yoga classes and menthal health support.
  • Opportunity to contribute to one of the functional programming industry’s leading blogs.