The Best Programming Books for Every Programmer
As a follow up to the previous highly popular post about best programming books, this post adds to that list. The list below contains a list of best programming books for every programmer. That means there are no language specific books in the list, but books which describe patterns, practices and design applicable to almost all programming languages, and reading these books will make you a better programmer with a much more complete understanding of software development, regardless your favourite programming language.
The list below is an unordered list. You can pick any book you like, and some of the books don’t even cover a programming language at all, but just help you understand the world of programming. It doesn’t matter which book you’ll pick, any book is a step to further enhance your programming skills!
The Best Programming Books
- The Pragmatic Programmer: From Journeyman to Master – Whether you’re a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you’ll quickly see improvements in personal productivity, accuracy, and job satisfaction. You’ll learn skills and develop habits and attitudes that form the foundation for long-term success in your career; you’ll become a Pragmatic Programmer!
- Refactoring: Improving the Design of Existing Code – Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests.
- How To Solve It – How to Solve It will show anyone in any field how to think in a straightforward way. This books reveals how the mathematical method of demonstrating a proof or finding an unknown can be of help in attacking any problem that can be “reasoned” out–from building a bridge to winning a game of anagrams.
- Patterns of Enterprise Application Architecture – This book is actually two books in one. The first part of the book is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book’s lessons. The second, bigger, part of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information to help you understand and implement the patterns yourself.
- Practices of an Agile Developer – Want to be a better developer? This books collects the personal habits, ideas, and approaches of successful agile software developers and presents them in a series of short, easy-to-digest tips.
- Domain Driven Designs – A timeless book which provides a broad framework for making design decisions and a technical vocabulary for discussing domain design. It is a collection of widely accepted best practices along with the author’s own insights and experiences. Projects facing complex domains can use this framework to approach domain-driven design systematically.
- Masterminds of Programming – Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages, like Guido van Rossum (Python), Bjarne Stroustrup (C++), Thomas E. Kurtz (BASIC), James Gosling (Java) and many more!
- The Productive Programmer – Anyone who develops software for a living needs a proven way to produce it better, faster, and cheaper. The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use.
- Best Software Writing I – With a nod to both the serious and funny sides of technical writing, The Best Software Writing I: Selected and Introduced by Joel Spolsky is an entertaining read and a guide to the technical writing books.
“A library is a hospital for the mind.” — Anonymous
As always, if you have any suggestions to improve our list of best programming books, please let me know!