Very few books stand the test of time especially in the world of science and technology. In the software discipline, there are just a handful of books that carry so much wisdom and practical advice that by reading them you can instantly feel empowered and have access to the experiences and stories of some of history’s most passionate veteran software craftsmen & authors. By reading these, you get a summary of almost a sum total of 150 years of struggle and sweat by these gurus. What makes these veterans’ experiences more important than any other today? They’ve seen massive changes in their careers from being perceived as just some weird tech artists during an era when computers were not mainstream to reaching new heights in their careers as masters of the trade when computers did finally become mainstream. I consider these folks to be the catalysts and drivers of all the fascinating technological innovations we see today. The fascinating thing about some of these books is that by reading them, one can almost get a glimpse into the future and know how to handle certain situations during the career navigation process. In this article I want to list these gems that I think every software developer should read to super charge their career and be well prepared to handle anything as a software developer. Regardless of what technological area you’re involved in, these set of books will not only improve you in the discipline, they’ll save you from experiencing things like burn out, bad bosses, software politics, dealing with BAs and preparing for massive changes in the code.

I’ve picked the top five books I think every single software developer must read!

1). The Pragmatic Programmer: From Journeyman to Master
This book takes a highly pragmatic approach to becoming a master at the craft of software development. The anecdotes and situations discussed in the book are highly relevant and full of wisdom. The working programmer will surely enjoy this book.
Topics covered: A useful approach to software design and construction that allows for efficient, profitable development of high-quality products. Elements of the approach include specification development, customer relations, team management, design practices, development tools, and testing procedures. This approach is presented with the help of anecdotes and technical problems.

2). Programming Pearls
This book is timeless because it discusses recurring problem situations with elegance, clarity, and insight. You should have completed my “Practical Data Structures & Algorithms” course to get the most out of this wonderful book. The thirteen columns in this book appeared in the Communications of the ACM between 1983 and 1985. There can’t be more than a couple of technical books on computing from that era that are still worth reading. What Bentley does in each of these columns is take some part of the field of programming–something that every one of us will have run into at some point in our work–and dig underneath it to reveal the part of the problem that is permanent; that doesn’t change from language to language. The first two parts cover problem definition, algorithms, data structures, program verification, and efficiency (performance, code tuning, space tuning); the third part applies the lessons to example pseudocode, looking at sorting, searching, heaps, and an example spellchecker.

3). Effective Java (2nd Edition)
This book is often referred to as the bible of Java. Java is a massive language and it has some dark corners that lesser experienced developers often find themselves wandering in. Using Java the RIGHT way can make software development a very productive and rewarding experience, but using it in suboptimal ways could become a complicated mess! The author Joshua Bloch shares his decades of wisdom to explain the dos and don’ts of java and EXACTLY how best to use the language to write effective software. I would recommend this book for anyone that has experience programming in Java for at least 1 year. If you’ve completed my OOP courses and solved those assignments, this book is a must have on your self.

4). Refactoring: Improving the Design of Existing Code
This is a highly practical book because it discusses what 60-70% of the programmer job is all about. REFACTORING. As a programmer, you’ll be tasked with reading other peoples code and refactoring it, enhancing it or even removing it. All three of these are challenging tasks but they’re critical programmer responsibilities. REFACTORING is most probably going to account for 60-70% of your job if you join a team that has plenty of software already built. In a startup environment the ratio may be lower closer to 20-30% but you’ll still need to refactor your code as well as others. Award winning author Martin Fowler talks about exactly how to do this in this book. I recommend every java programmer to read this book and implement the techniques discussed.
Topics covered:Refactoring, improving software code, redesign, design tips, patterns, unit testing, refactoring research, and tools.

5). Practical Object-Oriented Design in Ruby: An Agile Primer
Even though this book is written for Ruby developers, it’s highly relevant and it’s one of my most favorite OOP books of all time. It’s relevant for all OOP programmers regardless of the language. The book is an easy read with wonderful examples and explanations on how to convert an idea/problem into OOP code. You can apply the techniques learned in this book in any OOP language of your choice and learn some Ruby along the way which is awesome. The book gives a nice overview of the ruby language without going into too much language specific details and sticking with the OOP topic. It’s a wonderful piece of work I think every developer must read!