Your role
As an Embedded Software Engineer, you work in our cross-functional scrum team on the full embedded software stack of our chargers. You think in features and products rather than in programming languages: depending on the feature you write code in C++ (on embedded Linux and on bare-metal targets) or in Java (on embedded Linux), and you deliver the matching automated tests. Architectural thinking is part of who you are: you look beyond your own module, spot the interfaces with other components and help safeguard the coherence of the wider software architecture. You use AI tools deliberately when designing, coding, reviewing and debugging — you make the calls and stay responsible for the quality — and you work closely with hardware, project management and cloud colleagues to deliver end-to-end solutions.
The share of electric vehicles is rising fast, and with that growth comes an increasing need for reliable and innovative charging infrastructure. At Enovates, quality matters to us — not only in our hardware, but equally in our software development. To keep meeting those standards and to strengthen our position in the market, we are reorganising our software organisation: where we used to have separate C++, Java and test teams, we are bringing them together into one multidisciplinary scrum team organised entirely around product and feature.
In parallel, we are integrating AI step by step into our development process. Modern AI tools (Claude among others) support our engineers in designing, writing, reviewing and testing code, while the engineer makes the calls and stays responsible for the result. We will expand that way of working in the period ahead. In this context we are looking for an additional embedded software engineer who does not think in one language, but helps deliver the complete feature.
Responsibilities
- Designing, developing and delivering features for our embedded charger software (C++ on embedded Linux and bare-metal, Java on embedded Linux)
- Working within a cross-functional scrum team with developers, testers, hardware engineers and the project lead to take features from idea to production
- Translating feature specifications into efficient, reusable and well-documented code, whatever the language or module
- Taking care of the unit and integration tests for your own code, and contributing with the test automation colleagues to the automated regression tests in Python
- Maintaining and improving existing embedded modules (evsemanager, metermanager, hlcmanager, plcmanager, tokenmanager and solarmanager, among others)
- Actively shaping the software architecture of new products and features: hexagonal design, SOLID, clear module boundaries and an eye for long-term maintainability and extensibility
- Taking an active part in code reviews, pair programming and refinements, and giving constructive feedback to colleagues
- Using AI tools (Claude and other coding assistants) deliberately to work more productively and consistently, and to safeguard the quality of code, tests and documentation
- Bachelor’s or master’s degree in computer science, electronics-ICT, electrical engineering, or equivalent through experience
- Strong embedded software experience in C++ (on embedded Linux and/or bare-metal) or in Java (11/21), and the willingness to work in the other language and in Python (for tests) as well. We think in features, not in languages — where you are the expert, you pass that knowledge on to the rest of the team
- Broad experience with Linux as an operating system in an embedded environment
- Experience with Git and with working in a CI/CD pipeline
- Strong problem-solving and analytical skills; you work systematically when debugging on target
- Fluent in Dutch and English, both written and spoken
- Team player who feels at home in a multidisciplinary scrum team and shares responsibility for the team result
- You document your work so that colleagues can build on it: readable code, clear commit messages and the necessary design and interface documentation
- Experience with Buildroot or Yocto
- Experience with AI-assisted development (Claude, GitHub Copilot, Cursor and similar) and with writing good prompts and context for coding assistants
- Experience with Agile/Scrum: sprints, refinements, retrospectives and working from a product/feature backlog
- Familiarity with our tooling: Bitbucket, Bitbucket Pipelines CI/CD, Maven, Jira and Confluence
- Experience with modern IDEs and build toolchains
- Experience with communication protocols such as DBUS, MQTT, Modbus or similar
- Knowledge of OCPP 2.0.1, ISO 15118, PLC or related e-mobility standards
- Experience with unit testing and with automated tests in Python
- Knowledge of Java 9 JPMS, hexagonal design, SOLID principles, Vert.x, JavaFX, SQLite and Guice
- An interest in electric mobility and sustainable energy
- A place in a newly formed, multidisciplinary scrum team that is organised around product and feature instead of around programming languages
- The chance to work with modern AI tooling as a standard part of the development process, with the engineer making the calls