Programming Books that Make Great Gifts
If anyone in your life is a programmer, wants to be a programmer, or is just interested in computers and computing here's a list of seven absolutely incredible and must read books about computer science and software engineering. To make it on this list the books not only needed to be extremely educational and well regarded by the community, but also be an absolute pleasure to read. In fact all of them are total page turners and completely changed how I thought about software engineering in one way or another. You can not go wrong with any choice on this page.
I've broken the recommendations up in to three categories based on the type of book you might be interested in. As you go down the list of categories the books will get more and more technical so for beginners I'd recommend a book from the top of the list. For someone with existing software experience any of the books on this page will be perfect for them.
General Interest And Computer History Books
These two books are great for anyone with even a passing interest in computing or the internet. Code: The Hidden Language of Computer Hardware and Software goes deep into the underlying ideas and history behind the creation of computing and computer science. It's an absolute marvel and evokes almost a sense of awe at what human kind has accomplished in the field of computing. You do not need to be a programmer to love these book, these are human stories about how we as a civilization invented these marvelous machines. Where Wizards Stay Up Late is the story of how the internet came to be. It's an exciting page turner that captures all the history and drama involved from the very beginning of the internet as a nascent idea.
Practical Advice for Building Great Software and the Philosophy of Software Engineering
These two books are two of the most recommended books about software development of all time. The Pragmatic Programmer also just received a refresh last year in the form of a brand new version updated for modern software practices. They are eminently readable and wax poetic on everything from best practices in software development to more philosophical issues like what does it mean to be a software developer.
If you are a developer these two books are absolute must reads and changed my career for the better.
Books on Foundational Technical Topics
All 3 of these books gave me total AHA moments when I read them. I didn't go to college for computer science so my understanding of Operating Systems and Compilers/Interpreters was murky at best. Reading these books was an absolute joy and go into incredible detail about the topics while also being approachable.
Writing your Own Interpreter In GO and Writing Your Own Compiler In Go are compliments of each other so I've included both of them here. In these books you literally create your own programming language and write the interpreter and compiler for it. The crazy part is its not that hard to follow and when you finish it's like a curtain has been lifted from your eyes and you can see how all the programs on your PC work in a whole new light. You do not need to go through both books, but if you only do one you should start with Writing your Own Interpreter In GO because it's a pre-requisite for the other.
Operating Systems: Three Easy Pieces changed my life. Never before have operating systems been so clearly explained. Not only are they clearly explained but no detail is spared. Each chapter is complete with exercises that reinforce your understanding as you learn every detail about the most important piece of software running on your computer, the Operating System. This book is absolutely phenomenal.