Jump to content
 

Microforum Recommended Book Reading List for Embedded Software Engineers


Orunmila
 Share

Recommended Posts

  • Member

This is a "must read" list for Embedded Software Engineers. If we missed one please let us know in the comments!

Please make a contribution to help us improve this list by leaving a comment. We are particularly interested in books we missed when compiling the list. If you leave a comment and we agree it will be added promptly.

Here is "The List" in short form conveniently made up as Amazon.com links and remember if you follow any of these links before shopping on Amazon they will make a contribution to help us support this site! Scroll down for a more detailed list with cover pictures.

  1. The C Programming Language, 2nd Edition 
  2. Design Patterns: Elements of Reusable Object-Oriented Software
  3. Code Complete: A Practical Handbook of Software Construction, Second Edition 
  4. Making Embedded Systems: Design Patterns for Great Software 
  5. Software Estimation: Demystifying the Black Art (Developer Best Practices)
  6. The Art of Computer Programming, Volumes 1-4A Boxed Set 
  7. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition 
  8. Refactoring: Improving the Design of Existing Code (2nd Edition)
  9. UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)
  10. Clean Code: A Handbook of Agile Software Craftsmanship
  11. Software Architecture in Practice: Software Architect Practice_c3 (SEI Series in Software Engineering)
  12. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts
  13. Programming 32-bit Microcontrollers in C: Exploring the PIC32 (Embedded Technology) 
  14. The Pragmatic Programmer: From Journeyman to Master
  15. Compilers: Principles, Techniques, and Tools (2nd Edition)
  16. Applied Cryptography: Protocols, Algorithms and Source Code in C 
  17. Structure and Interpretation of Computer Programs - 2nd Edition
  18. Introduction to Algorithms, 3rd Edition

 

Honorable Mentions. Books not quite worthy of "The List" but still important recommended reading.

  1. The C99 Standard, really, you should have read this already if you are going to program anything embedded! (PDF link to the draft)
  2. Zen and the Art of Motorcycle Maintenance: An Inquiry into Values
  3. Guide to the Software Engineering Body of Knowledge (SWEBOK(R)): Version 3.0
  4. A Guide to the Project Management Body of Knowledge (PMBOK® Guide)–Sixth Edition 

Happy Reading!

 

1. The C Programming Language, 2nd Edition 

q?_encoding=UTF8&ASIN=0131103628&Format=ir?t=microforum04-20&language=en_US&l=li This is our No1. must read book if you are going to be doing embedded programming. Written by Kerninghan and Ritchie, the inventors of the C language. Learn how the C language was designed to work and why. It is packed with numerous excercises to ensure you understand every concept. You really should keep this on your desk as a reference if you ever get stuck.

2. Design Patterns: Elements of Reusable Object-Oriented Software

q?_encoding=UTF8&ASIN=0201633612&Format=ir?t=microforum04-20&language=en_US&l=li Design patterns is how we communicate as Software Engineers about architectural details. If a building architect said the building should be "Tuscan Style" this would mean a wealth of things to people on the project about shape, size, colors, building materials etc. Design patterns form a similar language for Software Engineers and is a crucial tool in your arsenal. This is the original book known as the Gang of Four book or GOF for short. A must read before you venture further into other design patterns books.

3. Code Complete: A Practical Handbook of Software Construction, Second Edition

q?_encoding=UTF8&ASIN=0735619670&Format=ir?t=microforum04-20&language=en_US&l=li This is by far the best all-round book about software development. It covers all aspects of Software Engineering to some degree, it is very thorough and a must-read just to make sure you know what is out there.

4. Making Embedded Systems: Design Patterns for Great Software

q?_encoding=UTF8&ASIN=1449302149&Format=ir?t=microforum04-20&language=en_US&l=li This is by far the best introductory book we have seen, but it has an equal amount of gems in there for experienced campaigners, especially in the later sections on optimization (Doing less with more) and math which covers floating point issues and precision. We love the section "How NOT to use interrupts", and the one on Bootloaders for example.

