Systems Software Engineer, Facebook Reality Labs
- Menlo Park, CA
Facebook's mission is to give people the power to build community and bring the world closer together. Through our family of apps and services, we're building a different kind of company that connects billions of people around the world, gives them ways to share what matters most to them, and helps bring people closer together. Whether we're creating new products or helping a small business expand its reach, people at Facebook are builders at heart. Our global teams are constantly iterating, solving problems, and working together to empower people around the world to build community and connect in meaningful ways. Together, we can help people build stronger communities - we're just getting started.
The Facebook Reality Labs team is building products that make it easier for people to connect with the ones they love most. We are a team of world-class experts developing and shipping products at the intersection of hardware, software and content. We have a clear mandate to ship products at scale. In particular, seemingly impossible products that define new categories and that advance Facebook's mission of connecting the world.
We are seeking a Systems SW Engineer with strong design and build skills, experience with low-level systems software and device driver programming and experience with shipping hardware/software products. This person will be an integral member of the team, responsible for embedded software design and optimization. This person will also be involved in developing a solid platform while working on a variety of domains to enable new experiences for AR/VR products.
- 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.
- Work with hardware vendors and the upstream community to debug and tune drivers as needed.
- Design and implement device and bus drivers that operate efficiently in a power 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.
- Bachelor's degree in Computer Science, Computer Engineering or equivalent combination of education and experience.
- 4+ years of programming experience in C/C++.
- 4+ years experience in the following: device driver development or embedded systems, or operating systems internals on at least one platform.
- 4+ years experience working on systems software in a large-scale code base.
- 4+ years 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.
- Experience working on multiple classes of drivers e.g., bus, block, wireless, display drivers.
- Experience developing low level system services exchanging data using standard IPC techniques.
- Experience with specialized kernel functions: synchronization primitives, memory management, schedulers and dispatchers, TLB (Translation Lookaside Buffer) management.
- 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 in native systems development.
- Experience developing HAL and device drivers for embedded Linux or Android.
- Experience with building software security for Operating Systems.
Back to top