Staff Software Engineer – Embedded Real-Time Software
Company | Intuitive Surgical |
---|---|
Location | Sunnyvale, CA, USA |
Salary | $Not Provided – $Not Provided |
Type | Full-Time |
Degrees | Bachelor’s, Master’s, PhD |
Experience Level | Senior, Expert or higher |
Description
Job Description
Primary Function of Position
Our team is responsible for the real-time software infrastructure and supervisor state machines that support critical performance, safety and user-facing features of the da Vinci™ Surgical System, Intuitive’s flagship product. Our real-time software includes infrastructure for motion control algorithms, audio intercom and system sounds, data streaming and logging, and platform support for our next-generation da Vinci™ Simulator product line. Because our workstreams depend upon and enable the work of other teams, we occupy an exciting intersection of real-time architecture, feature development, and demonstration of product safety and reliability.
The successful candidate must excel in a high-energy, focused, small-team and cross-functional environment, be able to drive to solutions from rough requirements, and have a commitment to high product quality. They must demonstrate ownership of their areas of responsibility and of the overall product. A strong sense of shared responsibility and shared reward is required. A demonstrated experience and comfort working with modern C++ in an embedded environment is required.
Essential Job Duties
- Design and develop product-focused, robust, efficient, and elegant C++ software in a heterogeneous, multi-processor SoC/FPGA/real-time-embedded environment.
- Analyze and quantify overall system performance and safety, including verification of adherence to specifications as well as identification of improvement opportunities, such as reduced latency and increased reliability/determinism. Extend existing tools and create new tools to support such analysis efforts.
- Interface and collaborate effectively and respectfully with other teams, including Platform Software, Electrical Engineering and FPGA Design, Mechanical Engineering, System Analysis, System Test, User Interface Software Engineering, Manufacturing and Clinical Engineering.
- Participate in product risk analysis, defining requirements, implementing mitigations, and drafting and executing verification tests.
- Document software designs according to Intuitive’s development guidelines.
- Engage in cross-functional resolution of critical problems.
- Identify and prove out new architectural enhancements to the software infrastructure and development processes that elevate the broader organization beyond your own team.
Additional Responsibilities:
- Leverage control-systems software building blocks to provide servo functionality for multiple Intuitive Surgical robotic systems, maximizing flexibility and modularity while maintaining peak performance.
- Extend audio software architecture to enable or improve user-facing audio features.
- Contribute to the design, extension, and testing of our supervisory state machine software that serve as the system’s top-level behavioral command control center.
- Develop and maintain the state machine software responsible for validating robotic instruments and transitioning between robotic surgical procedures.
- Develop a thorough system-level knowledge from a clinical user perspective.
- Consider and apply appropriate inter-process communication software design principles.
- Contribute to embedded software in support of the da Vinci™ simulator product family.
- Contribute to multiple areas of software development, including but not limited to the following:
- configuration and monitoring of custom motion control hardware.
- real-time processing performance analysis.
- extension of current processing frameworks to new processors and hardware designs.
- design, development, and extension of offline hardware simulation environments to facilitate rapid software development and testing.
- bring-up of research prototypes used to evaluate new product concepts.
- design and development of hardware / software diagnostic tools.
Qualifications
Required Education and Experience
- 12 years of experience and a Bachelor’s degree; or 8 years of experience and a Master’s degree; or a PhD with 5 years of experience; or equivalent experience
- Minimum of 5 years (cumulative) industry and/or academic research/project-based experience in developing embedded systems.
- Experience in developing real-time embedded software for one or more of the following areas (or similar): motion-control, robotics, automotive, audio intercom/DSP.
- Experience in modern C++ and familiarity with design patterns.
- Experience in developing for embedded Linux and/or QNX at multiple levels, such as hardware bring-up, drivers, application.
- Experience in software support for custom hardware development including diagnostic tests, utilities, and power-on self-tests.
Preferred Skills and Experience
- Experience with scripting languages (e.g. Python, JavaScript, Matlab, etc.) for diagnostic/test automation.
- Comfort with concepts of design input, design output, traceability, and risk analysis.
- Demonstrated experience and comfort with all phases of the product development lifecycle (design, implementation, debug, verification, validation, and transfer to manufacturing).
- Experience with designing software products in an FDA or other regulated industry or for mission critical applications.
Benefits
Not Specified