5. Software Estimation: Demystifying the Black Art (Developer Best Practices)

q?_encoding=UTF8&ASIN=0735605351&Format=ir?t=microforum04-20&language=en_US&l=li

This is just a brilliant book on software project management. What makes it great is how it covers 100% of the foundational theory on estimation and planning and also covers the personal side. We love the scripts and dialogs coaching you how to present your estimates to management in such a way that they will not force unreasonable deadlines upon your team.

McConnell explains that the "Science of Estimation" is mathematically intensive, uses all kinds of really complex formulae and can get estimates in the order of 5%. He then explains that this book is NOT about the science, it is more about what he calls the "Art of Estimation" which will not get you to 5%, but it will be good enough for most projects to be managed.

6. The Art of Computer Programming, Volumes 1-4A Boxed Set

q?_encoding=UTF8&ASIN=0321751043&Format=ir?t=microforum04-20&language=en_US&l=li Computer programming is based on a lot of science. Without a solid knowledge of data structures and algorithms programming a microcontroller system is like trying to do woodwork with your bare hands scratching away with your nails. You really have to cover these fundamentals and Knuth is the all time master on teaching these fundamentals.

7. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

q?_encoding=UTF8&ASIN=0201835959&Format=ir?t=microforum04-20&language=en_US&l=li This is one of those books which is quoted so often you will quickly give away the fact that you are the only one in the room who has not read this. Don't be that guy! And remember, adding more people to a project when it is late will make it even later, and putting 9 women on the job cannot create a baby in 1 month! But seriously the best part of this book is probably the capter "The Surgical Team" which really explains beautifully the core principles SCRUM and small Agile teams are built on, written decades before the rest of us realized that Fred Brooks was right all along!

8. Refactoring: Improving the Design of Existing Code (2nd Edition)

q?_encoding=UTF8&ASIN=0134757599&Format=ir?t=microforum04-20&language=en_US&l=li Martin Fowler is probably the greatest mind in Computer Science today and he does not get the credit he deserves for it. Read this book and you will find out first hand just how much we can learn from this guy. I am not kidding if I say that his Event Sourcing Architectural pattern is THE ONLY way to go for even moderately complex embedded systems. This book covers the fundamentals you need to be Agile, get your code out there quickly so you can test your requirements and get customer feedback and then apply this book to refactor your existing code in such a way that your architecture improves and you stay on the blue line (Design Stamina Hypothesis - Google it!).

9. UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)

q?_encoding=UTF8&ASIN=0321193687&Format=ir?t=microforum04-20&language=en_US&l=li Another Martin Fowler book. Especially in Embedded Systems we see time and again that not enough design is happening. The old saying you have to solve the problem first and then write the code is not taught enough! This book will give you all the tools you need to create the sequence diagrams, deployment diagrams and static structure diagrams you need to communicate and "reason about the system" (yes that is indeed me quoting from "Software Architecture in Practice").

10. Clean Code: A Handbook of Agile Software Craftsmanship

q?_encoding=UTF8&ASIN=0132350882&Format=ir?t=microforum04-20&language=en_US&l=li Uncle Bob is just a legend when it comes to the tactics of writing sofware. We are a big fan of the SOLID principles and almost everything he covers in this book can make you a better coder. Also check out his website and training videos, most of them will teach you something new and they are all entertaining as hell.

11. Software Architecture in Practice: Software Architect Practice_c3 (SEI Series in Software Engineering)

q?_encoding=UTF8&ASIN=B009GMUL84&Format=ir?t=microforum04-20&language=en_US&l=li Those who were lucky enough to study computer science will already have this book as every Computer Science course worth it's salt uses this as the textbook for the Architecture course. We really love how this book enumerates and covers the pros and cons of the majority of high-level architectural patterns we use in computer systems today.

12. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts

