Working at Etteplan: Not all programming is about cloud and mobile
For some years now, there has been talk about programming as a skill that everyone in the future’s society should know at least to some extent. And there is no denying of the significance of it, as information technology is spreading everywhere. Various algorithms affect our daily lives increasingly, and it has been said that an algorithm is just an opinion written into a form that a computer can understand.
Along with the talks about the increased significance of programming skills, the meaning of the word programming has changed. One occasion when one can especially notice this is when browsing open jobs. When talking about programming, in a clear majority of cases, people probably refer to various web services. There is a user interface that requires an access to the internet, and there is some functionality in what is called the cloud that processes information. The part of the system that is responsible for showing the information and letting the user control how the information is processed is called the front end, and the part in charge of processing is called the back end.
Embedded systems are everywhere
Not all programming is just front end and back end, though. There is, for example, more traditional kind of software that runs in desktop and laptop computers and cell phones, doing most of its job locally, and thus, doesn’t require internet connection. Even more importantly for this blog entry, there is the world of embedded systems, which means devices that have a microprocessor in them but that don’t look like computers in traditional sense. Embedded systems cover, for example, various consumer electronics, and in the context of internet of things, they are the source of information the back end processes and they may also control things like lighting as instructed by the back end.
Differences in coding
When asked what I do for living, I often tell people that I am programmer. Often, if the people asking the question have any idea about the hot topics of the IT world, the next question is whether it is the back end or the front end that I do, or perhaps the full stack, which refers to being able to do them both. When I tell them that I do none of those, that I do embedded systems, they often have no idea what I am talking about. And yet, embedded systems are equally crucial a part of the world of programming even though there are far fewer people working with them than there are people working with front end and back end. Maybe what makes the embedded systems not so well known a topic is that they are a part of the system that the user often won’t see until it ceases to work. Front end is what the user mostly sees, and back end is somewhere between.
There are good reasons why only such a little part of all programming work is done around embedded systems. One is the fact that the embedded systems hardware is usually quite limited in its processing capabilities, which reminds a programmer of the time of first home computers. Because of that, if an embedded system communicates with a cloud service, it is often good to have it send information there and to process it there instead of processing it locally. Also, updating the code of an embedded system is often more complex and expensive than updating the code of a web service. It is often good to keep the code of an embedded system minimal and to minimize the need to change it.
It’s more about the hardware and technology
The world of embedded systems is quite different from the world of web services also when it comes to the programming itself. One aspect is that in the world of web services, change is constant in the sense that new technologies come and go sometimes even quite rapidly, and programmers need to keep their skills up to date with this development. The world keeps changing in the world of embedded systems too, but that change is slower, and there is a lot less experimenting with possible new technologies. That makes the world of embedded systems more a place where becoming an expert in just one technology with very deep knowledge of that doesn’t involve a big risk of one’s expertise getting outdated. Also, programming embedded systems is more centered around the hardware and the technology in general, while programming of web services is more in touch with the actual needs of the user of the technology.
In her recent column (in Finnish) on the website of Yle, the Finnish national public broadcasting company, Linda Liukas, a Finnish children’s book author and an instructor for beginner programmers, mentioned Linus Torvalds, the Finn who started the development of Linux kernel, as a potential example of and a role-model for a Finnish world-class influencer in technology. That’s very interesting – and, in a way, inspiring - an idea now that kernel is the most hardware related part of any computer system, or, in other words, as far as possible from the user. Most programmers rarely need to think about certain aspects of programming that kernel programmers think about every day, but for embedded systems programmers, those aspects are present far more often.
Programming embedded systems may not draw as much attention as some other kinds of programming, but it is still an essential part of the world of programming and requires somewhat different kind of programming expertise. The world of technology keeps changing, but that is unlikely to change. As Jaakko Ala-Paavola, CTO at Etteplan, recently mentioned in Talouselämä magazine 34/2018, Etteplan is one of the few companies that not only develop software for front end and back end but also software and even hardware for embedded systems.
Author: Antti Gärding, Embedded Software Architect