Our success is reliant on building teams that include people from different backgrounds and experiences who can elevate assumptions and ideas with fresh perspectives. We're dedicated to hiring the whole human, not just a resume. To that end, we look for a diverse pool of applicants-including those from historically marginalized groups. We would like to invite you to apply even if you don't think you meet all of the requirements listed below. We don't want a few lines in a job description to get between us and the opportunity to meet you.
About the Team/Role:
The Dev Tooling team is an internal-facing team dedicated to enabling the entire engineering organization to do better work. This wide and intentionally-vague charter encompasses a slew of evolving topics. If there’s a common thread between multiple projects, whether discovered in the present or envisaged for the future, we try to get out ahead and build the systems, tooling, and training needed for that work to be successful. We’re also spearheading a long-term project of open-sourcing our entire service platform -- from kubernetes cluster-building to template-based service development to the development environment/tooling to test it, it’s all going to be one big startup-in-a-box system for the world to use.
Outreach’s primary product is based on a monolithic Ruby on Rails codebase, “the flagship”, heavily leveraging ActiveRecord and other common Ruby/Rails technologies. Over the past year, we have set a new North Star of all new service code being in Golang, and building out microservices to support both new and existing features, with the intent of slowly removing functionality from the flagship. A year later, though we have been successful at moving the majority of new work over to Go, the flagship codebase still carries the majority of our traffic and houses our core business systems.
This role, for at least the next couple years, is primarily responsible for maintenance and ongoing development of the flagship. The flagship still handles the overwhelming majority of traffic in our product, is responsible for the lion’s share of infrastructure costs, and those stats won’t materially change any time soon. It is very much our bread-and-butter codebase and platform, not just a few boxes in the corner gathering dust that just need some light tweaking.
In the future, this role will evolve toward leveraging your flagship experience to help us decompose remaining aspects of the flagship into microservices, and eventually will transition wholly into Golang-based service development/maintenance. It’s a great opportunity to leverage your years of Rails experience to help us continue to scale our primary backend, as our customer base continues to rapidly expand, but simultaneously get experience on some of the most popular modern tech stacks. Help us move into a fully microservice-based world and someday sunset the flagship, eventually working entirely on new services/frameworks.
\n- Analyzing and increasing scalability of our current platform
- Adapting our latest org-wide observability tooling systems to the flagship
- Building libraries and bridging tooling/systems to help with plucking areas out of the flagship into microservices
- Optimizing graph-like ActiveRecord model access patterns and migrations to assist with decomposition of feature areas
- Performance analysis of our worker systems/ threadpools to identify key bottlenecks to improve and/or extract into new services and independently scale
- Keeping us on the latest Ruby and Rails versions
- You thrive in an ambiguous environment that requires seeking out and collaborating with both your team and the rest of the company to design effective solutions
- Experience using Ruby and Rails to build heavily-scaled backend systems
- Experience using and tuning ActiveRecord at scale and performing/monitoring schema migrations
- Experience with container-based workflows and services (Kubernetes preferred but not required)
- Experience designing, building, and supporting infrastructure services
- Familiar with continuous deployment environments
- You embody our core values. We are hungry craftspeople, we have grit, we are honest, we take ownership, we have each other’s back no matter what, we’re one with our customers, and we find strength in diversity and inclusion