Senior Staff Software Engineer, R&D
$185,000 - $210,000 per year
Apply (opens in a new tab)Senior Staff Software Engineer, R&D
Posted today
SENIORITY
Lead
SALARY
$185,000 - $210,000 per year
About the role
- Lead the architecture, design, and implementation of complex software subsystems and reusable platform capabilities across embedded, application, and connected-device domains.
- Own key technical decisions and ensure designs are coherent at the product and system level.
- Work hands-on in the design, implementation, and review of critical software, with particular depth in C/C++, embedded Linux and/or RTOS environments, real-time behavior, concurrency, memory/resource constraints, robustness, and maintainability.
- Define and evolve software approaches for secure device connectivity, communications, device identity and configuration, diagnostics and logging, software update and serviceability, and device/fleet management capabilities as applicable to the product.
- Manage software lifecycle deliverables and traceability from system and software requirements through architecture, detailed design, implementation, risk controls, verification/validation, release, and post-release change.
- Apply company quality processes and design controls while partnering with Quality, Systems Engineering, and System Verification to address software risk, reliability, cybersecurity, objective evidence, and applicable FDA, IVDR, and international regulatory expectations.
- Lead technical problem solving across Software, Systems, Electrical/Hardware, Quality, Verification, Product, Service, and other functions.
- Resolve interface and architectural issues while balancing product needs, technical constraints, regulatory obligations, and delivery commitments.
- Identify emerging product needs, architectural weaknesses, and technical debt; evaluate or prototype alternatives; and introduce practical innovations that improve capability, reuse, extensibility, reliability, serviceability, security, or engineering effectiveness.
- Provide technical estimates, identify dependencies and risks, shape implementation strategies, and help teams make timely tradeoffs when requirements are incomplete or changing.
- Mentor and coach engineers, strengthen architecture, design, and code reviews, contribute to technical hiring, and help maintain a collaborative and accountable engineering culture.
- Networking/Key relationships
- Software Engineering
- Systems Engineering
- Electrical / Hardware Engineering
- Quality Engineering
- System Verification
- Product Management / Product Development
- Regulatory, Service, Operations, and other cross-functional stakeholders as required
- BS/BA degree in Computer Science, Computer Engineering, Electrical Engineering, or a closely related technical field required; advanced degree is a plus.
- Minimum twelve (12) years of professional software development experience with complex embedded, connected, or software-intensive products
- Experience working within formal product-development and design-control processes for medical devices or comparable regulated/safety-critical systems Direct medical-device or in-vitro diagnostic software experience is preferred.
- Proficiency in C and C++ with practical experience in embedded Linux and/or RTOS-based system Demonstrated.
- Experience designing or delivering network-connected devices and related capabilities such as secure communications, network interfaces, diagnostics, configuration, software update, serviceability, and device management concepts.
- Skills & Capabilities:
- Demonstrated technical leadership skills, including mentoring engineers, driving alignment, and influencing architectural decisions.
- Solid understanding of design methods (e.g., OOD, UML) and software architecture principles, including modular design, abstraction, interface-based design, and reusable software frameworks.
- Understanding of software architectural challenges when designing embedded systems and connected products.
- Ability to estimate work durations based on high-level requirements and system constraints.
- Advanced understanding of real-time software concepts on embedded Linux or RTOS platforms, including deterministic behavior, multi-threaded applications, synchronization, fault handling, memory management, and interprocess communication.
- Ability to develop clear, testable software requirements from product and system-level requirements, including support for traceability, risk analysis, and regulated development processes.
- Highly skilled in ANSI C and C++.Scripting expertise with Python or similar language.
- Networking experience, including TCP/IP, NAT, Layer 2 Switching, Firewalls, DHCP, device communications, security, diagnostics, and remote device management concepts.
- Experience with software development tools and practices, including Git, Bitbucket, Jenkins, JIRA, code reviews, CI/CD, defect tracking, and configuration management.
- Experience with Qt or similar application/UI frameworks is a plus.
- Excellent written and verbal communication skills, with the ability to communicate technical concepts, risks, and recommendations to both technical and non-technical stakeholders.
Before you apply
Applying takes about a minute. These four things decide how fast it moves after that.
Your profile is current
It's what we read first. Occupations, seniority and locations matter more than a long history.
Two examples you can talk through
Not a portfolio — just two pieces of work where you can explain the decisions and what you'd change.
A number in mind
What you're on now and what would make you move. We negotiate better when we know both.
Your notice period
Employers plan around it, and it's the question that stalls offers most often.
Once you apply, someone reads it and calls you before anything reaches the employer — usually within two working days.
