New to programming or embedded systems?
Programming Languages | Foundational Topics | Getting Started with Embedded
Managing Your Career | 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.
- The Basics and Pitfalls of Pointers in C
- When 4 + 1 Equals 8: An Advanced Take on Pointers in C
- Learn Python the Hard Way - Introduction to Python. Learn to program in Python using hands-on challenges.
- 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.
- Writing ARM Assembly is a great introductory series
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
- All About Circuits
- Sparkfun - great source of hands-on projects 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
- Phil Koopman's Course Notes
- Programming Embedded Systems -Slightly dated examples, but the concepts are still valid and applicable
- Embedded Wednesdays: Getting Started in Embedded Systems - a series by Embedded.fm
- Embedded Software Engineering 101 - Another series by Embedded.fm
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.