Interactive 3D Software Engineer-3D Vision
Santa Clara Valley (Cupertino), California, United States
Software and Services
Are you curious about the possibilities for human-machine collaboration in the rapidly advancing area of machine learning? Do you have a keen sense of software usability and practical UI design? Would you like to explore and develop novel ways of visualizing, analyzing and manipulating 3D information? In our team, we collect and process massive volumes of 3D data. Qualitatively understanding and effectively utilizing this resource requires a combination of advanced algorithms and human efforts supported by the appropriate tooling. Efficiency and scalability are major focus points for this type of operation, which often requires rapid creative solutions to unexpected problems.
- Strong C/C++ and software design skills
- Comprehensive knowledge of linear algebra and rendering algorithms
- Experience with rendering technologies such as Direct3D, OpenGL, Metal or Vulkan
- Firm understanding of memory management and concurrent multi-threaded software
- Experience with profiling and performance optimizations
- Genuine interest in and familiarity with interactive visual software such as games or content editors
We work as a relatively small "team within a team" responsible for proposing, inventing, optimizing and maintaining tools that support and enable algorithm development and research by other parts of the organization. Communication is very open, and there is a lot of opportunity for participating in cross-disciplinary work with leading expertise in many areas of computer science and software engineering. Projects can range from afternoon hacks providing test data for an experimental algorithm, all the way up to major software infrastructures at the heart of ongoing massive-scale data production pipelines. It's often necessary to collect and analyze performance metrics in order to find hidden weaknesses and optimize throughput. An intuition about worthwhile techniques and methods is very valuable, but equally important is being able to collect and evaluate quantitative statistics as a basis for understanding and reacting to the reality of a system in operation, even if it ends up behaving unexpectedly. You are expected to solve the small problems quickly and the large problems robustly. Particular decisions on software design depend on the scope of each task, and it is a big plus if you are demonstrably comfortable with that balance.
Education & Experience
BS, MS, or PhD in Computer Science or relevant experience is desired.
- The following skills are optional, but knowledge of one or more of these areas would be valuable:
- - Game development, either in terms of engine code or front-end UI construction
- - Experience developing tools or tool plugins for editing graphics or 3D assets
- - Familiarity with modern machine learning principles and techniques