Staff Software Engineer
Summary
Build and harden large-scale data platforms, focusing on distributed systems resilience, cloud-native Java services, and JVM-level optimizations for high-throughput pipelines.
- Engineering for Scale: Design and implement high-performance backend services that can withstand massive throughput. You will focus on the fundamental constraints of the system—latency, memory models, and I/O efficiency—to ensure our solutions scale linearly.
- Distributed State Management: Own the challenge of data integrity. You will solve difficult problems regarding distributed consistency, leader election, and state persistence, choosing the right storage patterns based on first principles rather than default configurations.
- Resilience & Observability: Build systems that fail gracefully. You will implement advanced patterns for circuit breaking, backpressure, and resource isolation to prevent system overload and cascading failures.
- Cloud-Native Architecture: Apply the principles of immutable infrastructure and container orchestration. You will ensure that our stateful applications can run reliably in dynamic environments (like Kubernetes), handling the complexities of networking and persistent storage.
- Technical Rigour: Solve 'unusually complex' problems where standard documentation does not exist. You will analyse JVM internals, garbage collection pauses, and thread contention to optimise the critical path of our data pipelines.
- Experience: 8+ years of backend engineering experience with a focus on data-intensive applications or distributed systems.
- Ability to produce high-performance, high-quality code in at least one of the following languages: Java, Scala, or Go; Python experience is a plus.
- Systems Thinking: A strong grasp of distributed systems theory (CAP theorem, consensus algorithms, eventual consistency). You understand the trade-offs between availability and consistency in a partitioned network.
- Container Fluency: Strong understanding of modern orchestration principles (e.g., Kubernetes). You know how to design applications that survive pod evictions and network partitions.
- Versatility: While Java is our core, you possess a 'polyglot curiosity.' You are comfortable reading and debugging code in other languages when the problem demands it.
- Autonomy: Ability to work within general parameters and without appreciable direction, determining courses of action necessary to obtain desired results.
- Experience contributing to or modifying open-source data engines (e.g., Apache Hadoop, Spark, or similar).
- Deep understanding of database internals (how indexes, planners, and storage engines actually work).
- Experience refactoring monolithic legacy systems into microservices or serverless architectures.
- Generous PTO Policy
- Support work life balance with Unplugged Days
- Flexible WFH Policy
- Mental & Physical Wellness programs
- Phone and Internet Reimbursement program
- Access to Continued Career Development
- Comprehensive Benefits and Competitive Packages
- Paid Volunteer Time
- Employee Resource Groups