Embedded Developer’s New Year’s Resolution

Amar MahmutbegovicDecember 21, 2023

As we reach the end of another year, while wrapping up this one, we also contemplate the year ahead. Though nothing major might change on the 1st of January, it’s nice to pause during the holidays to reflect on the past and plan for future improvements.

I like to plan my professional improvements, and I always include them in my New Year’s resolution. Here are some ideas that I’d like to share.

Good Software Design Practices

Yes, we Embedded developers love hardware, but that doesn’t necessarily mean we need to stay loyal to ancient software development practices from the assembly days. Good software design is more important than ever, and improving our skills is crucial to writing quality embedded software. Understanding software architecture, design patterns, dependency injection, and TDD are good places to start with personal improvement. There are various resources, such as blog posts, YouTube channels, and books, that you can use to learn. I’d highly recommend the following books:

This article is available in PDF format for easy printing
  • "Test Driven Development for Embedded C" by James Grenning
  • "Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better" by Jeff Langr
  • "Making Embedded Systems: Design Patterns for Great Software" by Elecia White

These books offer guidance through the modern software development practices necessary for upgrading technical skills.

Learn a new language

Yes, C is still the defacto language of choice for embedded development projects, but C++ is often used nowadays, and there is also a new kid on the block - Rust. Steve Branam did a great job of gathering learning sources for Rust in his blog post - Learning Rust For Embedded Systems

For modern C++, I recommend watching conference talks by Michal Caisse, Luke Valenty, and Ben Saks, among others. You can also read my blog post series "Modern C++ in Embedded Development," starting with (Don't Fear) The ++. Jacob Beningo and Massimiliano Pagani also offer great C++ insights at EmbeddedRelated.

From bare metal to RTOS

Bare metal and RTOS are two popular approaches to firmware architecture. My rule of thumb is to go for RTOS whenever you have available hardware resources. I wrote more about this topic in my blog posts Choosing software architecture for your embedded system and Bare metal vs. RTOS? But, did you know there is also an intermediate approach called Cooperative scheduler? Michael J. Pont describes this architecture in more detail in his book “Patterns for Time-Triggered Embedded Systems”. It’s an interesting read. 

Zephyr is becoming more and more popular. It’s a great choice for connected devices, and it has good support over different platforms. Mohammed Billoo writes about Zephyr at EmbeddedRelated with some insightful posts.

New Year’s Resolution

New Year’s resolutions are easy to break. The field of embedded engineering is vast, and staying up-to-date is a daily task, so let continuous learning be a path we will embark on in 2024. Happy New Year!

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: