Staff Engineer, Device Software C++
Listed on 2026-02-16
-
Software Development
Software Engineer, Embedded Software Engineer, C++ Developer
Company Description
At Butterfly Network, we’re leading a digital revolution in medical imaging, transforming an industry that has long relied on bulky, analog systems. With our proprietary Ultrasound-on-Chip™ technology, we’re democratizing healthcare by shifting ultrasound from the expensive, stationary systems of the past to the connected, mobile, and software-enabled platforms of today. In 2018, we launched the world’s first handheld, whole-body ultrasound, Butterfly iQ – followed by iQ+ in 2020 and iQ3 in 2024, each more powerful than the last.
Job DescriptionWe are seeking a Staff C++ Software Engineer to lead the design and development of a robust C++ Software Development Kit (SDK) for controlling and interfacing with an ultrasound imaging device. This SDK will serve as a common platform used by internal development teams and external partners. This is a senior individual contributor role for an engineer who is a fast learner, self-starter, and capable of working autonomously in a complex, hardware-adjacent environment.
The ideal candidate thrives in ambiguous problem spaces, takes full ownership of technical outcomes, and drives solutions from concept through production and external adoption.
- Serve as the technical owner and architect for a C++ SDK controlling an ultrasound imaging device.
- Lead SDK design decisions with a focus on API clarity, usability, scalability, and long-term maintainability.
- Rapidly learn complex device behavior, imaging workflows, and system constraints to make informed design decisions.
- Work autonomously to define requirements, propose solutions, and execute with minimal supervision.
- Collaborate cross-functionally with firmware, hardware, imaging, systems, and product teams to define control and data interfaces.
- Design abstractions for device configuration, image acquisition, real-time data streaming, and system state management.
- Establish best practices for SDK architecture, testing strategy, documentation standards, and release processes.
- Ensure SDK robustness, performance, and reliability in hardware-integrated and real-time contexts.
- Drive SDK versioning, backward compatibility, deprecation policies, and partner-facing release strategy.
- Create and maintain high-quality developer documentation, examples, and reference implementations.
- Mentor and provide technical guidance to other engineers contributing to the SDK or adjacent platform components.
- Support internal teams and external partners with integration, debugging, and advanced use cases.
- Bachelor’s degree in Computer Science, Software Engineering, or equivalent practical experience.
- Extensive professional experience developing production-quality software in modern C++ (C++14/17/20).
- Proven experience designing and owning SDKs, platforms, or shared libraries used by multiple teams or external users, with a primary focus on Linux-based systems.
- Comfort and familiarity working with Python.
- Demonstrated ability to quickly learn complex systems involving hardware, firmware, or imaging pipelines.
- Strong architectural and system design skills with an emphasis on clean, intuitive APIs.
- Ability to work independently, prioritize effectively, and drive work forward with minimal direction.
- Deep understanding of memory management, object lifetimes, and performance optimization in C++.
- Experience with multithreading, concurrency, and synchronization in performance-sensitive systems.
- Strong testing discipline, including unit, integration, and hardware-in-the-loop testing strategies.
- Excellent written and verbal communication skills, especially for technical documentation and cross-team alignment.
- Familiarity with real-time operating systems (RTOS) or real-time constraints.
- Familiarity with automatic cross-language wrapper generation (Djinni, SWIG).
- Support Development tools in Qt 6.
- Support complex build systems with multiple build tools and CI pipelines.
- Experience with device drivers, hardware abstraction layers, or firmware interfaces.
- Knowledge of image acquisition, signal processing, or data streaming architectures.
- Experience defining SDK governance, versioning strategies, and…
(If this job is in fact in your jurisdiction, then you may be using a Proxy or VPN to access this site, and to progress further, you should change your connectivity to another mobile device or PC).