Replication Engineer
Role Description
Help us ignite the future of edge data synchronization as a Senior Software Engineer at Ditto! We are seeking someone to work directly within the core of Ditto's data sync platform and help shape our database replication systems. Design mission-critical data sync protocols that work in challenging environments to deliver on Ditto's goal of a high performance, self-healing, and reliable mesh.
Work with a remote team, manage your own time, and tackle interesting problems. Ditto is an equal opportunity employer with people from many different cultures and countries. We celebrate diversity and are committed to building a team that represents a variety of backgrounds, skill sets, and perspectives, and to providing our employees with a rewarding and inclusive work environment.
What You’ll Be Up To…
Work with product managers and other engineers to help design the future of the technology.
Troubleshoot production issues, and design future remediations to deliver on Ditto's goal of a high performance, self-healing, and reliable mesh.
Relentlessly optimize to ensure efficient bandwidth utilization and reliable data transfer between peers.
Use both industry standard and novel techniques to build robust data sync technologies:
Checksumming, content-defined chunking, Merkle trees, erasure codes, and data deduplication with content-addressable storage.
Modern probabilistic data structures such as bloom filters and cuckoo filters.
Highly concurrent async programming in Rust.
Content addressing and retrieval in a dynamic mesh with no central coordination.
Low-level IO optimization across Ditto’s supported platforms.
Support API design and product development teams by providing technical advice to leverage core Ditto mesh technologies.
Improve confidence in protocols and resiliency with lightweight formal methods such as property-based testing.
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.
What Helps You Thrive…
Excellent Rust experience, either professionally or demonstrated with personal projects or open-source work.
Excitement to learn the fundamentals of distributed file storage and sync systems.
BSc in Computer Science or equivalent.
Excellent operating systems knowledge covering topics such as system calls, concurrency primitives, memory mapping, durability and write ordering.
Good algorithmic reasoning and data structure knowledge covering probabilistic structures, graph theory, and computational complexity analysis. These are daily topics in this role.
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. As a fully distributed team, async communication is the default and the development process often includes written architecture and design documents.
Great-to-Haves…
Experience with networking on multiple platforms, including mobile operating systems such as iOS and Android.
Understanding of networking and routing protocols (TCP, UDP, BGP, OSPF, etc.) and core concepts.
Experience with lightweight formal methods such as property testing and model checking.
Experience with modern advancements in networking such as fountain codes, QUIC protocol, noise encryption framework, etc.
Mobile development experience.
Base Salary Range
£85,600—£168,000 GBP
About the job
Apply for this position
Replication Engineer
Role Description
Help us ignite the future of edge data synchronization as a Senior Software Engineer at Ditto! We are seeking someone to work directly within the core of Ditto's data sync platform and help shape our database replication systems. Design mission-critical data sync protocols that work in challenging environments to deliver on Ditto's goal of a high performance, self-healing, and reliable mesh.
Work with a remote team, manage your own time, and tackle interesting problems. Ditto is an equal opportunity employer with people from many different cultures and countries. We celebrate diversity and are committed to building a team that represents a variety of backgrounds, skill sets, and perspectives, and to providing our employees with a rewarding and inclusive work environment.
What You’ll Be Up To…
Work with product managers and other engineers to help design the future of the technology.
Troubleshoot production issues, and design future remediations to deliver on Ditto's goal of a high performance, self-healing, and reliable mesh.
Relentlessly optimize to ensure efficient bandwidth utilization and reliable data transfer between peers.
Use both industry standard and novel techniques to build robust data sync technologies:
Checksumming, content-defined chunking, Merkle trees, erasure codes, and data deduplication with content-addressable storage.
Modern probabilistic data structures such as bloom filters and cuckoo filters.
Highly concurrent async programming in Rust.
Content addressing and retrieval in a dynamic mesh with no central coordination.
Low-level IO optimization across Ditto’s supported platforms.
Support API design and product development teams by providing technical advice to leverage core Ditto mesh technologies.
Improve confidence in protocols and resiliency with lightweight formal methods such as property-based testing.
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.
What Helps You Thrive…
Excellent Rust experience, either professionally or demonstrated with personal projects or open-source work.
Excitement to learn the fundamentals of distributed file storage and sync systems.
BSc in Computer Science or equivalent.
Excellent operating systems knowledge covering topics such as system calls, concurrency primitives, memory mapping, durability and write ordering.
Good algorithmic reasoning and data structure knowledge covering probabilistic structures, graph theory, and computational complexity analysis. These are daily topics in this role.
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. As a fully distributed team, async communication is the default and the development process often includes written architecture and design documents.
Great-to-Haves…
Experience with networking on multiple platforms, including mobile operating systems such as iOS and Android.
Understanding of networking and routing protocols (TCP, UDP, BGP, OSPF, etc.) and core concepts.
Experience with lightweight formal methods such as property testing and model checking.
Experience with modern advancements in networking such as fountain codes, QUIC protocol, noise encryption framework, etc.
Mobile development experience.
Base Salary Range
£85,600—£168,000 GBP