Bachelor’s or Master’s degree in Computer Science, Software Engineering, Computer Engineering, Electrical Engineering, Biomedical Engineering, or a related technical discipline.
Typically 10–15+ years of professional embedded software or firmware development experience.
Demonstrated experience operating at Principal Engineer, Senior Staff Engineer, Software Architect, or equivalent technical-leadership level.
Strong hands-on experience developing embedded software in C and/or C++.
Experience developing software for regulated medical devices, IVD systems, healthcare products, or another safety-critical regulated industry.
Experience with the complete embedded software lifecycle, including requirements, architecture, design, implementation, integration, verification, release, and maintenance.
Strong understanding of embedded-system architecture and hardware-software interaction.
Experience debugging complex embedded systems using appropriate hardware and software tools.
Experience developing and maintaining multithreaded, real-time, or event-driven embedded applications.
Experience with embedded operating systems, embedded Linux, or real-time operating systems.
Experience with device drivers, hardware abstraction, communication interfaces, and peripheral integration.
Strong understanding of software architecture, modular design, state machines, memory management, concurrency, and fault handling.
Experience with source control, configuration management, code reviews, defect tracking, and controlled software releases.
Ability to analyze and improve large or legacy embedded codebases.
Experience producing high-quality technical and software lifecycle documentation.
Strong analytical, troubleshooting, and root-cause-analysis skills.
Ability to lead technical work through influence without direct management authority.
Excellent written and verbal English communication skills.
Embedded Technical Skills:
Advanced C and/or C++ development.
Embedded Linux and/or RTOS development.
Multithreaded and real-time software design.
Low-level firmware and device-driver development.
Hardware abstraction layer design.
Board bring-up and hardware-software integration.
Inter-process communication and event-driven architectures.
Serial and hardware communication protocols such as UART, SPI, I²C, USB, CAN, or Ethernet.
Network communication and device-connectivity protocols.
Memory, performance, timing, and resource optimization.
Error handling, fault detection, diagnostics, logging, and recovery mechanisms.
Unit testing, integration testing, static analysis, and code-coverage analysis.
Debugging tools such as JTAG, oscilloscopes, logic analyzers, protocol analyzers, and embedded debuggers.
Build systems, cross-compilation toolchains, and CI/CD pipelines.
Secure coding and embedded cybersecurity principles.
Medical-Device Responsibilities:
Develop software in compliance with applicable quality-system procedures.
Ensure that embedded software development follows IEC 62304 lifecycle processes.
Support software safety classification and risk-based development activities.
Contribute to hazard analysis and software-related risk assessment.
Implement and document software risk-control measures.
Maintain traceability between requirements, risks, architecture, implementation, and verification.
Produce or review software development plans, requirements, architecture, detailed designs, test documentation, anomaly assessments, and release records.
Support Design History File creation and remediation.
Participate in formal design reviews.
Ensure unresolved software anomalies are properly evaluated and documented.
Support software validation, regulatory submissions, audits, and inspections.
Contribute to cybersecurity threat analysis, vulnerability assessment, and remediation