Oculus is a world leader in virtual and augmented reality systems. Come work alongside expert software engineers, hardware 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 generalist software engineer with demonstrated proficiency doing full stack work on complex hardware/software systems. In this role, you will be driving projects that pull together technologies from multiple research teams, integrating those technologies into a complete and functional whole, implementing additional software components that express the full capabilities of the system, and prototyping experiences and samples on those systems. To be successful in this role you must have expert C++ skills, expert system level debugging skills, and strong 3D math and linear algebra fundamentals. You must have experience working with games software or similar real time systems. You must have demonstrated success shipping complex software components at all levels of the stack. You must have experience shipping software on both desktop and mobile platforms. You must be able to ramp up and be effective on new technologies and platforms quickly. You must be able to drive ambiguous projects in a fast-paced environment with a high degree of self-direction.
Design, implement, and debug C++ software, in real time systems, for a variety of hardware devices that may include novel sensing systems, tracking systems, imaging systems and haptic devices.
Profile and optimize the performance of complex real time hardware/software systems, on both desktop and mobile platforms.
Analyze and understand software components from multiple research science teams, lead the integration of those components into a unified project code base, and drive their continued development as needed.
Collaborate in a team environment across multiple scientific and engineering disciplines to rapidly deliver software solutions.
B.S. in Computer Science and 5+ years of relevant work experience in C++ software.
Solid 3D math and linear algebra fundamentals in graphics/games environments.
Experience developing, debugging, and optimizing software on at least one desktop platform (Windows, MacOS, Linux), and at least one mobile platform (Android, iOS).
Experience writing software at all levels of the stack, from the application UI all the way down to the low level systems software.
Experience developing, debugging, and shipping software products on large code bases that support multiple platforms.
Experience with software development processes including source control, bug tracking, and design documentation.
Demonstrated ability working collaboratively in cross-functional teams.
7+ years relevant work experience in C++ software.
Expertise with at least one GPU-backed graphics library (Vulkan, OpenGL, Direct3D, Mantle, Metal, etc.).
Experience developing or modifying game engines (Unreal, Unity, internally developed, etc.).
Familiarity with vectorization techniques on at least one platform (e.g. SSE, NEON, etc.).
Familiarity with GPGPU techniques (e.g. Cuda, OpenCL, etc.).
Familiarity with writing device drivers on at least one platform.
Some experience in physics, optics, computer vision, robotics, sensor fusion, or machine learning.