Posted November 4, 2009 by Spyros in General Programming

10 Books That Every Computer Programmer Must Own


When Socrates said the famous “the only good is knowledge and the only evil is ignorance”, he must have been thinking of computer programmers. Well, ok, there were no computers at that time. Knowledgewise, naming computer programmers after leechers would not be considered an exaggeration, would it ?

One of the main reasons that drives us into learning more about computers is not really that we love them but we love the idea of learning more about a certain subject, becoming an expert at it. I’m pretty sure that you (since you are reading this text) like to read technical books that relate to computer fields. In the pursuit of knowledge, picking the right resources is not always easy. Have you even been in the position when you wanted to buy a book but you just couldn’t decide which one ? I know that i’ve been in that position and since i have some experience on the subject, i decided to write a top 10 of the books that i believe to be essential for every programmer and computer hobbyist.

Below, i will be presenting you my choices and also describe why i feel them to be the right ones to buy and what you can expect to learn out of them. They are not presented in order of importance because each one of them bears great importance on its field. Also, as you can understand, there can be lots of books that should or could be added to that list. If you feel that something should be here, please drop a comment. I will collect your opinions and after some evaluation amongst the people visiting this blog, i will be creating another post with even more important books that you suggest. But, furst things first :

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

Have you even been in a situation where you needed to use an algorithm to program something, or didn’t know how to go about coding a certain thing ? This awesome book, written by the so called Gang of Four, is the quintessential of programming design patters. It will present you with the best techniques so that your programs are nicely coded using the most efficient algorithms for the task. A real must have for every programmer.

2. Running Linux

I didn’t know whether i should include this book or not. I was in fact on the verge of removing it from my list, but decided to finally write about it here mainly because of two reasons. It was the first book that i’ve read about Linux and even nowadays that i happen to know more about this Operating System, i feel that it is a good introduction for people just starting to learn more about Linux. Therefore, if you are new to this world, this one is a nice choice to make.

3. Programming Windows®, Fifth Edition (Microsoft Programming Series)

Just buy that if you are interested in Windows Programming. This (pretty big) book is definately the best resource on the subject by far. You can literally find anything you need to know in there. Really there is not much need to be said to praise that book, it speaks for itself.

4. Linux Kernel Development (3rd Edition)

A more advanced one. If you are serious about the inner workings of the linux kernel, this book will really help you. It is actually a very nice book that will not only help you understand the linux kernel alone, but also show you some of the internal workings of modern operating systems.

5. The Shellcoder’s Handbook: Discovering and Exploiting Security Holes

Let’s dig into security a bit. The shellcoder’s handbook is one of the best choices to learn about shellcode exploitation. It’s a very nice and interesting read that will show you some of the internal programming components and how attackers smash the stack, heap and exploit vulnerabilities to get the so wanted shell.

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

I must admit that i don’t really know much about this series of books, but it is certainly very important material about computer programming. Donald Knuth is said to be the man that created a mathematical representation of computer programming. A programming hero that needs to be respected via his books for sure.

7. Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition

Well, i’m not really sure that you would be interested in Cryptography, but if you are an all around programmer and computer knowledge seeker, Bruce Schneier’s book is the best in its field. Be warned that this is s highly technical book that you should only acquire if you have a genuine need to know about cryptography internals.

8. TCP/IP Illustrated, Vol. 1: The Protocols (Addison-Wesley Professional Computing Series)

You most probably know about that book already. One of the real legends. Richard Stevens has created a masterpiece there, describing literally everything you need to know about TCP/IP.

9. Advanced Programming in the UNIX Environment (3rd Edition) (Addison-Wesley Professional Computing Series)

Another masterpiece having Richard Steven as a co-author. A must have for serious programmers. Systems programming at its best, certainly the rival of Charles Petzold’s Windows masterpiece shown above.

10. Modern Operating Systems (3rd Edition)

How could i not include Andrew Tanenbaum on this list ? The author of Minix is a real legend on the Operating Systems field. Since as a programmer you are always operating under certain operating systems, knowing the basic things about them will make your coding more efficient and versatile.

This concludes my top 10 list of the best books of all times. I would really like to hear your own opinions at that point. Till the next post, have fun and keep on programming !