Tech Lead - Embedded Software
Role details
Job location
Tech stack
Job description
We are looking for a Tech Lead - Embedded Software to provide technical and architectural leadership across our embedded software platform.
This is not a line management role. Instead, you will work ahead of and alongside other engineers, helping define the right technical direction, raising engineering standards, and ensuring our growing multi-microcontroller codebase remains maintainable, testable and robust.
In the first instance, you will contribute heavily to our Battery Management System firmware, running on STM32 microcontrollers and communicating with battery monitoring ASICs. Over time, you will help guide the architecture of embedded software across the wider product, including STM32 and ESP32-based systems, inter-microcontroller communication, OTA updates, diagnostics, testing and future platform evolution.
You will work closely with software engineers, electronics engineers, product managers and other non-software stakeholders to understand functional requirements and translate them into well-structured embedded software designs., * Contribute directly to production embedded C firmware, initially with a strong focus on the Battery Management System.
- Help design and maintain firmware running on STM32 and ESP32 microcontrollers.
- Define and demonstrate best practices for a growing embedded software codebase.
- Help ensure the architecture remains maintainable as the number of microcontrollers, features and product variants grows.
- Work with engineers across firmware, electronics, cloud, app and product to understand requirements and trade-offs.
- Guide approaches to inter-microcontroller communication, firmware update strategies, diagnostics and fault handling.
- Support and improve our use of CI, automated testing, tools and scripts in Python, and Unity-based unit testing.
- Review designs and code, giving practical guidance to other engineers.
- Help the team make sensible technical decisions quickly, balancing robustness, delivery and long-term maintainability.
- Bring experience from previous embedded systems to guide future product evolution, potentially including embedded Linux, Zephyr or other higher-level embedded platforms.
Requirements
We are looking for someone with strong hands-on embedded software experience and the judgement to lead technical direction without needing formal line management authority.
You should have experience with:
- Embedded C and/or C++ in production systems.
- Firmware development on microcontrollers, ideally including STM32 and ESP32.
- Working close to hardware, including peripherals, comms buses and hardware bring-up.
- Designing maintainable firmware architectures for complex embedded products.
- Unit testing and CI for embedded software (we use ThrowTheSwitch Unity).
The kind of person who will do well here
You will likely enjoy this role if you:
- Like working in a lean team where engineers have real ownership.
- Are comfortable with ambiguity and can turn incomplete requirements into sensible technical proposals.
- Enjoy getting close to the product and understanding how the system behaves in the real world.
- Can communicate clearly with both software and non-software stakeholders.
- Care about maintainability, but know when "good enough for now" is the right answer.
- Prefer practical technical leadership over process-heavy management.
- Are happy to prototype, test, iterate and learn quickly.
- Want to help shape the embedded software culture of a growing engineering team.