Staff Software Engineer (Golang and Kafka)

Engineering – Engineering /
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:

The Queueing and Storage Systems (QSS) team is responsible for the “platform” of our databases (MySQL, PostgreSQL, DynamoDB, Redis/Elasticache, and more) and queues (Kafka, RabbitMQ) across the entire company. The team manages some of these centralized systems for the entire engineering organization, but is primarily an enablement squad -- helping enable other teams to effectively and efficiently manage their own persistent storage infrastructure.

To get there, we are developing tooling platforms to automate provisioning, deployment, management, and interactions with the next generation of databases and queues used by our application teams. Without deep experience scaling databases and queues, feature teams often make common mistakes trying to use these systems. We try to get out ahead of that, building solutions that will scale without running into common problems like hot spots, uneven load distribution, and general poor performance.

The Role:

The QSS team is building a suite of tooling to automatically deploy a relational database platform that is fully managed within a feature squad’s service. Schema management, change data capture, replication, denormalization, and aggregation is all managed automatically by the platform. The tooling and platform allow teams to focus on the business logic around managing and querying for their data, without the overhead of every team individually implementing nuanced platforms like entity change queues. This suite of tools will eventually extend into a full platform for real-time data processing/analytics, allowing different data stores to aggregate and roll up into new enriched data sources for the platform to leverage.

Your Daily Adventures Will Include

    • Designing/building Kubernetes operators to automatically manage/provision infrastructure, scaling, deployment coordination, and credentials
    • Maintaining the reliability and performance aspects for the databases and queues for the production Outreach platform
    • Designing reusable storage platforms for feature squads to leverage
    • Analyzing solutions and implementing best practices for our database clusters and other stateful components
    • Prototyping new managed storage/queue solutions and access patterns for new services and feature roadmaps
    • Developing solutions for migrating data between systems
    • Providing database expertise to engineering teams (for example through reviews of database migrations, queries and performance optimizations)
    • Supporting and debugging database production issues across services and levels of the stack
    • Proactively designing/tuning monitors/alerts/dashboards to alert on symptoms and not on outages
    • Documenting every action so your learnings turn into repeatable actions and then into automation.

Our Vision of You

    • You love enabling your coworkers to be successful
    • Experience operating scaled/high-throughput database and/or queue platforms in production systems
    • Able to write high quality code in a programming language (e.g. Golang, Ruby, Scala, Elixir, Python) that deploys to a production environment used by customers
    • Experience designing and supporting internal-facing tooling where the “customers” are your coworkers
    • 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
    • Understanding of which details are important and ability to prioritize incremental delivery over long-term go-dark projects
    • Willingness to learn new technologies (most of our time is spent in Golang, with a smattering of Ruby/Rails)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