The Top 5 Books Every Software Developer Must Read
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!
Everything is so clear in hindsight. You think about it like “Oh man that was so obvious, how I did not make that decision or how could I not think about it”. The truth is when you’re faced with the situation and there’s darkness all around you, you’re unsure what’s going to happen, but you […]
I want to share with you what I feel are some of the worse ways to learn a new technology or programming language. After that, I promise to brighten up the mood and share with you the fastest and most effective approach I’ve seen to learning any technology. Now days, the software development space is […]
So are you too old to get into software development? I can’t tell you the number of times I get asked this question. People are asking all the time. I’m 30 years old is it too late for me to get into software development? I mean come on! Age is not a limit If you’re […]