The company is looking to build high-quality software that has a direct impact on human health by developing automated lab instruments. This involves designing and implementing core control software, orchestration logic, error handling, and firmware/hardware integration.
Requirements
- C++
- CANopen bus
- continuous integration/continuous delivery for embedded
- advanced testing frameworks
- hardware simulation frameworks
- automated test suites
- unit testing
Responsibilities
- Design and implement the core C++ control software that drives automated lab instruments, handling everything from device initialization to high-level coordination of subsystems to error handling.
- Develop and maintain scheduling and orchestration logic to coordinate instrument operations (e.g. sample handling, reagent dispensing, measurements) at high throughput (100+ samples/hour).
- Build robust error handling and fault recovery mechanisms.
- Interface with distributed firmware microcontroller boards over a CANopen bus (coordinating 10+ boards).
- Mentor junior and mid-level software engineers by sharing best practices in embedded development, performing design and code reviews, and guiding problem solving.
- Drive improvements in software quality by expanding integration testing and simulation.
- Champion the use of continuous integration, unit testing, and other modern DevOps practices to increase software reliability and maintainability.
Other
- Provide technical leadership
- Mentoring junior engineers
- Driving best practices in code reviews and design discussions
- Leading initiatives to modernize our software stack
- Hybrid and requires some time in the lab each week