q?_encoding=UTF8&ASIN=0596809484&Format=ir?t=microforum04-20&language=en_US&l=li I discoved Kevlin Henney only recently but I love the ideas he is teaching. Things like reminging us the software is written for people to read and understand, and concepts of signal to noise ratio's in code. He explains that spaces are indeed superior to tabs and why. This book is a great collection of almost 100 tactics you can apply on a daily basis to improve your code. If you want to stand on the shoulders of giants it is critical that you heed their advice and this is a great collection of expert advice.

13. Programming 32-bit Microcontrollers in C: Exploring the PIC32 (Embedded Technology)

q?_encoding=UTF8&ASIN=0750687096&Format=ir?t=microforum04-20&language=en_US&l=li When it comes to the PIC32 there is no better way to discover how it works and how to program it than this book. The fact that he actually works for Microchip gives Lucio amazing depth of insight into how this device was designed to be used and what it's strengths and weakneses are. In fact if you want a book to learn about PIC microcontrollers we recommend you search for Lucio Di Jasio on Amazon and pick the one for your platform!

14. The Pragmatic Programmer: From Journeyman to Master

q?_encoding=UTF8&ASIN=020161622X&Format=ir?t=microforum04-20&language=en_US&l=li This is another one of those classic books that keeps popping up on every "best programming books" list. This book covers loads of practical advice on how to make your code better in general. Ward Cunningham reviewed it and concluded that "The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether youre a new coder, an experienced programmer". We agree!

15. Compilers: Principles, Techniques, and Tools (2nd Edition)

q?_encoding=UTF8&ASIN=0321486811&Format=ir?t=microforum04-20&language=en_US&l=li Ok, we know that if you want to learn how to write a compiler today there are better texts than this, but this is still the book every compiler designer recommends at some point. What I love about this book is that it explains pretty early on what the compilation process looks like, which leads to understanding the reasons behind why compilers do things that can seem silly but are actually essential to produce working code consistently. It is always going to help you be a better programmer if you have at least a rundementary understanding of how compilers and linkers work, and this is a great place to start.

16.Applied Cryptography: Protocols, Algorithms and Source Code in C

q?_encoding=UTF8&ASIN=1119096723&Format=ir?t=microforum04-20&language=en_US&l=li Security is getting more and more inportant in our connected world. Don't even try to do any security yourself unless you have read this book cover to cover. I am serious - don't! This is really the best place to learn the basic fundamentals about information security, Schneier is not only a world-renowned expert on the topic, but he has a talent for explaining an extremely complex topic in a truly accessible way.

17. Structure and Interpretation of Computer Programs - 2nd Edition

q?_encoding=UTF8&ASIN=0262510871&Format=ir?t=microforum04-20&language=en_US&l=li Brought to you by the "MIT Electrical Engineering and Computer Science" team this is a fantastic book about the science of programming. If you are a "Tinkerer" who is happily surprized when your code runs and leaves comments like "no idea why this works" in your code this is probably not going to be for you. If you want to write robust code in a systematic way using Science and Engineering this will be a must read. If you tought yourself how to program and only knows Imperative programming then this book will go a ling way to filling in your blind spots, introducing you to a wealth of knowledge you never knew was out there.

18. Introduction to Algorithms, 3rd Edition

q?_encoding=UTF8&ASIN=0262033844&Format=ir?t=microforum04-20&language=en_US&l=li Excellent textbook on algorithms, covering subjects from the basics like big "O" notation to advanced Boas trees and multithreaded algorithms. This book is used as textbook for the algorithms classes at universities like MIT, CMU, Stanford and Yale.

Please help us improve this list by posting feedback in the comments below. Let us know if new editions are published, links are dead etc.

  • Like 2
  • Helpful 1
Link to comment
Share on other sites

  • Member

I am thinking about expanding the post to show the book and next to it show a short paragraph describing why we have this one on the list. This will make the list much bigger as in it will not fit on the screen, but I think the visual aspects of it will make it much easier to find what you are looking for in the sea of letters this is becoming?

