About the Role
Would you like to build the software that powers next-generation connected devices? We're looking for a Senior Embedded Software Engineer to design and develop production-grade software for Linux-based embedded systems used in high-impact industrial and IoT environments. In this role, you will work close to the operating system layer, developing reliable and secure embedded applications while collaborating with cross-functional engineering teams. You'll contribute to the architecture, performance, and reliability of systems that interact directly with hardware, communication buses, and industrial protocols.
About You
● You have solid experience developing embedded software for Linux-based systems.
● You are comfortable working close to the operating system layer, including kernel configuration, system services, and debugging tools.
● You enjoy building reliable and high-performance software using modern C++ and Python.
● You collaborate effectively with firmware, hardware, and platform engineering teams.
● You communicate clearly across technical stakeholders and contribute actively to architecture discussions.
● You are passionate about building robust systems that run in real-world industrial environments.
What You'll Be Doing
● Design and develop embedded software running on Linux-based systems.
● Customize and maintain embedded Linux distributions using the Yocto build system.
● Configure and debug Linux kernels, system services, and process management.
● Develop high-performance applications using modern C++.
● Build automation tools and development utilities using Python.
● Implement and debug industrial communication protocols such as Modbus (RTU/TCP) and CAN.
● Design and maintain secure over-the-air (OTA) update workflows with rollback mechanisms.
● Troubleshoot field issues related to networking, timing, hardware communication, and system updates.
● Contribute to system architecture decisions and embedded platform design.
● Write unit and integration tests to ensure reliability and maintainability.
● Participate in code reviews and maintain high engineering standards.
● Collaborate in Agile development environments and contribute to sprint planning and delivery.
What We're Looking For
● A proactive and solution-oriented mindset when addressing complex embedded systems challenges.
● Strong analytical and debugging skills in hardware-adjacent software environments.
● Ability to prioritize tasks and deliver features in sprint-based development cycles.
● Curiosity and willingness to continuously learn new tools and technologies.
● Strong communication and collaboration skills across multidisciplinary teams.
Technical Requirements
Must-Haves
● 6+ years of experience in embedded software development.
● Strong proficiency in C++ and Python .
● Hands-on experience with Embedded Linux environments.
● Experience with the Yocto build system for embedded distributions.
● Experience with RAUC or similar OTA update frameworks.
● Familiarity with system debugging tools such as gdb , strace , and tcpdump .
● Experience implementing Modbus (RTU/TCP) and CAN / CAN Bus communication protocols.
● Understanding of multithreading, concurrency, and inter-process communication (IPC) .
● Solid knowledge of networking fundamentals .
● Experience with Git workflows and CI/CD pipelines .
● Familiarity with containerized development environments such as Docker or Docker Compose .
Nice-to-Haves
● Experience with Boost.Asio or asynchronous C++ programming patterns.
● Experience with messaging systems such as ZeroMQ or MQTT .
● Familiarity with time synchronization systems such as NTP or RTC handling.
● Experience implementing A/B partitioning strategies and secure boot chains .
● Familiarity with Trunk-Based Development workflows.
● Experience with unit testing frameworks such as Google Test.
● Experience working with cross-compilation toolchains .
● Domain knowledge in electric vehicles (EV), energy systems, industrial automation, or IoT platforms .