Software Engineer (embedded)

Permanent employee, Full-time · Barcelona

Your mission

The Embedded Software Engineer will push forward the next-generation edge device software that brings AI onto IoT devices equipped with various cutting-edge sensors. The software, which cooperates with cloud platforms, solves challenging problems in the world of IoT such as centrally managing massively distributed devices, deploying and upgrading applications remotely, securing data end-to-end, and optimizing the placement of workloads onto a set of heterogeneous devices. The targeted edge devices operate in ultra low-power modes and are subject to constraints such as high/low ambient temperatures and a limited energy budget from battery power or network connectivity. The devices integrate tightly with various sensors/accelerators to reduce power consumption in order to offer an optimal solution for constrained environments like Smart City or Smart Retail among others. Hence, the software we build has to meet all such operational requirements.

We are looking for a highly motivated and hands-on individual who is willing to learn new technologies and innovate; has strong analytical, problem-solving, and communication skills, as well as the ability to take on multiple responsibilities at once.  Must be able to work in a fast-paced environment with teams distributed around the globe.

  • Develop high quality firmware on schedule to help achieve the company’s business goals.

  • Develop Edge Platform Software independent from various RTOS available in the market.

  • Work with developers across other disciplines, such as Backend and DevOps, to satisfy agreed functional requirements.

  • Design and implement highly concurrent and efficient software components.

  • Test and debug.

  • Interact with the product team to gather requirements, propose architect solutions, provide means to deploy and support our software.

Your profile
  • 5+ years of relevant software development experience

  • Experience with Version Control Systems.

  • Excellent analytical skills.

  • Strong written and verbal communication skills.

  • Solid development experience in C and C++. 

  • Proficiency in *NIX and Comprehension of Real-time Operating Systems.

  • Solid understanding of embedded system architectures. e.g. task scheduling, power modes, system clock and peripherals management.

  • Experience in controlling hardware inside/outside of MCU.

  • Experience in developing software for memory-constrained devices such as tiny MCUs.

  • Experience with board-level communication interfaces such as I2C, SPI.

  • Experience in On-Chip and Remote debugging.

  • Experience with IoT:

  • End-to-end security architecture

  • Remote management of devices

  • Concurrent and asynchronous programming.

Additional skills and experience as a plus

  • Sensor technologies and/or specialized computing devices programming (DSP, FPGA, etc)

  • Experience developing in NuttX RTOS.

  • Dynamic software loading on RTOS.

  • Cloud technologies such as Azure/AWS/GCP, OpenStack, etc.

  • Understanding of current InfoSec concepts and technologies (TLS, PKI, etc).

  • Knowledge about L2-L7 network protocols including Ethernet, IP, TCP, HTTP, Pub-Sub.

  • Debug peripheral buses and GPIO using an oscilloscope.

  • Knowledge about electronic circuits to read schematic sheets and utilize for debugging.

About us

MIDOKURA is a Sony Group company that delivers innovative solutions to power the Edge AI revolution in IoT.

We are looking forward to hearing from you!
Thank you for your interest in Midokura.
​Please fill out the following short form. Should you have difficulties with the upload of your data, please send an email to

Please upload your CV, recent certificates  (max. 20 MB in total).

Click to select multiple files or use drag-and-drop
Click to select multiple files or use drag-and-drop

Uploading document. Please wait.