A job change is one of the most important decisions that a person takes in its career. There are some differences to take into account when moving from the embedded designer world to the DevOps scenario.

As in every important decision, there are many expectations, new challenges, and a lot of uncertainty about the future.

In my personal experience, I worked in embedded systems for more than 15 years. And in the last year, I began to consider a job change.

The main reasons that motivated me for a change were:

  • Lack of challenging projects.
  • Monotony in the technologies used.
  • Few job offers of embedded systems in Argentina.
  • Only little companies develop embedded systems in Argentina.

 

In software industry environments, DevOps is the merger of two important worlds: development and operations. The union of those sets generates this interesting method of work. Learn the basics here

Intraway as an Environment for Growth and Development

Since the very first moment I started working for Intraway, I met nice people there. My colleagues and people in the personnel department gave me support in all my doubts.

Quickly I realized that Intraway is a company where employees and their professional careers are really taken into account. The People Experience team explained to me the objectives assignation and the continuous training program that we have.

I also want to highlight to my teammates. In my team, there is respect, good communication, and assistance from the very beginning.

So, this virtuous environment gave me a “safe place” to spend all my efforts in learning the new technologies and concepts that the new profile requires.

Working Method Differences

When working in the world of embedded systems, it is usual that the developer takes ownership of the development (device or firmware). Taking ownership means that you are not just working in the project; instead of that, you also try to identify future problems and implement a solution before they become obvious. This requires that the developer has knowledge about what the whole project involves.

On the other side, in the world of software, the use of collaborative development based on agile methodologies is more frequent. Every developer can maintain his/her efforts focused on a part of the project. So, this way, everyone is doing specialized work in achieving a better result. And also, allowing the developer to become a specialist in the technology used.

The main difference is that in embedded software the developer is focused on the whole system, and in the DevOps world, the developer is focused on a specific part of the system.

Technological Differences Between Embedded Systems and DevOps

These kinds of differences are maybe the most notable.

The major difference consists in that there is no more hardware design. This is a work exclusive to an embedded designer. Together with firmware programming are the two most common duties of this kind of designer. From now on, all work will be software programming and virtual environment managing.
Say goodbye to design tools like Altium Designer, Matlab, and web pages like Digikey and Mouser. The new tools to learn are Docker, Gradle, Puppet, and so on…

The processor’s capacity is another highlighting difference. For embedded devices, microcontrollers have several times less capacity than a server processor.
For example, a microcontroller STM32F407 (ARM Cortex-M4) has about 210 DMIPS running at 168MHz clock. And an ordinary server processor like Intel Core i7 7500U has about 49360 DMIPS running at 2.7 GHz clock. 

Because of this, it is essential to use the correct algorithms and to take care of its performance. Although proper implementation and performance are important at all times, in embedded systems, poor implementation means that the proposed solution is not viable.

The most common programming languages for embedded design are C, C++, and assembler. All of them allow for low-level resources management and writing fine-tuned algorithms. But some disadvantages are:

  • For doing the same task, these programming languages require more code lines than a higher-level language.
  • There are fewer third-party libraries for development than a higher-level language.

The development in the software world implies backend and frontend programming. For doing this, there are a lot of languages like C++, Java, Golang, PHP, scripting languages, and so on. With this abundance of programming languages, we can choose the more convenient one for the software we are going to develop.

Different Testing Methods In DevOps

In the world of embedded systems, the devices/systems are mostly tested using functional test cases. These tests consist in evaluating the different functions of the device/system developed interacting with its environment (backoffice, other devices, so on) altogether.
A checklist is done with the different test cases, happy cases of normal use, and also unhappy cases with expected problems.

In DevOps, it is more often to use the unitary test and integration test methods. These methods consist of testing each software module individually and then doing test cases of integration for the whole software.

Although the use of unitary test and integration test methods is more complete and allows a better product with fewer bugs and more stability. In embedded development, most of the times, it is not easy or inviable to use tools for that kind of test. This is because of the lack of testing tools for the different platforms and hardware environments of development.

As I was looking for a career change, I think that working for Intraway was the right decision for me.

Thanks to all the differences described, and the excellent environment offered by Intraway, I am very motivated to learn the new technologies and tools that this great challenge requires.

In software industry environments, DevOps is the merger of two important worlds: development and operations. The union of those sets generates this interesting method of work. Learn the basics here

You must be logged in to post a comment.
Menu