Ditto is redefining how data moves at the edge, aiming to make it seamless for developers to build resilient, real-time applications, regardless of network conditions. The Query Engine team builds the Ditto Query Language (DQL), which is used throughout the cloud database and on-device SDKs, to enable customers to get the most out of Ditto while providing a familiar, SQL-like experience.
Requirements
- 7+ years of experience in software engineering, 2 or more in a Senior or Staff role, with a focus on distributed systems and low-level programming languages like Rust and/or modern C/C++.
- Willingness to learn the Rust programming language.
- Prior experience with building SQL like query languages.
- Prior experience with building cost based and ruled based query optimizers.
- Prior experience with collecting index statistics and data distributions.
- Prior professional experience with the Rust programming language or other systems programming languages (C, C++, D, Ada, Zig, etc).
- Experience with property-based testing or other state-space exploration techniques.
Responsibilities
- Troubleshoot production issues, and design future remediations to deliver on Ditto's goal of a high performance, self-healing, and reliable mesh.
- Design and implement data distribution collection subsystems and index statistics collection subsystems.
- Design and implement a query cost based optimizer based on collected data distribution, and as a fall back, a rule based query optimizer, to be used when suitable distributions and statistics do not exist or are insufficient.
- Assist with implementation of other query engine features as needed.
- Author RFCs, design and document system architecture, and collaborate with other teams within Ditto.
- Estimate the delivery timeline for projects and communicate with management and the broader team regarding project execution.
- Set team culture by example, expanding Ditto’s culture of Trust, Communication, and Continual Improvement.
Other
- Work with product managers and other engineers to help design the future of the technology.
- A willingness to travel (including internationally) once a quarter for team get-togethers and design sessions.
- Strong communication skills, with an emphasis on written communication skills in particular.
- Familiarity with Conflict-Free Replicated Data Types (CRDTs).
- Experience with monitoring tools such as Prometheus or Grafana.