Principal System Software Engineer
Brain Corp is a San Diego-based AI company creating transformative core technology for the robotics industry. Our diverse teams in Software, Hardware Design, and Embedded Systems are creating comprehensive solutions to support the builders of today's autonomous machines in successfully producing, deploying, and supporting commercial robots across industries and applications. Brain Corp is funded by the SoftBank Vision Fund, Clearbridge, and Qualcomm Ventures. For more information please visit: https://www.braincorp.com/
As a member of the Software Engineering Team, the Principal System Software Engineer is responsible for developing software on linux platforms with solid expertise developing production ready Python and C++ code. This engineer will be working at the operating system and application layer running on many of Brain’s robots. These robots solve complex, real-world problems. As a core member of our Software Division, the Senior System Software Engineer will work with our world-class team of engineers and scientists to build a platform for the next generation of intelligent machines. Their experience will be pivotal in advancing our mission: safe and reliable robots everywhere.
Duties and Responsibilities:
- Identify, propose, design, implement, and support new features, fixes, and functionality to move both our products and our software organization forward.
- Deliver software features/functionality that increases customer value and product scalability.
- Increase the agility/ software release frequency of the team and organization through code refactoring, simplification, and removal.
- Review performance metrics of the production fleet as a key indicator of customer experience from which to identify software product improvements.
- Coordinate with cross-functional areas of expertise including hardware, firmware, platform, user experience, quality, and cloud engineering to deliver world-class customer value.
- Remain up to date with developments across platform, navigation, and other robots, in order to leverage and contribute towards software innovation across all products.
- Help set and execute on the technical roadmap for our robotic product lines.
- Mentor and train more junior engineers as required.
- Help resolve production and customer issues and engineer long-term solutions through root cause analysis and data analytics.
- Other duties and projects as assigned.
- Bachelor of Science degree in computer science, software engineering, or a related field.
- 12 years of experience in system-level software design across all stages of the software development life cycle with a BS or 8 years of the same experience with an MS.
- Experience architecting, designing, implementing, testing, and debugging complex system level software.
- Ability to translate high level requirements into production ready software.
- Ability to provide technical guidance to other members of the team by providing clear architecture definitions and designs in addition to providing feedback in code reviews.
- Extensive experience writing C++11 (or newer) and python applications as well as shell scripts for Linux.
- Knowledge of C++ and Python constructs and internals.
- Detailed knowledge of systemd, udev and other configuration and initialization sub-systems used in Ubuntu Linux.
- Experience with multi-process and multi-threaded applications.
- Expert level knowledge of operating system fundamentals: file systems, interprocess communication, computer networking, system calls, system resources, security, etc.
Things that make a difference:
- MS in computer science, or related field.
- Extensive experience working with creating Ubuntu debian packages.
- Experience with creating long-running, performant applications, with soft-real time requirements.
- Library design with special attention paid to modularity, composability, and clear, intuitive interface.
- Extensive experience designing for ease of testing, both at the unit level and and integration test level.
- Track record of delivering quality system software for an IOT based product running embedded Linux.
- Relevant experience with hardening Linux in order to provide a secure product including full disk encryption, Trustzone (ARM) , or TPMs (x86) and related technologies.
- Experience with Linux board support packages (BSPs) for ARM based SoCs.
- Cmake or other build systems.
- Exposure to kernel development.
- Good working knowledge of robotics and surrounding systems.
- High-performance computing, SIMD, CUDA, OpenCL.
The physical demands described here are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions. Essential functions may require maintaining the physical condition necessary for sitting, walking or standing for periods of time; operating a computer and keyboard; talk and hear at normal room levels; using hands to finger, grasp, and feel; repetitive motion; close visual acuity to prepare and analyze data and figures; transcribing; viewing a computer terminal; extensive reading; lift, push, carry, or pull up to 10 pounds.
The work environment characteristics described here are representative of those an employee encounters while performing the essential functions of this job. The noise level in the work environment is usually quiet to moderate. Employee is exposed to the typical office environment with computers, printers and telephones.