Embedded Software Engineer

Intuitive•Sunnyvale, CA
•$134,600 - $227,700•Onsite

About The Position

The Ion™ endoluminal system is Intuitive's robotic platform designed for minimally invasive biopsy in the peripheral lung, with the goal of improving early lung cancer diagnosis. This position is part of the New Product Development Platform Software team and will focus on developing embedded application software, middleware, and system services that enable applications and subsystems across the robotic platform. The engineer will work with software, systems, hardware, and test teams to design, implement, integrate, and debug reliable software for a heterogeneous embedded computing platform incorporating CPUs, GPUs, FPGAs, and other specialized hardware. The successful candidate should have strong C/C++ application development skills, an understanding of software architecture and data management, and an interest in building reusable platform services and APIs.

Requirements

  • Strong programming skills in C or C++ (C++11 or newer), with experience developing production software.
  • Experience developing applications or middleware on Linux or another POSIX-based operating system.
  • Understanding of object-oriented design, modular software architecture, and API design.
  • Experience with multi-threaded software and concurrency concepts.
  • Understanding of inter-process communication and client/server software architectures.
  • Experience designing or developing software that manages persistent application or system data.
  • Understanding of data modeling, schemas, transactions, concurrency, and data integrity.
  • Experience debugging application and system-level software using Linux development tools.
  • Familiarity with networking concepts and protocols such as TCP/IP.
  • Ability to understand and work with software interfaces in heterogeneous computing systems involving CPUs and hardware-accelerated components.
  • Experience with software configuration management, code reviews, and unit/integration testing.
  • Working knowledge of Python or shell scripting for development, testing, or automation.
  • Strong written and verbal communication skills and ability to work effectively in a cross-functional engineering team.
  • Bachelor’s degree with 6+ years of industry experience, or Master’s degree with 4+ years of industry experience, in Computer Science, Computer Engineering, or a related engineering discipline.
  • 4+ years of hands-on experience developing and supporting embedded systems in a production environment.

Nice To Haves

  • Experience developing middleware, platform services, or reusable software frameworks.
  • Experience developing software for heterogeneous computing platforms involving CPUs, GPUs, FPGAs, DSPs, or other accelerators.
  • Experience integrating software with GPU-accelerated or FPGA-based subsystems.
  • Experience with embedded or local data persistence technologies such as SQLite.
  • Experience developing configuration, preferences, or system-state management services.
  • Experience with IPC technologies such as sockets, shared memory, message queues, or RPC frameworks.
  • Familiarity with serialization technologies such as protobuf or JSON.
  • Experience developing embedded Linux applications.
  • Familiarity with systemd or similar Linux service-management frameworks.
  • Experience with asynchronous or event-driven application architectures.
  • Familiarity with Yocto/OpenEmbedded or embedded Linux build environments.
  • Experience with medical devices, robotics, automotive, industrial automation, or other complex embedded systems.
  • Experience working in regulated, safety-critical, or mission-critical product development environments.

Responsibilities

  • Design, implement, test, and maintain C/C++ applications and middleware running on embedded Linux platforms.
  • Develop reusable system services, libraries, and APIs used by multiple applications and subsystems.
  • Develop software for configuration, preferences, persistent system data, diagnostics, and system management.
  • Design and implement software for structured data storage and retrieval.
  • Develop multi-threaded applications and software using inter-process communication mechanisms.
  • Integrate application and middleware software across heterogeneous computing elements, including CPUs, GPUs, FPGAs, and other specialized processors.
  • Develop and maintain software interfaces between applications, platform services, and hardware-accelerated components.
  • Extend existing software frameworks to support new product features and system capabilities.
  • Participate in API, interface, and software design reviews.
  • Debug issues across application, middleware, operating system, and hardware interfaces.
  • Investigate software defects and perform root-cause analysis.
  • Diagnose issues involving interactions between CPU-hosted software and GPU-, FPGA-, or hardware-accelerated components.
  • Use Linux debugging and diagnostic tools such as gdb, logs, tracing tools, and command-line utilities.
  • Work with other software functions, EE, and FPGA engineers to understand interfaces and troubleshoot integration issues.
  • Support software integration, verification, validation, and product bring-up activities.
  • Develop maintainable, modular, and testable software.
  • Write unit and integration tests for new software components.
  • Design software with robustness, fault handling, data integrity, and serviceability in mind.
  • Participate in code reviews and contribute to team coding and design practices.
  • Support CI/CD and automated software testing.

Benefits

  • market-competitive compensation packages, inclusive of base pay, incentives, benefits, and equity
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service