Software Engineer: Middleware Developer Productivity
San Jose, CA
- 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.
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.
