Hello and welcome. Today I’d like to introduce you to five different roles a developer can take on in an embedded development team.

The barrier to entry in embedded systems is like a huge wall around a hidden world. However, I recently came across a post by Maharajan Veerabahu that shows me a crack in the wall and provides a way through. Now I no longer have to overcome this wall, but can go purposefully on a journey of discovery.

But stop!

Before I plunge headlong, let me first explain the context. Maharajan is the co-founder and head of Embedded Software & Applications at e-con Systems. On his LinkedIn profile, he talks about his experience in embedded systems. Among other things, you can find the article 5 Roles played by an Embedded Software Engineer there.

In it, he describes what he sees as five different roles in embedded product development teams. Using these roles, he assigns specific areas of responsibility and knowledge to individuals within the group. This provides a better overview of the confusing and quickly overwhelming world of embedded systems. To adequately cover all aspects, multiple roles should always be represented when forming a team.

As you can see, I am very excited about this. I can now find my way around better and would therefore like to introduce the roles to you.

1. Microcontroller Firmware Developer

The first role can be described as a prime example of an embedded developer. The Microcontroller Firmware Developer certainly corresponds to the image that most people have of an embedded developer. As the role title suggests, he mainly works with microcontrollers and writes the individual firmware for them.

To do this, he uses his excellent knowledge of the C programming language and also implements machine commands in assembler in difficult cases.

His core competencies include the connection and addressing of peripheral devices via interfaces with the controller. After all, what good is the greatest computing unit if it can’t interact with anything?

During development, he addresses the typical requirements for embedded systems: size, speed and power requirements. The result is simple but highly effective devices.

2. Embedding Operating System Developer

Technologies are constantly evolving and undergoing change, which naturally leads to changes in the required skills and work of developers. For example, the ever-increasing importance of operating systems in current embedded devices can be observed. The main reason for this is the rapidly growing use of so-called SoC with their ARM processors.

Now there is a requirement in the embedded world to use operating systems. This is faced by the embedded operating system developer. His tasks include the development, debugging and porting of device drivers for the operating system used. From his driver pool, he builds and compiles suitable OS board support packages for the respective embedded products.

He is very familiar with the operating systems used, so that he can create specially configured, individualized and optimized images for the products. A major focus is on improving boot time, the complete driver list and all required software libraries.

He is also knowledgeable about power management and security, and is proficient in the basics of the operating system in the area of networking.

3. Embedded Networking Developer

The topic of networking leads us directly to another type of developer: the embedded network developer.

The demand for networking, Internet and wireless technologies is growing immensely. This leads to a gigantic variety of network devices like switches, routers, bridges, access points or backend devices.

The developer of these products hardly uses the usual hardware of other embedded systems, but works with special network processors.

Its home is the L3 and L4 network layers of the OSI model. Bridging, muxing and optimizing the transmission of data packets are among its main tasks. He knows the IEEE standards 802.3 and 802.11 by heart.

He can be very creative when designing VLANs and implementing suitable management protocols.

His reference parameter is Quality of Service. In doing so, he never neglects security and uses the appropriate protocols.

4. Embedded Application Developer

Intermediate question: What are embedded systems all about?

If you are honest, like almost everyone, you think it is about hardware and firmware. The thought is not wrong and certainly correct in most cases. But it is often forgotten that the application on the system plays an important role.

This is where the complexity of the embedded application software becomes more and more important with ever more powerful microprocessors and higher RAM availability. But don’t panic, because for this part of the system there is already the embedded application developer as a specialist.

He focuses on the business logic and user interface of the embedded device. His primary goal is to make the functionality as visually appealing as possible while maximizing performance. To this end, he uses codecs, graphics acceleration and other features from various embedded software frameworks such as Qt, .Net CF or similar. Reusability is very important to him, as he also likes to use or contribute to open source stacks or applications himself.

In his work, he tries to combine different approaches for an optimal solution. For this reason, his broad knowledge of different programming languages such as Embedded C, C++, Python, C#, etc. is one of his most valuable skills. In addition, he also deals with databases and embedded web services.

You may have noticed the numerous parallels to a regular application programmer.

5. Embedded Technology Expert

The last role describes a team member who has no broadly defined skills or responsibilities. The Embedded Technology Expert is a developer who has specialized in a core area during his career. It would be difficult to categorize him into any of the previous roles. He deals with everything from the system level to applications to microcontroller firmware, and takes on virtually every one of the other roles. The difference, however, is that he focuses on only one core technology.

To help you understand what I mean, I’ll give you a few examples:

  • The camera and imaging expert works on imaging and camera, lens assemblies, MIPI camera interfaces, color space conversion, ISPs, etc.
  • A USB expert works on the low-level USB protocol for controllers and develops USB client and host products.
  • Image processing experts deal with image processing libraries like OpenCV that use DSPs for image processing.

Now you know the five roles within an embedded product development team. Personally, this classification has helped me a lot to find my further way in the embedded environment. I now know in which direction I will first orient myself and which role I want to fill.

Hopefully the descriptions could also give you further insights. Which role do you like the most? Maybe you recognized yourself in one of them?

I wish you maximum success!