Senior Embedded Software Engineer

Intuitive Surgical

Job Description

Primary Function of Position

We are seeking a talented Senior Embedded Software Engineer, who will play a key technical leadership role in the development of Linux software infrastructure for the da Vinci Surgical System. Our team is responsible for designing and delivering platform technologies and engineering infrastructures for intra-operative intelligence products. These products aim to improve surgical outcomes and efficiency by innovating in imaging, machine learning, and visualization technologies. We work to empower the surgeon by extracting new information from the surgical scene, presenting it with meaningful visualization, and synthesizing it in a way that supports surgical decision making within the da Vinci Surgical System. Leveraging your extensive hands-on experience in embedded system development and architecture, you will contribute to bringing intra-operative intelligence products to the da Vinci production ecosystem while working with a variety of cross-functional teams. This is an opportunity to work on complex and challenging, yet interesting and rewarding problems at the intersection of embedded Linux software development, hardware and software system integration, hybrid compute architecture design (edge vs. cloud, CPU vs. GPU), and software ecosystem development empowering and facilitating feature application development, all within the da Vinci production ecosystem with performance, reliability, and safety.

The successful candidate is a self-directed developer and must excel in a high-energy, focused, and cross-functional environment to deliver high quality products and solutions. The candidate should also demonstrate the end-to-end ownership of their areas of responsibility and of the overall product. A strong sense of shared responsibility and shared reward is required.

Essential Job Duties (Specific responsibilities and tasks an individual would be expected to perform in the role. Additional job duties may be determined by functional people manager)

  • Develop rock solid embedded software components and multi-threaded applications in C++
  • Contribute to software development across all system layers, including Linux kernel, OS system components, user applications, and infrastructure software
  • Contribute to cross-compilation of system software libraries and applications
  • Implement early prototypes to evaluate new product concepts and integrate proof-of-concept modules into robot systems with production-ready, highest quality code.
  • Evaluate design trade-offs and make design and architectural decisions when integrating various components of distinct nature (e.g., CPU vs. GPU intensive) within embedded software.
  • Analyze and optimize run-time system performance with metrics at various system layers, from Linux kernel to operating system, and all the way up to user applications
  • Work with a variety of cross functional teams (e.g., ME, EE, Cybersecurity, RA, QA) across all phases of the product development lifecycle including prototype, design, implementation, debug, V&V, release, field support, and sustaining
  • Create high quality technical documents capturing key design concepts and principles behind software design and architectures

Required Skills and Experience

  • Strong intuition and understanding of systems design methodologies for performance, testability, scalability, and maintainability
  • Strong proficiency in modern C++ skills and advanced Linux system software development experience
  • Hands-on software development in Python and shell scripts
  • In-depth knowledge of Linux internals (schedulers, memory management, concurrency, IPC, memory allocation, file system, networking, logging, storage, etc.)
  • Hands-on experience with designing hardware/software interfaces used in complex devices
  • Extensive hands-on experience implementing SW/HW interfaces used in complex devices including interfaces with external devices from Linux as well as network communication interfaces.
  • Proven track record for successfully delivering products to embedded environments
  • Strong problem solving and analytical skills, ability to independently analyze complex system problems and isolate and troubleshoot software and hardware problems
  • Proficiency in written and verbal communication
  • Self-motivated, flexible team player to support all aspects of software development life cycle with the ability to define goals and work independently in a fast-paced environment
Read Full Description
Confirmed 7 hours ago. Posted 2 days ago.

Discover Similar Jobs

Suggested Articles