Ahrefs Research is a San Francisco branch of Ahrefs Pte Ltd (Singapore), which runs an internet-scale bot that crawls whole Web 24/7, storing huge volumes of information to be indexed and structured in timely fashion. On top of that Ahrefs is building analytical services for end-users.
Ahrefs Research develops a custom petabyte-scale distributed storage to accommodate all that data coming in at high speed, focusing on performance, robustness and ease of use. Performance-critical low-level part is implemented in C++ on top of a distributed filesystem, while all the coordination logic and communication layer, along with API library exposed to the developer is in OCaml.
We are a small team and strongly believe in better technology leading to better solutions for real-world problems. We worship functional languages and static typing, extensively employ code generation and meta-programming, value code clarity and predictability, constantly seek out to automate repetitive tasks and eliminate boilerplate, guided by DRY and following KISS. If there is any new technology that will make our life easier - no doubt, we'll give it a try. We rely heavily on opensource code (as the only viable way to build maintainable system) and contribute back, see e.g. https://github.com/ahrefs. It goes without saying that our team is all passionate and experienced OCaml programmers, ready to lend a hand or explain that intricate ocamlbuild rule.
Our motto is "first do it, then do it right, then do it better".
Ahrefs Research is looking for backend developer with deep understanding of operating systems, networks and taste for simple and efficient architectural designs. Our backend is implemented mostly in OCaml and some C++, as such proficiency in OCaml is very much appreciated, otherwise a strong inclination to intensively learn OCaml in a short term will be required. Understanding of functional programming in general and/or experience with other FP languages (F#,Haskell,Scala,Scheme,etc) will help a lot. Knowledge of C++ is a plus.
The candidate will have to deal with the following technologies on the daily basis:
Networks and distributed systems
4+ petabyte of live data
OCaml
C++
Linux
Git
Independently deal with and investigate bugs, schedule tasks and dig code.
Make argumented technical choice and take responsibility for it.
Understand the whole technology stack at all levels from network and userspace code to OS internals and hardware.
Handle full development cycle of a single component, i.e. formalize task, write code and tests, setup and support production (devops).
Approach problems with practical mindset and suppress perfectionism when time is a priority.
These requirements stem naturally from our approach to development with fast feedback cycle, highly-focused personal areas of responsibility and strong tendency to vertical component splitting.
A competitive salary
Modern office in San Francisco SOMA (Embarcadero)
Informal and thriving atmosphere
First-class workplace equipment (hardware, tools)
No dress code
Please include
Salary expectations.
Your CV and short description of how we can benefit each other.
Date of availability.