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, a real estate investor, or a developer.
Here's a list of 7 programming books that developers at X-Team would recommend to anyone who's new to developing or wants to become a better developer. These books are all critically acclaimed and can be read regardless of the language you program in.
1. 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 that you can use on any development project.
It's essentially a series of articles, each of which containing a "best practice" lesson that's often explained with a metaphor. If you're new to programming, this book will help make sure 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.
2. The Clean Coder (R. Martin)
Robert Cecil Martin, also known as Uncle Bob, was 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.
3. Coders at Work (P. Seibel)
Peter Seibel interviews sixteen of the interesting computer programmers in Coders at Work. This includes Douglas Crockford (founder of JSON), Peter Norvig (Director of Research at Google), Francis Allen (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 they often aren't any different from other programmers and struggle with the same problems that we mere mortals do.
4. Clean Code (R. Martin)
The second classic of Robert Martin on this list. Split into three parts, Clean Code focuses on the practices of writing clean code, gives case studies of increasing complexity, and 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 will help you distinguish good code from bad code and has the potential to profoundly change how you write code yourself.
5. 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.
6. 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 after the facts. As such, it's a collection of useful best practices.
7. 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 none the less. Its main point 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 you would refute them.