
Staff Software Engineer, Replicated Storage Services (Next-Gen Platform)
- Toronto, ON
- Permanent
- Full-time
- Minimum 10 years of experience in programming, debugging, and performance tuning distributed and/or highly concurrent C/C++ software systems. Candidates with more experience will be considered for more senior roles. Experience in C++ is preferable, but not required
- Strong systems fundamentals, including multi-threaded programming and performance profiling
- Familiarity with distributed systems such as consensus protocols, data replication, distributed transactions, and fault tolerance
- Familiarity with database internals or building core components for data processing systems
- Excellent verbal and written technical communication skills and a desire to collaborate with colleagues and mentor junior engineers and interns
- Excellent time management skills and the ability to make realistic assessments of project complexity
- Passion for learning new things in the domains of computer science and software engineering
- Develop novel data replication solutions based on the Raft consensus protocol for ensuring automatic failover and zero-downtime of user applications
- Handle distributed systems related customer escalations from Technical Support team
- Write production-ready database code in C++
- Write unit tests and integration tests in C++, Javascript, and Python to demonstrate application correctness
- Diagnose test failures, identify bugs in existing code, and fix them
- Investigate the performance impact of code changes that may cause software performance regressions
- Interview candidates for software engineering positions
- Develop and maintain expertise on cutting edge database and distributed systems research from industry and academia
- Handle (or lead the effort to handle) time-sensitive customer escalations
- Lead development and project management of large, cross-team projects
- Collaborate with stakeholders and engineering teams across the company to jointly work on large initiatives
- Advise Product Management on engineering complexity and inter-project dependencies
- Collaborate with Product Management and Engineering leadership to define product roadmaps
- In the first month, you will have understood the high level architecture of MongoDB replication 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 a new feature and helping to mentor new engineers on the team