System Software Engineer
What you will do
At the imec Solutions department, we build application-oriented prototypes around unique imec chip-level technology to bridge the gap between research and industrial or societal applications. Together with component and domain experts, we innovate at the system level by designing, implementing, and validating integrated solutions (hard- & software) around novel imec technologies – thereby bringing them to the next maturity level (TRL). Our mission is to demonstrate and validate these systems in relevant environments and generate valuable data for our customers and partners. We are building a multidisciplinary team that has expertise in system engineering, mechanics, electronics, optics, software, product development and quality assurance.
Examples of imec Solutions projects:
We are looking for an experienced Software Engineer to join the Solutions’ System Software team in Leuven. You will work in multi-disciplinary project teams, together with system engineering, mechanical, electronic, optical, bio-chemical, microfluidic, and other domain experts. Your primary focus will be on the development of system-level software that makes up an integral part of our prototypes. This software will interface with, configure, and test the hardware, orchestrate data acquisition, and take care of configuration, calibration, and data correction. Sometimes GUI applications will be built on top of lower-level APIs, to allow for easier usage of the system by end-users (e.g. imec researchers or external customers).
Your main responsibilities will be:
- Programming APIs to interface with high-throughput read-out systems
- Build PC (Windows/Linux) and/or embedded applications to control imec’s custom-developed prototype systems;
- Integrate signal/image/data-processing pipelines according to application requirements;
- Implement & maintain automation scripts (typically in Python);
- Work according to agreed customer timelines and report on progress internally and to customers;
- Manage time effectively according to project schedules and quickly adapt to new project requirements;
- Maintain & extend our in-house developed software libraries and platforms;
- Document & share know-how with the team.
Additional tasks may include:
- PXI based & custom hardware systems interface programming & driver integration;
- Programming microcontrollers, MPSoCs, or single board computers;
- Contribute to the design of hardware APIs, data exchange protocols, and data storage formats.
What we do for you
We offer you the opportunity to join one of the world’s premier research centers in nanotechnology at its headquarters in Leuven, Belgium. With your talent, passion and expertise, you’ll become part of a team that makes the impossible possible. Together, we shape the technology that will determine the society of tomorrow.
We are committed to being an inclusive employer and proud of our open, multicultural, and informal working environment with ample possibilities to take initiative and show responsibility. We commit to supporting and guiding you in this process; not only with words but also with tangible actions. Through imec.academy, 'our corporate university', we actively invest in your development to further your technical and personal growth.
We are aware that your valuable contribution makes imec a top player in its field. Your energy and commitment are therefore appreciated by means of a market appropriate salary with many fringe benefits.
Who you are
Must-haves (the essentials):
- MSc(Eng) degree in (Applied) Computer Science, Informatics, Electronics, or similar; or equivalent through experience;
- Minimum of 6 years of proven professional experience in software engineering;
- An interest in research & innovation;
- Passionate on “low-level” system programming;
- Fluent in C/C++;
- Able to efficiently & iteratively translate requirements to architecture & implementation choices;
- English (professional proficiency) to work in imec’s international working environment.
Should-haves (a great candidate is familiar with most of these):
- GUI toolkits such as Qt, PyQt, WPF, or WinUI;
- Programming single board computers (e.g. Arduino, Raspberry Pi or similar) or MPSoCs;
- Programming embedded Linux machines;
- Able to quickly adopt new technologies (programming paradigms, languages, frameworks, libraries, patterns, …);
- Team player, accustomed to (or open embrace) Scrum or similar Agile process.
Could-haves (it is nice to tick a few of these boxes):
- Other programming languages such as C#, MATLAB, R, Rust, etc.;
- Familiarity with Windows SDK, Visual Studio, MSDN documentation;
- Programmatically dealing with Gigabit Ethernet, PCI Express, M.2, USB 3 & Thunderbolt interfaces;
- Microcontrollers: programming (STM32) and interfacing (I2C, UART, JTAG, SPI, BLE, etc…);
- Having worked with PXI & custom read-out systems;
- Familiarity with MS Azure or comparable cloud ecosystem;
- CI/CD & DevOps technologies (Azure DevOps/Pipelines, etc.);
- Dutch (or intention to learn).