Design and implement OS components at all layers of the system, e.g.: kernel, synchronization primitives, resource allocators, memory management, security, I/O systems, persistence, etc.
Design and implement 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.
Debug complex, system-level, multi-component issues that typically span across multiple layers from kernel to application.
Profile performance problems and drive optimizations that span the entire software stack.
Bring up new devices and lead debugging and performance tuning exercises that span multiple hardware/firmware/software teams.
Understand software components from multiple partner teams, lead the integration of those components into the unified product code base, and drive their continued development.
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).