There are many programming languages out there. Each belonging to a different programming paradigm, each with its unique capabilities, style, performance, applications, and so on. But merely learning programming languages is not enough. To become better at programming or software construction, one must master the design of software programs and it’s principles. Reading these books does not immediately make you an expert programmer, but by applying them in practice and being consistent on learning more does.
Programming is a skill best acquired by practice and example rather than from booksAlan Turing
The Pragmatic Programmer – Book by Andy Hunt and Dave Thomas
“The book does not present a systematic theory, but rather a collection of tips to improve the development process in a pragmatic way. The main qualities of what the authors refer to as a pragmatic programmer are being an early adopter, to have fast adaptation, inquisitiveness and critical thinking, realism, and being a jack-of-all-trades” – Wiki
Design Patterns: Elements of Reusable Object-Oriented Software – By Erich Gamma, John Vlissides, Ralph Johnson, Richard Helm AKA Gang of Four
“The book is divided into two parts, with the first two chapters exploring the capabilities and pitfalls of object-oriented programming, and the remaining chapters describing 23 classic software design patterns.
It has been influential to the field of software engineering and is regarded as an important source for object-oriented design theory and practice.” – Wiki
Head First Design Patterns – Book by Elisabeth Freeman and Kathy Sierra
A more approachable way for getting started with design patterns. This book introduces design patterns with more real world examples and presents them in a way you can easily grasp and remember their use case. Which is more important when learning about design patterns. You need to understand the situations in which a design pattern will be applicable.
Clean Code – Book by Robert Cecil Martin
This book teaches us how to write code that is good (readable, maintainable, extendable, testable) by focusing on the building blocks of programming such as variables, functions, objects, and classes. How to write code that is understandable by others. Best way to handle errors in a system and to focus on test-driven development.
Code Complete 2 – Book by Steve McConnell
This is one of favorite book on software construction. It has the most detailed and extensive explanation for each of the topics covered.
“Code Complete is a software development book, written by Steve McConnell and published in 1993 by Microsoft Press, encouraging developers to continue past code-and-fix programming and the big design upfront and waterfall models.” – Wiki
Refactoring – Book by Kent Beck and Martin Fowler
“Refactoring to improve the design of existing code and to enhance software maintainability, as well as to make existing code easier to understand.”
This list will be updated occasionally to provide the best programming books. To find resources more specific to a programming language or technology, visit – learnstack.io.