Looking to brush up on some skills? We asked our developers to suggest some books to help budding embedded and Linux kernel developers, and here’s what they recommended:
“Just automate it”
“I suppose the age-old thought-sapping phrase ‘Just automate it’ applies. If you find yourself doing one thing a lot, it can probably be automated into a script. For example, if you are ‘grepping’ lots of values from many files (like test results) and you want them to be displayed in a table quickly on the terminal, you can write a solution for that. Or when you are doing testing and you need to create a specific environment many times, you can have a script that sets it up quickly without your attention required.”
—Mikael Heino, Software Engineer in Test
Get deeper under the hood
“For quite a long time in my career as a software engineer, I had a very vague idea how computing systems work at levels below the application software that I was working on. Studying such topics as ‘Operating Systems’ or ‘Instruction Set Architecture’ seemed like an enormous task to me. Recently, I came across the book ‘The Elements of Computing Systems’ and the corresponding Nand2Tetris course. The idea of the course is to build a computer (both hardware and software) by yourself from the very basics and learn a little bit about every level of computing systems in the process.
As the name suggests, the course starts with an introduction to Boolean algebra and logic gates—the most basic devices that are used to build all computers today. Then we continue with building more complex circuits, including the CPU. After we implement all the necessary hardware for our computer, we start writing software for it: assembler, compiler, virtual machine, operating system, and finally, applications. At the end of the course, we have a computer that is able to run games such as Tetris!
Every chapter in the book covers a particular topic and includes a practical exercise where we implement some piece of hardware or software for our computer. To a certain extent, they resemble actual hardware and software found in real computers. As a result, operating systems, compilers, and assembly languages are no longer a black box to me, and I am not afraid to look under the hood if a need arises!”
—Rostislav Skudnov, Software Engineer in Test
If these topics interest you, we’re always on the lookout for great talent! Check out our careers page for open developer positions.