There’s a enormous number of books out there – (even I am writing a book!), so choosing the right books to read can be a difficult task. Yet it’s important because our spare time, is very limited: we still need to eat, sleep, socialize, take care of family and kids, while we have to spend significant time to write code and solve problems. How to get the right book and not regret spending time reading it?
There are many good books – but it’s best to categorize them into smaller groups:
- Is the book beginner-level, or does it require some experience to digest?
- Will the content be still largely relevant after ten years, or will it be obsolete in just next few years?
- Is it a book to read from cover-to-cover in one sitting (just kidding, I mean you should finish it when you start it), or to read chunk by chunk (read a chapter, stop for a while, read another chapter), or keep it around as a reference?
I have this criteria to categorize books myself:
Good books: A book which is on-topic and with accurate information, and in an easy to read and easy to follow style, the author(s) deliver their promises.
Great books: Good books give information. Great books raise questions. A good book becomes great when it makes readers think – not only about topics mentioned in the book, but also the bigger picture.
Legendary/Classic books: Great books which stand the time and still be useful after 10 years, or even longer. These are truly gems of their own and should be read, regardless of the topics. The topics might be obsoleted, but the thoughts/ insights are still relevant. They are battle-tested and no matter which field you are working on, you’ll still learn something from it.
Books you really should read
C programming language, 2nd edition
Not everyone works with C (myself included), but this book is still recommended over and over for developers. The book is pretty small, and indeed very easy to read and follow – it is widely accepted as one of the best programming books ever written, in terms of writing quality – and it provides a view of what is a function, how a program works, how are things connected to hardware-level …
If you ever write a programming documentation – and you will – make this a reference for writing style.
Code Complete, 2nd edition
This book is considered must read for everyone, especially those who are new to software development, and re-read after a while. It’s a big book contains almost everything you should follow when you’re in the software industry – coding convention, naming, how to structure your classes … Get a copy and read it from cover to cover, if you haven’t, and re-read after 3-4 years to see how much you learned from it.
The Pragmatic Programmer: From Journeyman to Master
I read this book when I was still at university and it had a big impact for me – it changed the way I see and think: How to become a “pragmatic programmer” – with valuable advices and lessons.
Refactoring: Improving the Design of Existing Code
Don’t let the title fool you – it’s correct title, but the book is more than that. It’s about writing clean code and to make your code is maintainable overtime. You only write code once , but it will be read hundred, if not thousand of times in it lifetime. Don’t make the future you hates the current you, because he simply can’t maintain his own code.
Structure and Interpretation of Computer Programs
Once used as the text book for computer science courses in MIT, this book – usually know as SICP – was highly regarded as the book on how computer programs work.
There is also a series from MIT available on Youtube which is based on this book, which you can watch from here: https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PLE18841CABEA24090. Mind you, the quality of those videos is not the best – they are 30 years old now. Still, the contents are really gems if you want to learn about the topic.
It’s also one of free books in this list. You can read it only here: https://mitpress.mit.edu/sicp/full-text/book/book.html, or with the better format here: https://github.com/sarabander/sicp-pdf
Books you should know about, but are not required to read:
Introduction to Algorithms, Third Edition
Usually regarded as the text book about algorithms, this is, however, not a “beginner-level” book. Despite of its name, the book is highly academic and unless you are studying for an algorithm course, you should not have to read it from cover to cover. But many people keep it around as reference.
The Art of Computer Programming (TAOCP)
Arguably the most famous book(s) in computer programming, but this also is considered as the most difficult to read from cover-to-cover. My boss has a collection of these (4 books) but I doubt that he’s read them thoroughly. Still, this is a very cool thing to have in your shelf!