System Software & Driver EngineerOculus | Redmond, WA
Facebook Reality Labs(FRL) in the design of virtual and augmented reality systems. Come work alongside expert software engineers and research scientists to create the technology that makes VR and AR pervasive and universal. Join the adventure of a lifetime as we make science fiction real and change the world.
We are currently seeking a Software Engineer with a deep C++ skill, passion for low-level systems software and device driver programming, and experience with shipping hardware/software products.
You are the kind of engineer who has expertise creating systems software that sits between applications and devices. You are fluent in threading/scheduling and IO primitives on at least one platform, and you have built large scale multi-threaded software systems with low latency and high reliability requirements - especially for audio/video/graphics/robotics applications. You are able to create high quality systems software and kernel-mode drivers, and are skilled using OS and bus level debugging tools (e.g. USB/Firewire/Ethernet protocol analyzers, kernel debuggers, OS event tracing infrastructure, etc.).
Design and implement systems software and device drivers that control low-latency high-bandwidth devices, and that move large volumes of data between the device and application software stack efficiently
Debug complex threading and timing bugs that span the device, operating system, and software stack
Profile performance problems and drive optimizations that span the device, operating system, and 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
5+ years experience working on systems software in a large-scale C++ code base
Demonstrated knowledge with systems programming on at least one platform
Demonstrated knowledge creating device drivers on at least one platform
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 creating Linux drivers and Linux kernel patches
Experience with low-latency, high bandwidth, streaming hardware devices (e.g. video cameras, graphics cards, etc.)
Experience with new device bring-up
Experience with Linux as well as real-time operating systems
Experience with ARM platforms
Experience creating, debugging, and deploying on-device firmware (MCU and/or DSP)
Experience with hardware and software technology transfer work involving research science, especially in fields such as computer vision, graphics, robotics, and machine learning