Embedded-Engineering-Roadmap README

The project's README from github.com/m3y54m/Embedded-Engineering-Roadmap. As one markdown file: README.md.

Embedded Systems Engineering Roadmap

GitHub Repo stars GitHub forks GitHub watchers GitHub contributors GitHub tag (with filter) GitHub all releases

This roadmap is designed to help beginners aspiring to build a career as an Embedded Engineer/Developer, as well as assist current practitioners in expanding their skills.

Embedded engineering demands a solid understanding of hardware functionality as well as software development and programming skills. If you really want to pursue this career you must be highly motivated and passionate about it. As the well-known saying goes, "Hardware is hard!". But don't panic and be patient for the challenges you may encounter along this exciting journey. By dedicating enough time and effort practicing and doing projects you will soon find yourself as a real embedded engineer! 😀

❓ What is an Embedded System?

▶️ ISO/IEC/IEEE 24765 Standard:

computer system that is part of a larger system and performs some of the requirements of that system. For example, a computer system used in an aircraft or rapid transit system.

The hardware and software of an embedded system are usually minimized and optimized for specific functions. The embedded system includes at least one microcontroller, microprocessor or digital signal processor. The embedded system designed to optimize reliability, cost, size and power saving for applications.

▶️ "Making Embedded Systems" Book:

An embedded system is a computerized system that is purpose built for its application.

▶️ "Computer Organization and Embedded Systems" Book:

A physical system that employs computer control for a specific purpose, rather than for general-purpose computation, is referred to as an embedded system.

▶️ Analog Devices Glossary:

An embedded system is a system in which the computer (generally a microcontroller or microprocessor) is included as an integral part of the system.

Often, the computer is relatively invisible to the user, without obvious applications, files, or operating systems. Examples of products with invisible embedded systems are the controller that runs a microwave oven or the engine control system of a modern automobile.

▶️ Embedded Systems Glossary:

A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function.

In some cases, embedded systems are part of a larger system or product, as in the case of an antilock braking system in a car.

🗺️ The Roadmap

Embedded Systems Engineering Roadmap

The embedded systems engineering roadmap is structured into three fundamental areas: SOFTWARE, HARDWARE, and SOFT SKILLS.

While the intersection of hardware and software is prevalent in embedded systems, specific job titles tend to emphasize one aspect over the other. For instance, roles like "Embedded Software Engineer/Developer," "Firmware Engineer/Developer," and "Embedded Linux Engineer/Developer" predominantly focus on software development. In contrast, positions such as "Embedded Hardware Engineer" and "Hardware Design Engineer" primarily deal with hardware design and electronics. Moreover, there are roles like "Embedded Systems Engineer" that necessitate a comprehensive understanding of both hardware and software.

It's crucial to note that each company in the embedded industry may have unique requirements for a given job title. Therefore, it's essential to tailor your focus based on your career aspirations. If you're seeking an embedded software position, prioritize the software-related skills outlined in the roadmap. Conversely, if you're interested in an embedded hardware job, concentrate on hardware skills and dedicate more time to learning electronics.

The roadmap provides a comprehensive guide to the essential topics for a typical "Embedded Systems Engineer" role. By delving into both software and hardware aspects, you can develop the necessary skills to thrive in this dynamic field. However, if you have a clear preference for software or hardware, you can tailor your learning path accordingly.

🔗 For more information about the history behind this roadmap, read this article: Embedded Systems Roadmap: Bridging the Gap

[!NOTE] Remember that the importance of individual software and hardware skills can differ depending on the specific requirements of the company and the job role.

[!TIP] To differentiate between the types of learning resources and the quality of their content, specific symbols are used before each item.

Resource types:

  • 📘 : Books
  • 🎞️ : Videos
  • 📝 : Write-ups, articles, and blog posts
  • 🔗 : Other links that do not fit into any of the above categories

Content quality symbols:

  • 👶 : Easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
  • 💎 : Well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.

[!IMPORTANT]
This repository is not affiliated with or financially supported by any content creator, publisher, or organization. We do not endorse or recommend any specific paid resources. Both free and paid resources are included to provide a range of options, allowing you to choose what best suits your needs and preferences.

😕 Don't Know Where to Start!

If you feel overwhelmed by the extensive list of topics in the roadmap, you're not alone. Before delving too deeply, let's ease into it with some simple starter projects. Learning embedded systems engineering takes time and effort. Don't get discouraged if you don't understand something right away. Keep practicing and you will eventually get there.

⚒️ Projects

Engaging in hands-on projects is the most effective approach to learning. Rather than solely relying on theoretical knowledge from books or articles. Undertaking projects allows for practical learning experiences. Even a seemingly basic project has the potential to teach you more than hours of aimless reading. You can refer to books, articles, and courses when faced with difficulties in understanding the problems in real-world projects.

Don't try to build a complex project right away. Start with small, manageable projects to get your feet wet.

🔎 Search and Ask!

Use search engines to find the answers to your questions.

