We are currently seeking an Engineering Manager to manage a team of engineers building a next generation Operating System focused on the needs of AR systems. The ideal candidate has strong design and build skills, passion for low-level systems software and device driver programming, hands-on experience working on Operating Systems at all layers from firmware to cloud, and experience with shipping hardware/software products. You are the kind of leader who has expertise building and managing high performance teams creating high creating reliable, robust, and performant systems software at all layers of the stack.
You are fluent in multiple areas of classic Operating Systems e.g., threading, scheduling, memory management, I/O and device models, security. You have hands-on experience leading teams bringing up new hardware and software systems and have significant experience debugging and repairing complex, multi-component system level issues using a variety of OS and bus level debugging tools, e.g. USB/Firewire/Ethernet protocol analyzers, kernel debuggers, OS event tracing infrastructure, etc.
- Build and lead teams designing and implementing OS components at all layers of the system, e.g.: kernel, synchronization primitives, resource allocators, memory management, security, I/O systems, persistence, etc.
- Build and lead teams designing and implementing device and bus drivers that operate efficiently in a constrained environment yet when pressed can efficiently deliver large volumes of data with low-latency and high-bandwidth.
- Build and lead teams designing, implementing, debugging complex, system-level, multi-component issues that typically span across multiple layers from kernel to application.
- Understand software components from multiple partner teams, lead the integration of those components into the unified product code base, and drive their continued development.
- 7+ years experience working on systems software in a large-scale C or C++ code base.
- 5+ years managing and growing software engineers, with experience growing other software engineering managers.
- Experience with Software Development processes including: source control, bug tracking, and design documentation.
- Demonstrated experience working collaboratively in cross-functional teams.
- Experience developing, debugging, and shipping software products on large code bases that span platforms and tools.
- Demonstrated knowledge of operating systems internals on at least one platform.
- Experience with power management and modern systems architecture.
- Experience with specialized kernel functions: synchronization primitives, memory management, schedulers and dispatchers, TLB management.
- Experience working on multiple classes of drivers e.g., bus, block, wireless, display drivers.
- Experience with low-latency, high bandwidth, streaming hardware devices, e.g. video cameras, graphics cards, etc.
- Experience with new device bring-up.
- Experience with ARM platforms.
- Experience creating, debugging, and deploying on-device firmware (MCU and/or DSP).