Please let me have your thoughts!

Link to comment
Share on other sites

36 minutes ago, Orunmila said:

I am thinking about expanding the post to show the book and next to it show a short paragraph describing why we have this one on the list. This will make the list much bigger as in it will not fit on the screen, but I think the visual aspects of it will make it much easier to find what you are looking for in the sea of letters this is becoming?

Please let me have your thoughts!

Perhaps leave the main list alone and post a reply for each book title and paragraph?

Link to comment
Share on other sites

  • Member

I can do that but later as we add to the list or remove it may get messy. Perhaps I leave the list like that and post the reviews below the basic lists? That way we get the same effect ?

Edit: I did the first 2, how does that look?

Edit2: Ok, there you go, I think we are in business now. 

Link to comment
Share on other sites

I like the image of the book alongside the feedback from someone who has found the book useful. I added several of these books to my "to get" list.

Are their costs to the forum owners to run this page? Would it be worth looking at Amazon affiliation (for example)? I would certainly consider purchasing a product if I knew there was a benefit to the forum itself.

Keith

Link to comment
Share on other sites

  • Member
3 hours ago, KM1 said:

Are their costs to the forum owners to run this page? Would it be worth looking at Amazon affiliation (for example)? I would certainly consider purchasing a product if I knew there was a benefit to the forum itself.

Yes those are affiliate links and if you do buy a book or anything else starting from those links Amazon will pay us a small commission which will help keep the site up. This is also explained in the Welcome Message.

Do Note that if you save the book for later we will not get any fee, clicking the link sets a cookie with Amazon which is active for 24 hours only...

Link to comment
Share on other sites

Orunmila, your collection is pure gold, thank you for posting a comprehensive review of the essential books. I own a few books from your list and can add some thoughts.

5. Software Estimation: Demystifying the Black Art (Developer Best Practices)
Bought this book recently because of your list. This one is read in two evenings if you cross check Part II and III. These parts are the "tool box" for estimation jobs. Part II is about common techniques of estimation, III is more about special challenges you'll encounter in a software project. Part I is a must to get the idea of this book. The other parts are extremely useful if you have the job of making a plan for a project and need help for a concrete issue right now.
The book is easy to read, it is all about project management, the author explains many situations in a typical day of a technical manager, working with a team and reporting to executives about the status. You'll hardly find complex mathematics, everything is solved very pragmatically, supplemented with best practices and useful tips.
To put it in a nutshell: Accuracy comes from statistical data you acquire from your team and your projects of an organization. There a many easy ways to gather this data. If you don't have this data, you can judge, make an educated guess, throw dice. It will work somehow, but expect high deviations (up to several hundred percent).

Link to comment
Share on other sites

Next one:

14. The Pragmatic Programmer: From Journeyman to Master

A book for programmers who need a first orientation. It is great for beginners, but I think everyone involved in software programming should have a look into it. The first part isn't even specifically for programmers, it is how to think as a professional developer and what managers expect from you. The following chapters lay out the craftman's tool box and explain which tools you should use, along with the right mindset how to face daily problems. A lot of tips and techniques are targeted on avoiding code smells (without saying the word for that) or avoiding common pitfalls. The author also gives attention to a couple of social / communication aspects - the best programming skills are worth nothing today without that. There is a checklist with all tips glued into the book to be taken out - very pragmatic!

Link to comment
Share on other sites

  • 1 year later...

I think the list will complete with books on networking protocols.

TCP/IP Illustrated, Volume 1   by W. Richard Stevens I found this to be one of the best books to understand how Internet protocols work. I have read the first edition, have not read the second one.

Companion book on Unix socket programming, I like the first edition which is very concise, but expects a lot of Unix background.

Unix Network Programming, First Edition by W. Richard Stevens

Or subsequent edition, if you want more explanation, equally good.

Unix Network Programming, Volume 1

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

 


×
×
  • Create New...