We are looking for a mid-level embedded software engineer who takes ownership and thrives on solving real engineering problems on physical systems.
You will work on a variety of Domin’s product lines, developing embedded software that directly controls high-performance hardware. Your work will span low-level drivers, firmware, and system behaviour, with an emphasis on debugging and understanding how software interacts with real electronics.
This role requires someone who can get up to speed quickly, take initiative, and work independently. You should be comfortable stepping into unfamiliar systems, breaking problems down, and driving solutions through to completion.
You will own features end-to-end and play a key role in improving the reliability and performance of our embedded systems.
Key Responsibilities:
- Develop embedded software in C++ for Domin’s valve product line
- Own and deliver features across the stack, including drivers, firmware, and system-level behaviour
- Debug issues on real hardware, including microcontroller-level problems and hardware/software interactions
- Work independently and collaboratively to understand system behaviour and resolve issues
- Take full ownership of defined features, from implementation through testing and validation
- Contribute to improving code quality, reliability, and maintainability
- Use version control (GitHub) effectively, including pull requests and code reviews
- Build a strong understanding of Domin’s embedded systems and their interaction with electronics and mechanical systems
Essential Requirements:
- 3+ years of professional experience in embedded software development (or equivalent demonstrable capability)
- Strong ability to write embedded software in C or C++ (C++ preferred, but C-only experience acceptable)
- Solid understanding of microcontrollers and how embedded systems operate
- Strong problem-solving ability, particularly in debugging complex issues across software and hardware
- Experience debugging software on real hardware
- Familiarity with debugging tools (e.g. oscilloscopes, logic analysers, JTAG debuggers)
- Good understanding of fundamental electronics relevant to embedded systems
- Experience using Git (e.g. GitHub), including pull requests and version control workflows
- Demonstrated ownership of technical work from implementation through to completion
- Experience in the implementation of unit tests
Beneficial Requirements:
- Experience developing low-level drivers or working close to hardware interfaces
- Experience with communication protocols (e.g. CAN, SPI, I2C, UART)
- Experience with motor control systems
- Familiarity with STM32 microcontrollers
- Experience working with Python