About the role
The Basics
As a Senior Software Engineer on the Connect team, you will own how Tanium data reaches the rest of our customers' tools. Connect is the module that moves endpoint data and events out of Tanium and into external systems such as SIEMs (security information and event management tools like Splunk), data warehouses, ticketing systems, cloud storage, and email. Customers run thousands of these exports on schedules, and a failed or slow export means their security team is working with stale data.
You'll design and build the services behind Connect, shape its technical direction, and mentor engineers on the team. This role is a strong fit for someone on a path to Staff Engineer.
This position follows the Company's hybrid schedule, which currently requires employees to work in the office a minimum of three days per week at our Durham, NC or Emeryville, CA location. Candidates must be US-based.
What you'll do
- Design and build scalable, reliable backend services in Node.js and Golang that collect, transform, and deliver large volumes of endpoint data to external destinations
- Design and evolve the APIs Connect exposes and consumes, with clear contracts, versioning, and backward compatibility
- Build and maintain integrations (connectors) to third-party platforms, handling their different authentication methods, rate limits, payload formats, and failure behavior
- Own delivery guarantees: retries, backoff, deduplication, and back-pressure (slowing intake when a destination can't keep up), so data is not lost or duplicated
- Build event-driven workflows using NATS (an open-source messaging system where services publish and subscribe to events) and Temporal (an open-source engine that runs multi-step jobs durably, so they resume where they left off after a crash)
- Lead technical design for new Connect capabilities, driving decisions across teams and writing design docs others can build from
- Improve observability (metrics, logs, tracing, alerting) so we find export problems before customers do
- Write unit tests for your code and partner with the QA and automation team on integration and end-to-end coverage, building services that are easy to test
- Debug production issues, find root causes, and build the fix that prevents the next one
- Mentor engineers and help set the team's standards for design, testing, and operations