Senior Software Engineer - Elixir/Erlang

Remote /
Engineering /
About us

Eleos Technologies is a growing 10-year-old company building communication software for truck drivers and field workers.

We’re helping a diverse mix of customers—from mom and pop operations to thousand-truck  fleets—improve how they communicate with their employees by tackling information overload, reducing phone calls, and eliminating obsolete technologies.

Our engineering team has been 100% distributed since day one. This means we’re tooled up to handle product, architectural, technical, and ops work all from home or remote. You won’t miss out of office conversations, and you won’t have to learn to drive a telepresence robot. 

We began life as a bootstrapped startup, which allowed us to focus on building products our customers love. Today, we're part of the Knight-Swift family, which has allowed us to keep our focus and the freedom to build the best products we can for the transportation industry. We offer robust healthcare (dental, medical, vision), paid time off, and a generous equipment budget.

About the role

You’ll be the primary driver of new customer-facing functionality for the Elixir/Erlang web application powering our product—but you won't be alone! We have nearly a decade of experience operating OTP-based production systems, and we're excited to teach you what we know while learning from you too. We'll also continue to work on new features and fixes alongside you as we've done up until this point, but we're ready for a specialist who can help set architectural direction and really focus on the system as a whole.

Because this system has no direct user interface besides a robust HTTP API, you’ll work closely with our iOS, Android, and frontend web engineers to evolve the backend’s functionality to solve new problems, all while improving performance and ensuring reliability.

You’ll be helping us make our development cycles more efficient by owning the technical design and implementation of new features, extending our automated test suite to reduce the need for manual testing, and shipping features and fixes on a regular basis.

You’ll have opportunities to flex your skills around automated deployments, automated testing, tracing and visibility, and learn from others in a collaborative environment. In time, you’ll also help onboard and mentor junior engineers as we grow our team.

Along with the rest of the server team, you'll participate in an on-call rotation to respond to and resolve (rare ⭐) major incidents and outages affecting our stack. That said, we take our evening, weekend, and vacation time really seriously—no email, no pings in Slack.

This is a full-time, W2 position open to candidates located in the United States who are able to work Eastern Standard Time ± 3 hours, to facilitate realtime collaboration when needed. This role is permanently remote, although in non-COVID times we typically get together once a year to review and celebrate what we've accomplished.

About you

We’re looking for a senior-level engineer—you won't know everything (nobody does!) but you should have a solid set of experiences in seeing systems work well, seeing systems you've built fail in various unexpected ways, fixing them, and striking a balance of engineering tradeoffs to maximize the former and avoid the latter as you go.

You should be comfortable with a variety of approaches to debugging, including using a step debugger, packet captures, tracing, and good old `IO.inspect` (or `io:format`), and have a sense of when to use each. You should have at least a solid theoretical mental model of modern program execution, including the stack, garbage collection, contention, threading, and sockets.

Most importantly, you'll be joining a team of about 6 other full-time engineers, so you'll be able to work directly with the mobile and frontend teams to get really cool stuff built and shipped without a lot of overhead or layers of communication. Although we tend to release new mobile apps with larger features on a semi-monthly cadence, we ship our backend with confidence (thanks to automated tests) once a week or or more as fixes and smaller changes land.

Key skills

    • 4+ years professional experience implementing and operating production systems on a major cloud platform (AWS, GCP/GAE, Azure)
    • 2+ years professional experience working with Erlang or Elixir (and thus the BEAM runtime and OTP)
    • A computer science-based educational background (can be a bachelor's degree or self-study!)
    • Confident use of SQL, relational storage, and key/value storage to optimize for correctness and performance
    • A willingness to mentor other engineers and to share your knowledge to help them grow
    • The ability to quickly convey ideas, opinions, and technical details in written English

The following aren’t requirements, but be sure to mention them if they apply to you:

    • Experience with Docker or other common containerization platforms
    • Experience with Postgres, Cassandra, or other sharded data stores
    • A passion for other functional programming languages like Clojure or Haskell
    • You enjoy technical writing or documentation
    • You like designing APIs for other people to use
    • A working knowledge of Ruby, JavaScript, or TypeScript

We take a “reasoned opinions, weakly held” approach to tools, and resist letting those tools define our identity. That said, we’ve had positive experiences with (and made significant investments in) the following, which does mean you’ll be working with them at least in the medium term:

Elixir, plus Erlang/OTP
Amazon Web Services

If this sounds like a fun challenge and your kind of environment, drop us a line and let’s talk!