Reading books is one of the best ways to learn or improve a skill. This is no different if you're a novelist, a math teacher, or a developer. So here's a list of 10 programming books that X-Team developers would recommend to anyone who wants to become a better developer.
None of these books teach you how to program in a particular language. Some of these books are decades old and would be hopelessly outdated if that were the case. Instead, they refine your understanding and your approach to programming, which will save you much more time in the long run than updating your technical skills would.
The Pragmatic Programmer (A. Hunt & D. Thomas)
A classic in the genre, and often used as a textbook in university courses, The Pragmatic Programmer from Andy Hunt and David Thomas is a book that offers practical and sound programming advice you can use on any development project.
It's essentially a series of articles, each of which containing a best practice that's often explained with a metaphor. If you're new to programming, this book will help ensure you're on the right track from the start of a project. If you're an experienced programmer, this book will reinforce some of the beliefs you've built up during your years of coding.
The Clean Coder (R. Martin)
Robert Cecil Martin, also known as Uncle Bob, was the co-author of the Manifesto for Agile Software Development, the text that launched the popular software development framework Agile, which now underpins frameworks such as Scrum and Kanban.
The Clean Coder doesn't explain how to write good code. Instead, it explains how you can become a better programmer or even just a good working professional. It walks you through how to best behave under tight deadlines, how to create an environment to thrive in, how to say no to certain requests, and much more.
Code Complete (S. McConnell)
Another classic tome. Initially published in 1993 and kept up-to-date to accommodate for the modern world, Code Complete is a must-read for the productive, pragmatic developer.
The book provides high-level advice about code, from the importance of conquering complexity to watching for falling rocks (i.e. warning signs). It also has a large section on how to write high-quality code, which requires consistent levels of abstraction separated by clear boundaries. All in all, an important reference book with fantastic advice.
Coders at Work (P. Seibel)
Peter Seibel interviews sixteen renowned computer programmers in Coders at Work. These include Douglas Crockford (founder of JSON), Peter Norvig (Director of Research at Google), Francis Allen (the first woman to win the Turing award), and Ken Thompson (inventor of UNIX).
The book focuses on how these programmers do their job and how they see themselves. It does a good job of showing that these famous programmers often aren't any different from other programmers and struggle with the same problems that we mere mortals do.
Clean Code (R. Martin)
The second classic of Robert Martin on this list. Split into three parts, Clean Code focuses on how to write clean code through case studies of increasing complexity. It concludes with a list of heuristics to follow if you want to write clean code.
For example, it stresses the importance of naming things properly, and structuring your code to reflect what it actually does. All in all, Clean Code helps you distinguish good code from bad code and has the potential to profoundly change how you write code yourself.
The Mythical Man-Month (F. Brooks)
Get this: The Mythical Man-Month was initially published in 1975 and still comes highly recommended by developers. It's a collection of essays whose central theme is that adding manpower to an already-late software project will make it later, based on the observation of its author, Fred Brooks, project manager at IBM at the time.
At 322 pages, The Mythical Man-Month is a shorter read than some of the other books on this list. It's a great book for project managers or managers of any kind, to better understand the complexities of software projects that make them stand out from other types of projects.
The Art of Unix Programming (E. Raymond)
With contributions from Unix luminaries Brian Kernighan, David Korn, and Henry Spencer, The Art of Unix Programming offers profound insight into the software design secrets of the original Unix programmers.
There's no actual code in this book. Instead, it focuses on the culture, history, and philosophy behind Unix and its community, although it also teaches valuable lessons on the importance of open source and its software development process.
Prefactoring (K. Pugh)
Ken Pugh's Prefactoring covers programming fundamentals to write high-quality code. It's considered a must-read for new developers, and a should-read for experienced developers.
Prefactoring is a twist on refactoring. It wants its readers to implement good design techniques from the start of a project, instead of once the code's been written. As such, it's a collection of useful best practices.
The Psychology of Computer Programming (G. Weinberg)
Initially published in 1971, The Psychology of Computer Programming is usually overlooked and forgotten. But it's a hidden gem that's still remarkably relevant today. It is one of the first books that pioneered a people-oriented approach to programming over a mathematical, scientific, or technological one.
The Psychology of Computer Programming isn't about computer programming (despite its title). It's about computer programmers. It emphasizes how it's not just about how an individual interacts with software, but how the project team that builds the software interacts with each other.
So Good They Can't Ignore You (C. Newport)
This incredibly popular book from Cal Newport isn't a programming book, but came readily recommended nonetheless. The main point of So Good They Can't Ignore You is that you shouldn't follow your passion. Instead, you should do something valuable and become really good at it. Passion will follow.
It's a controversial point of view, but that's also why it became such a popular book. Even if you disagree, it's well worth reading to understand the points Newport makes and how that can apply to your career in software development.