MongoDB’s mission is to empower innovators to create, transform, and disrupt industries by unleashing the power of software and data. We enable organizations of all sizes to easily build, scale, and run modern applications by helping them modernize legacy workloads, embrace innovation, and unleash AI. Our industry-leading developer data platform, MongoDB Atlas, is the only globally distributed, multi-cloud database and is available in more than 115 regions across AWS, Google Cloud, and Microsoft Azure. Atlas allows customers to build and run applications anywhere—on premises, or across cloud providers. With offices worldwide and over 175,000 new developers signing up to use MongoDB every month, it’s no wonder that leading organizations, like Samsung and Toyota, trust MongoDB to build next-generation, AI-powered applications.
The Cluster Scalability Team builds features into the MongoDB Server that enable operators to scale their workload seamlessly from 100 to 100 billion operations a day. The team is responsible for specifying where data is stored and building the distributed protocols for quickly moving data around a cluster to achieve the desired data distribution. This includes building primitives to both move small ranges of data, and to rewrite an entire collection across a sharded cluster with a new sharding partition key and data distribution. Nearly all of the code the team writes is in our public repository.
In the near-term we'll be focusing on making our data movement primitives more reliable, resilient, and performant. In the future, we hope to expand our scaling flexibility to specialized workloads, make sharding invisible to users, and more intelligently arrange data placement to transparently support dynamic customer workloads.
Our team champions a strong culture of inclusivity, diversity, and collaboration. If you want to work on a collaborative team that applies distributed systems fundamentals to deliver core features of a popular database, join us! Let’s change what’s possible for application developers, system architects, and database operators.
This role can be based out of our New York City office or remotely in the North America region.
Candidate Profile
- Minimum 12 years of experience in programming, debugging, and performance tuning distributed and/or highly concurrent C/C++/Rust software systems. Experience in C++ is preferable, but not required
- Strong systems fundamentals, including multi-threaded programming and performance profiling
- Familiarity implementing distributed systems such as consensus protocols, logical clocks, distributed transactions, and fault tolerance
- Experience implementing database internals or building core components for data processing systems
- Excellent verbal and written technical communication skills and a strong desire to collaborate with colleagues and mentor engineers
- Excellent time and project management skills including the ability to make realistic assessments of project cost and complexity
Responsibilities
- Architect and develop novel protocols for moving data between different shards in a sharded database cluster, ensuring correctness, performance, resiliency, and low-cluster impact
- Design and implement protocols for placing data intelligently throughout a cluster and the plans for how to achieve that placement
- Handle distributed systems related customer escalations from Technical Support team and coach teammates to do the same
- Write production-ready database code in C++, improve the existing code, and mentor their team to write higher quality code
- Own all code the Cluster Scalability Team maintains, ensuring it achieves a high standard for quality (including security, durability, availability, and performance) and maintainability
- Write and improve unit and integration tests in C++, Javascript, and Python to demonstrate correctness
- Diagnose test failures, identify bugs in existing code, fix them, and prevent bugs from being introduced in new code
- Investigate the performance impact of code changes that may cause software performance regressions
- Interview candidates for advanced software engineering positions
- Develop and maintain expertise on cutting edge database and distributed systems research from industry and academia
- Lead development and project management of some of the largest projects across the company
- Collaborate with stakeholders and engineering teams across the company to jointly work on large initiatives
- Advise Product Management on technical product direction, engineering complexity and inter-project dependencies
- Collaborate with Product Management and Engineering leadership to define product roadmaps
Success Measures
- In the first month, you will have understood the high level architecture of MongoDB sharding and fixed a few bugs
- In three months, you will have contributed to the development in C++ of a project slated for the next major release of MongoDB, and diagnosed and fixed a few customer or testing-reported issues
- In six months, you will have taken on code review responsibilities and are involved in reviewing the design for new features
- In twelve months, you will be leading the development of new features and initiatives, helping to mentor engineers on the team, and using your experience to drive the long-term technical roadmap of the Cluster Scalability Team
To drive the personal growth and business impact of our employees, we’re committed to developing a supportive and enriching culture for everyone. From employee affinity groups, to fertility assistance and a generous parental leave policy, we value our employees’ wellbeing and want to support them along every step of their professional and personal journeys. Learn more about what it’s like to work at MongoDB, and help us make an impact on the world!
MongoDB is committed to providing any necessary accommodations for individuals with disabilities within our application and interview process. To request an accommodation due to a disability, please inform your recruiter.
MongoDB is an equal opportunities employer.