If you can't find what you're looking for using search engines, AI chatbots can also provide assistance. Keep in mind that AI may provide incorrect answers in some cases. It's best to confirm any answers with more reliable references.

If you have reservations about relying on AI advice alone, you can also ask your questions from real people:

✳️ Career Development

As an embedded systems engineer, it's essential to stay up-to-date with industry trends, best practices, and new technologies to advance your career. Here are some resources to help you achieve your career goals:

🎥 Courses and YouTube Contents

You may have heard that YouTube is a university. And it's true - there is an extensive amount of invaluable free content on embedded systems available on YouTube. You'll also find some excellent free courses through Coursera and EdX. Additionally, Udemy offers some high-quality paid course options.

🕹️ Arduino

If you do not have any background in programming the embedded systems, Arduino boards and libraries are the best choice for you to start and learn the basics. Just keep in mind that most of the Arduino libraries are developed for learning purposes and are not optimized to be used in industry.

Additionally, the Arduino Core takes care of most of the low-level hardware-associated operations that you, as an embedded engineer, should be able to handle yourself or at least have a clear understanding of. If you want to become a professional embedded developer, you should be able to effectively use industry-standard APIs and SDKs provided and approved by microcontroller vendors, such as CMSIS for ARM Cortex-M microcontrollers, STM32Cube for STM32, ESP-IDF for Espressif microcontrollers, etc.

👨‍🏫 Educational Websites

🗺️ Other Helpful Roadmaps

🛠️ IDEs

👨‍💻 VS Code Extensions

🐜 PlatformIO

PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products.

PlatformIO is not yet extensively adopted in industrial and large-scale projects, however, it is an excellent choice for individuals working on smaller projects. This is because it greatly reduces the need to install frameworks and setup build and debug tools, allowing you to concentrate on programming.

📚 Learning Resources

[!WARNING]
It is not necessary to read all the books, articles, or watch all the videos you see here. If you try to do so, you will finally get tired and disappointed. You cannot study all the available content here in a reasonable time because it may take years. It is important to study enough to have at least a basic understanding of the required topics. Of course, the more time you dedicate to studying and doing projects, the more profound your knowledge and expertise will become.

Some of the resources mentioned here will just be used as references. Refer to them only when you need them.


✳️ Soft Skills

Similar to other professions, embedded engineers require soft skills that can't be solely obtained from reading or watching videos. These skills are cultivated through interactions and tackling various work obstacles. Improving soft skills is not a one-size-fits-all approach. It will vary based on one's individual traits and requires self-awareness of your strengths and areas for growth. Enhancing these skills takes time and effort.


✳️ Electronics

🔵 Basic Calculus

🔵 Principles of Electric Circuits

🔵 Electronics Fundamentals

Embedded-Engineering-Roadmap (m3y54m/Embedded-Engineering-Roadmap)

Searching Database…

What is this?This is a curated roadmap and resource collection for people who want to become Embedded Systems Engineers, covering software, hardware, and soft skills needed for the job.
Is this a structured course or just a list of links?It is a structured roadmap split into three main areas (software, hardware, soft skills) with curated links to books, videos, articles, and websites marked by symbols indicating resource type and quality.
Where should a complete beginner start?Start with simple hands-on starter projects using Arduino or platforms like ESP32/STM32 rather than diving straight into books, since practical learning sticks better than theory alone.
Do I need prior programming or electronics knowledge to use this?No specific prior knowledge is required, but the project assumes you're willing to learn both hardware fundamentals and programming, since embedded work combines the two.
Are all the resources free?No, the list mixes free and paid resources (like Udemy courses) without endorsing any specific one, so you'll need to pick what fits your budget.
Is this for software-focused or hardware-focused engineers?Both — the roadmap covers software, hardware, and soft skills, and tells you to focus on the section matching your target job title (Embedded Software Engineer vs Embedded Hardware Engineer).
Does the roadmap recommend Arduino for beginners?Yes, Arduino boards and libraries are recommended as the easiest entry point for people with no embedded programming background, though the author notes Arduino libraries aren't optimized for industry use and professionals should move on to vendor SDKs like STM32Cube or ESP-IDF.
What is PlatformIO and why is it mentioned?PlatformIO is a cross-platform, cross-architecture embedded development tool listed as a useful alternative to vendor IDEs, especially for individuals working on smaller personal projects since it simplifies toolchain setup.
Does the roadmap recommend specific IDEs or VS Code extensions?Yes, it lists vendor IDEs like Keil MDK, IAR Embedded Workbench, STM32CubeIDE, and MPLAB X, plus VS Code extensions such as Cortex-Debug and Espressif IDF for embedded development.
Why did the author create this roadmap?The author built it to bridge the gap between scattered embedded learning resources and give aspiring engineers a clear, organized path covering both hardware and software, as explained in the linked article 'Embedded Systems Roadmap: Bridging the Gap'.
Creator
m3y54m
Size
4.3 MB
Stars
13.6K
Age
3y
Commits · 90 Days