Career - Kaiterra

Backend Engineer

Written by Kaiterra | Oct 20, 2021 2:38:40 PM

At Kaiterra, we work hard every day to tackle the biggest challenges to make our planet a better place. That’s why we build innovative environmental monitoring devices, intelligent software analytics, and turn-key building integrations to help companies around the world achieve low carbon healthy buildings that benefit our people and our planet.

We dream big, fail fast, and then start all over again until we get it right. 

We are looking for people that are bold enough to think that they can leave a mark on this world. 

Sounds like you? Read on!

Job Description

We’re looking for a back end engineer with 5+ years of experience to join our software engineering team. The role is full-time and remote-based in Europe. 

As a back end engineer at Kaiterra, you’ll be jointly responsible for the systems that ingest, analyze, and disseminate data from our sensor installations all over the world. Together with the rest of the software team, you will report directly to the CEO, and your work will be facilitated by a product owner and project manager.

The hours for this position are generally 9 to 5, but you will share on-call responsibilities with the rest of the software team, roughly 1 week every month, in case of emergency. In practice, production incidents that require a fast response are rare, and our engineering and ops team is spread around the world to provide the best timezone coverage. 

Responsibilities: 

  • Solving problems by designing, coding, shipping, and administering services in a production environment
  • Solving problems without writing code when possible (after all, code requires maintenance, and is therefore a liability)
  • Reasoning through trade-offs when designing new services, including concerns about simplicity, reliability, security, scalability, maintainability, and performance
  • Writing unit tests that run during development (about 30% of our code is unit tests), and integration tests that run against live services
  • Helping the team continuously add, delete, and improve our development process
  • Provisioning infrastructure, such as load balancers 
  • Communicating your changes in internal and external documentation, and in direct communication with customers
  • Being familiar with the entire system, and the primary owner of part of it. Our software team includes former Microsoft and Apple engineers, who were tired of owning a vanishingly small piece of an enormous system
  • Supporting other ad hoc projects aligned with the overall goals of the engineering team

About Our Stack:

  • We use Go for all our back end code, and we love it (generics will ship with 1.18 in early 2022). If you’re not happy to work on a back end written in Go, this job is not for you.
  • We use docker to ship code and kubernetes to run it. We use managed kubernetes offerings like EKS, because we’d rather be solving problems that our customers care about.
  • We use Postgres for our main database, InfluxDB to store sensor data, and Redis for caching.
  • Our sensor front-end is an MQTT gateway that pushes data to Kafka. (We’d love to remove Kafka, but unfortunately it solves some important problems for us)
  • We sparingly use cloud provider offerings like network load balancers and S3.

Skills and Requirements:

  • 3~5+ years experience shipping production server code. You understand how to ensure the code you write is reliable and maintainable in a server environment.
  • Experience doing ops for production services. You know the value of monitoring, logging, and liveness probes.
  • Experience building APIs used by third-party developers. You value backwards compatibility.
  • Fluency with Git. You’ve used it for years and can’t imagine writing code without source control.
  • Familiarity with Linux as a development platform. You’re at home in the terminal.
  • Experience with SQL databases. You can discuss trade offs between different schema designs, and are comfortable consuming SQL without using an ORM.

Nice-to-have Skills:

  • Experience with Go in particular for production. In our experience, learning a new language isn’t much of a barrier if you already know one or two well.
  • Experience with Postgres and Redis in particular.
  • Experience with docker and kubernetes. Kubernetes is complex, but it’s easier to learn than the common wisdom says.
  • Experience working with an IoT system. You’re familiar with different connectivity patterns, and workflows like device provisioning and firmware upgrades.
  • Deep knowledge of the networking stack, including how IP, TCP, HTTP, DNS, TLS, etc. all work together

You will be a great member of the Kaiterra team if you are also:

  • Not afraid to take challenges and try different things
  • Driven, persistent, and fun-loving
  • Passionate about learning 
  • Taking ownership of problem-solving and delivering outcomes
  • Mission-driven and want to make a real impact on our environment

Sounds like you? Apply now!

Please send your resume to careers@kaiterra.com with the subject line “Backend Engineer Application”.

Please also send a cover letter highlighting your qualifications and reasons for your interest in this position. We’re looking forward to working with you!