Software Engineer/Senior Software Engineer (Distributed Systems)

Job description

About Reynen Court
Reynen Court is redefining how applications are bought, deployed, and managed by law firms and legal departments. By deeply leveraging Kubernetes and the CNCF ecosystem we are building a two-sided multi-cloud enterprise app platform that enables our partner vendors to deliver applications in an agile manner and our customers to consume these applications at scale in a secure manner by bringing compute to data. We are doing for enterprise legal tech what the app store did for consumer tech.

If that sounds ambitious, it is! But we are not alone on this journey. Reynen Court is backed by two consortia: a law firm consortium consisting of twenty of the largest law firms in the world spanning three continents (North America, Europe and Asia) and a corporate legal department consortium of twenty companies including some of the most well-known banks and technology companies in the world. We have more than 200 partner vendors actively engaged with us, a growing list of applications that are delivered via the platform, and more than twenty enterprise customers actively using our platform. Our investors include four major global law firms (Clifford Chance, Latham and Watkins, Orrick and Nishimura and Asahi) and the well-known venture capital fund Ventech. Go here to read what others are saying about us.

Having found our product/market fit, we are now building the next generation of our platform: more stable, more scalable, more agile.

The Role
The Reynen Court platform consists of several microservices that run on Kubernetes clusters. Together these microservices enable the creation of Kubernetes clusters (on Azure, AWS, and on-premises), submission and testing of applications by partner vendors, deployment of vendor applications on Kubernetes clusters, management of day 2 operations of these applications, as well as a marketplace for evaluating and purchasing applications.

We are looking for a software engineer who will build and own some of these backend microservices. On average, you will most likely spend about half of your time building services that interact with the Kubernetes API server (REST APIs that can create objects by interacting with the Kubernetes API server and Kubernetes operators that respond to these objects), a quarter of your time building transactional systems for the marketplace (e.g. a purchase microservice), and the remaining quarter of your time packaging your services so that they can be deployed on a Kubernetes cluster. Most of our backend microservices are written in Go and we hope to move all of them to Go in the near future.

This position reports to our Chief Product and Technology Officer.

Opportunity
We believe what we are building is unique and amazing. Here are some reasons why you might want to join us on this exciting journey.
  • It is a rare opportunity to be an early contributor to an industry-shaping platform.
  • You get to work on, what is perhaps, the hottest and certainly one of the most challenging problems in distributed systems; how to build an app platform on top of Kubernetes - not for one company or one application but for a whole vertical.
  • You get to engage with Kubernetes and the associated ecosystem at a very deep level
    • We build our own operators
    • We experiment with multiple CNIs
    • We use multiple CSIs in production
  • You get the opportunity to program against multiple public cloud APIs (AWS, Azure, and possibly GCP in the future) as well as on-premises.
  • You get to work in a truly multi-cultural environment (we have colleagues from more than ten nationalities spread across four continents) where what matters is what you bring to the table and not how you look, speak or dress.
  • You will have the freedom to work remotely. We prefer candidates who are based in or are able to relocate to the Netherlands but are also open to hiring exceptional candidates based in other parts of Europe.
    • If you prefer to work from an office then we also have a lovely office in the heart of Amsterdam.
  • You will have the autonomy to set your own schedule within reason.
  • You will get an attractive compensation package, including stock options, commensurate with the value you bring to the company.

Requirements

First and foremost, we are looking for a teammate who is extremely bright, inquisitive, reliable, a self-starter, and a team player.

To be successful in this role you will also need to have the following qualifications:
  • You must be able to think critically and reason logically in the context of software development and architecture in distributed systems.
    • You should be able to solve complex problems using code.
    • You should have a solid understanding of, and preferably hands-on experience with, non-functional aspects of software such as understandability, maintainability, testability, scalability, security, stability etc.
  • You must have 2+ years of experience developing production code in Go.
    • OR 2+ years of experience developing production code in at least 2 backend programming languages (e.g. Python, Java, Node.js, C++ etc.) AND the ability and willingness to learn Go.
  • You must have solid knowledge of Docker. In particular, you should know how to package an application (including dependencies) using a Dockerfile and be able to use the Docker CLI.
  • You must have at least user/developer level understanding of and experience with Kubernetes.
    • If you have directly interacted with the Kubernetes API before, then that is a plus.
    • If you have admin level understanding of or experience with Kubernetes, then that is a plus.
  • You must have some experience (the more the better) interacting with at least one public cloud (AWS/Azure/GCP/Alibaba) programatically.
    • You must know how to interact with the public cloud at least via their CLI. If you have experience interacting with their API then that is a plus.
    • Experience with multiple public clouds is a plus.