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