Engineering is Fun!

The Holistic Engineer

The Rise of the Mechatronics System

Technical systems are becoming more and more complex with every generation. Systems that once comprised purely mechanical components first became augmented with electrical parts. And now both mechanical and electrial parts of the system are controlled by software.

A good example for this development is the automobile. The very first car was a purely mechanical system. The most important parts were the combustion engine and the transmission of the power to the wheels – all purely mechanical. The first electrical parts in the car where the ignition plug and electrical lights. Later on, more and more subsystems were added to the car: window lifters, locking systems or airconditioning. These systems formed a synthesis of mechanical and electrical parts.

The next development phase has started with the invention of the microcontroller. With microcontrollers, the subsystems of the car became much more flexible. Instead of changing mechanical or electrical parts, the behaviour of the systems could be adapted with an update to the software. This allowed much faster development. This innovation also provided us with the possibility to build much more complex systems than ever before.

Modern cars are a symbiosis of mechanical and electrical parts whose behaviour is determined by software. No part can exist without the other. Without software, nothing will move in these mechatronics systems. And the other way round, the software of the system can only do the things that are enabled by the system’s hardware.

The same is true for all kinds of industries today: Planes, factories, smart home devices or smartphones all rely on the symbiosis of mechanical, electrical and software engineering.

Learn Programming!

What does it mean for students of the “classical” disciplines of electrical and mechanical engineering? It means that they cannot build any system without knowledge of the software that controls it. They need to have at least a basic understanding of how software works. This includes knowing how to read and write code in at least one programming language.

Additionally, they need to learn how sofware is developed and delivered to the process. Software development does not work like the development of a mechanical system. The release cycles are much shorter. On the other hand, it is not possible to specify and construct the software of a system completely at the beginning of the project. Engineers need to understand these differences in order to successfully cooperate with software developers.

Another reason for engineers to become software developers is the increasing complexity of their own work. Many problems in the design of a system can only be solved with simulation. If you cannot buy a ready-made simulation program, you have to write your own. But also off-the-shelf simulation software often has to be programmed.

And with a basic knowledge of scripting languages, engineers can also solve repetitive tasks better and faster.

Learn Engineering!

Software developers have to learn about the other engineering disciplines, too! Computer science courses tend to focus on abstract topics like algorithms and data structures. Programming is a task that can be done completely on a computer, just using a keyboard and a screen.

This can lead to the impression that computer science is the crowning achievment of engineering and that the other disciplines will become obsolete when you come up with the perfect algorithm.

But this is not true. Every program that a software developer writes finally runs on a physical system. There is nothing “virtual” about it. And the programming of this physical system needs to lead to an outcome in the physical world if it is to be useful.

Because programmers write the software for a physical machine, they need to understand how this machine works. They need to learn its limitations and its behaviour in the real world. Because every software can only perform the tasks that are supported by its hardware. And at the end of the day the customer pays for a working system, not just for the software.


To make modern systems work reliably and safely, interdisciplinary teams of engineers have to cooperate. This only works if all members also have at least a basic understanding of the other disciplines.

Universities should focus more on giving their students this interdisciplinary training. And after graduation, engineers should train themselves not only in their own fields but also in other fields of engineering.

Only with a generation of well trained holistic engineers can we successfully solve technical problems of the future.

I hope you enjoyed this article. If you have any questions or comments, please contact me.