Serokell is a fast-growing, fully remote software development company that works on innovative solutions for complex problems in fields like biotech and data science. We’re packed full of adventurous, curious, and inclusive folks who want to build cutting-edge software with modern technologies like functional programming.
We’re seeking an experienced Software Engineer to supervise a team of software engineers. Our work is not limited to Haskell development, so you’ll also be involved in overseeing other exciting areas such as research, frontend, and packaging.
Our ideal candidate is a person eager to review solutions, offer advice and propose their own ideas.
Responsibilities
Your primary responsibility will be leading a Haskell devotee team. As a team lead, you will be responsible for:
- writing Haskell code, just like your team members;
- researching optimal solutions for technical challenges;
- supervising research and development by team members;
- designing application logic and architecture;
- selecting appropriate technologies and solutions to technical problems;
- reviewing PRs and ensuring the team follows best practices;
- contributing to the team’s technical skill development by consulting and providing feedback;
- evaluating top candidates in case of team expansion;
- collaborating with a Project Manager to plan project execution;
- providing regular status updates and monthly reports.
Requirements
-
Solid understanding of Haskell.
- Haskell 98 features. Writing your own type classes. 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, and Template Haskell.
- General technical skills and knowledge:
- 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.
- Parsers. Writing your own parsers, using parser combinators and/or parser generators.
- At least a high-level understanding of frontend/web development: HTML, CSS, JavaScript. We don’t require you to be able to write frontend code, but you should be able to understand it.
- Previous experience with managing software development teams.
- Passion for a high development standard and good coding culture. We prioritize code readability, maintainability, comprehensive testing, and thorough documentation. This includes dedicating time to write informative code comments, providing clear explanations in commit messages to convey the intent behind changes, and ensuring comprehensive test coverage.
- Capacity to review a lot of code. Every developer reviews code of their colleagues, but tech leads usually review more than others.
- Openness to study new languages and technologies – be it Elixir, OCaml, or Rust.
Preferences
- We hope you like Nix as much as we do. We use Nix for plenty of things, mainly for CI and building release artefacts. When necessary, we use Docker too. Luckily, we have a dedicated team of Nix experts who are always happy to help.
- Experience/skills in building software products from the ground up and designing systems from scratch.
- Experience working with network communication protocols.
- Frontend development skills and TypeScript knowledge.
Tech stack
Our backend is written in Haskell and does the following:
- Serves an HTTP API via
servant
. - Interacts with a PostgreSQL database via
persistent
andesqueleto
. - Parses data via
megaparsec
. - Uses many standard libraries such as
text
,containers
,deepseq
,time
, etc. - Is tested using
tasty
.
Our frontend is written in TypeScript using the Preact framework. The whole software is packed into Docker images. This process is automated with Nix which we use for CI/CD.
Why you should work with Serokell
- Competitive salary.
- Attractive international projects.
- Participation in leading world conferences.
- International team 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 translate into wage growth.
- Mentoring and training.
- English language courses.
- Yoga classes and mental health support.
- Opportunity to contribute to one of the functional programming industry’s leading blogs.
By joining Serokell, you’ll become a part of a welcoming community of ingenious engineers, computer scientists, designers, marketing experts, and other inventive people. You will have the opportunity to participate in ambitious projects aimed at building the next generation of computer software, try out crazy initiatives without bureaucratic obstacles or judgment, and have fun in our Slack channels that range from #music to #butthurt (did we mention our extensive custom emoji collection?)
If interested, send us your CV and a few words why you are interested in Serokell to jobs@serokell.io