New to programming or embedded systems?
Programming Languages | Foundational Topics | Getting Started with Embedded
Managing Your Career | Recommended Videos | Books We Love
Every programmer needs to be armed with a tool-belt of languages. We think embedded developers should be confident in C, C++, Assembly, and Python.
Learn C the Hard Way - If you're not comfortable with C yet, Learn Code the Hard Way has an C programming course. I recommend this course because it provides hands-on demos and examples.
A Tour of C++ (2nd ed.) is a great introduction to C++ written by the language's creator. Recently updated for C++17
Effective Modern C++ - Provides tips and strategies for effectively using new C++11 an C++14 features. Definitely worth reading if you are
C++ Best Practices - a "Collaborative Collection of C++ Best Practices". Covers the safety, maintainability, portability, threadability, and performance of C++ code.
Getting Started with Embedded Systems
Embedded developers will benefit from having experience with electrical engineering and how circuits work. The following resources will help you get started:
Practical Electronics for Inventors - a classic introductory text
Designing Embedded Hardware: Create New Computers and Devices - introductory electronics book
Sparkfun - great source of hands-on projects to grow your embedded/hardware skills
Adafruit - another great source for hands-on projects and tutorials to grow your embedded/hardware skills
The following resources will help you learn embedded software development techniques:
Real Time C++: Efficient Object-Oriented Template Microcontroller Programming - This is my FAVORITE embedded C++ reference and a great beginner book
Making Embedded Systems: Design Patterns for Great Software - Introductory book. Includes interview tips, design patterns, and your first embedded project
Programming Embedded Systems -Slightly dated examples, but the concepts are still valid and applicable
Embedded Systems Lectures by James Conrad
Real-Time Operating Systems
Miro Samek’s Modern Embedded Systems Programming Course contains a series of videos on RTOS concepts (starting at episode 22)
RTOS Revealed Series by Colin Walls explains RTOS concepts in detail
Architecture of Open Source Applications: FreeRTOS gives you an inside look at FreeRTOS
You could pick up a development kit, such as the nRF52840 DK, which has examples that use an RTOS.
Managing Your Career
- The Unwritten Laws of Engineering was written in 1944, and its advice on career management still applies today
- Marc Andreesen's Career Planning Guide
- Marc Andreesen's Guide to Personal Productivity
- Simple Programmer's Complete Software Developer Career Guide - Great overview of career development that's geared toward developers who are just starting out on their journey
Working at a Startup
Arne Mertz of Simplify C++ published a series on the topic of code reviews. This is a common software development activity, and these articles will help you prepare for reviews like a pro.