ScoutGet started
Figure AIPlatform Software

Software Engineer: Middleware Developer Productivity

San Jose, CA
Must-haves
  • Bachelor or Master degree in Computer Science or related field.
  • At least 5 years of experience writing production C++.
  • Mastery of C++, Python and Linux.
  • Understanding of how to create testable software systems.
  • Good knowledge of computer architecture.
  • Understanding of Linux userspace and kernel environments.
  • Proficiency with networking protocols.
  • Comfortable using debuggers and performance profiling tooling.

Nice to have: Experience working on systems with timing constraints. · Experience working in resource constrained environments like microcontrollers. · Knowledge of communication buses and protocols like Ethercat, Serial, CAN or USB.

The role
Figure is an AI robotics company developing autonomous general-purpose humanoid robots. The goal of the company is to ship humanoid robots with human level intelligence. Its robots are engineered to perform a variety of tasks in the home and commercial markets. Figure is headquartered in San Jose, CA. We are looking for solid, experienced C++ developers to help us build out the core software platform that will allow our robot to reach its full potential! Responsibilities: * Architect, design, implement and test C++ middleware that will run on our robot and provide system wide functionality to specialized controls and autonomy software. * Develop Python tooling and interfaces. * Help us ensure that our software ecosystem is stable, scalable and well tested in CI. Requirements: * Bachelor or Master degree in Computer Science or related field. * At least 5 years of experience writing production C++. * Mastery of C++, Python and Linux. * Understanding of how to create testable software systems. * Good knowledge of computer architecture. * Understanding of Linux userspace and kernel environments. * Proficiency with networking protocols. * Comfortable using debuggers and performance profiling tooling. Bonus Qualifications: * Experience working on systems with timing constraints. * Experience working in resource constrained environments like microcontrollers. * Knowledge of communication buses and protocols like Ethercat, Serial, CAN or USB.