Software Engineer - Build Infrastructure
We are currently seeking a Software Engineer with a deep C++ skill, passion for API design, and experience with shipping software products.
You are the kind of engineer who is passionate about the health and quality of a large code base (e.g. good abstractions, good module factoring, good APIs, good diagnostics infrastructure, etc.). You are an expert in effective API design across a range of problem types, and a principled advocate for long term health of the product's API surface. You care deeply about the developer experience both within the team and for external customers. You are fluent in multiple software infrastructure libraries (e.g. STL, Apache Portable Runtime, Boost, GLib, etc.) and can advocate for and against software infrastructure that helps the team move faster, be more productive, and improve software quality. You drive practical choices across the team about refactoring efforts with a focus on high leverage areas with measurable gains, and are comfortable managing large-scale refactoring efforts that span teams and reach across a large code base. You are able to constructively influence code and module quality across the team and across partner teams through code and design reviews.
- Design and implement internal and external APIs that expose the core functionality of the system in a way that's understandable and easy to use for both internal and external customers.
- Understand software components from multiple partner teams, lead the integration of those components into the unified product code base, and drive their continued development.
- Create example applications that demonstrate effective use of platform APIs.
- Identify, propose, and implement improvements in core software infrastructure and architecture across the entire code base.
- Educate new team members on best practices for software development, testing, and documentation.
- 4+ years experience working in large-scale C++ code base.
- Demonstrated knowledge with API design in the context of large-scale software systems.
- Experience with more than one software infrastructure libraries (e.g. STL, APR, GLib, Boost, etc.).
- Experience developing, debugging, and shipping software products on large code bases that span platforms and tools.
- Experience with Software Development processes including: source control, bug tracking, and design documentation.
- Demonstrated experience working collaboratively in cross-functional teams.
- 7 or more years of C++ experience.
- Experience with C++11/C++14 features and principles.
- Experience with technology transfer work involving research science, especially in fields such as computer vision, graphics, robotics, and machine learning.
Back to top