Technology for young software engineers

When a student engages in modern software engineering, or in modern technology in general, he must tackle a problem which was not concerning back in the days. The problem is that technology has evolved so rapidly that it became an enormously complex thing in just a few decades. It may sound weird that even with so many high-level languages and solid frameworks, problems like this still exist.

But at weird as it may sound, the high level of abstraction is in itself a problem. Sure, I am not talking about developing small applications for desktop or even for mobile ecosystems. The process of development of average applications has became much easier these days. The real problems appear when we talk about software engineering, which implies a larger understanding of the underlying layers of high-level programming languages and of software development.

The motivation for this article is a question at an LCA conference that received a rather strange answer for me. One of the things said is that “computers are kinda boring”. That is entirely true, and not because computers aren’t capable of doing stuff. On the contrary, they do so much stuff that they became mainstream. We are used to them. So, when a non-experienced software engineer enters in this field computers may not be, from the beginning a very attractive choice. That is mainly because we, as young students, do not necessarily understand the beauty of such a rather common piece of technology. And we do not understand it because we create software at a such level that we don’t care. For now. And that negligence can lead to real issues when we will tackle problems not so common as an average desktop/mobile application.

On of the answer of that question, was the embedded systems like mobile devices or even microcontrollers can help us understand better how technology real works. Even if we talk about creating an operating system, the embedded systems area of technology can be real helpful. Developing low-level applications or applications for constraining environments like mobile, even as a hobby, can be quite helpful in understanding how real software engineering works.