14 Best Software Development Books Recommended by our Developers
By Parasoft
July 14, 2016
6 min read
If you’re like our own developers, you’re probably most eager to delve into books like George R. R. Martin’s A Song of Ice and Fire. But once you breeze on through that little set, what’s next?
If you’re up for a little professional development amongst life’s veritable chaos, consider the following recommendations from some of Parasoft’s developers.
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
Recommended by Nathan Jakubiak, Project Lead Engineer:
“All new developers on my team are asked to read this book. It contains basic debugging rules that are often overlooked (even by experienced developers), but can prevent hours of lost time due to writing code based on bad assumptions or being unable to effectively find the problem. This book is a quick and fun read with interesting examples that anyone can understand.”
Head First Design Patterns
by Eric Freeman & Elisabeth Robson
Recommended by Nathan Jakubiak, Project Lead Engineer:
“This is a great introductory design patterns book that is very easy to read due to its fun and engaging style. I have used it multiple times within my team or within our development department as part of a ‘book club:’ we have different people adopt a pattern and then present it to the rest of the team, along with real-world interesting examples from their own projects. Our teams grew a lot in their understanding of design patterns through this book. The fact that it is a fun book to read is a major plus!”
Code Complete: A Practical Handbook of Software Construction
Recommended by Nathan Jakubiak, Project Lead Engineer:
“I usually recommend this book whenever someone wants to grow in their development abilities specifically related to writing code. It is a large book and not all chapters apply to all programmers and the projects that they are working on, but there are a lot of very good chapters related to details and nuances of programming that go a long way toward writing clean, maintainable code. One of my favorite chapters is related to creating good names for classes, methods, and variables, but there are many other topics that are equally as valuable.”
Succeeding with Agile: Software Development Using Scrum
by Mike Cohn
Recommended by Matt Love, Project Lead Engineer:
“This is a classic for anyone transitioning to Agile. I initially read it to get a comprehensive overview of Agile and help our organization determine which strategies would be best suited to our environment. Also, since we’re writing applications designed to help other DevTest teams as they are transitioning to Agile, I often revisit it from time to time to brush up on some of the approaches that don’t really suit our environment, but are in use at other organizations. I really like that it provides a lot of practical real-world examples so you can learn from experience and offers many clear and valuable guidelines teams follow.”
Refactoring: Improving the Design of Existing Code
Recommended by Jeehong Min, Project Lead Engineer:
“This classic equips developers with tools that help you continuously improve code design (instead of adding more bad code to bad design). Readers of the book will come away with a more mature, more long-term perspective about what constitutes good design. It is an easy read and can serve as a reference book even after the first reading.”
Agile Software Development: Principles, Patterns, and Practices
Recommended by Jeehong Min, Project Lead Engineer:
“This book by one of the founding fathers of agile development equips developers to think in an object-oriented way. This is critical for designing and building software that can stand the test of time as it grows. This book will stretch and expand the mind of any reader and the practice of the principles contained in the book will lead to cleaner, more beautiful code.”
Rework
by Jason Fried & David Hansson
Recommended by Jeehong Min, Project Lead Engineer:
This is a quick read by well-respected software developers (Hansson created Ruby on Rails framework, and the authors run a successful software company that builds web-based collaboration tools). This book is for project leads and managers who want to learn from what has made others successful in writing software. You don’t have to agree with everything they have to share in order to come away with new thoughts and ideas.
Java Concurrency in Practice
by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea
Recommended by Michael Siegel, Senior Software Engineer:
This book is critical. You shouldn’t let even senior developers touch your code base if they haven’t read this book and understood the concepts within. It is old, but it’s still relevant.
Test-Driven Development: By Example
by Kent Beck
Recommended by Michael Siegel, Senior Software Engineer:
Test Driven Development by the inventor of the practice…who better to learn from? The book is short, easy to understand, and presents very helpful ideas on the topic. It’s very good for anyone who cares about agile software development and code quality.
Patterns of Enterprise Application Architecture
Recommended by Michael Siegel, Senior Software Engineer:
For senior developers, this book presents ideas and concepts behind the design of enterprise applications. For anyone venturing into the murkier waters of complex system and real life/large scale business applications, these are important concepts to understand.
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
by Scott Meyers
Recommended by Rich Newman, Principal Software Engineer:
Scott Meyers is a noted expert in all things C++. This book in an invaluable resource into the traps and pitfalls of C++11 and C++14, as well as demonstrating the way to optimal code. If you’re coding in C++11 or C++14, you NEED this book.
Programming with POSIX Threads
by David R. Butenhof
Recommended by Rich Newman, Principal Software Engineer:
Thread programming is fraught with obstacles and problems, most of which are non-obvious. David Butenhof takes you “down the rabbit hole”, with amusing and entertaining examples, and metaphors leaving the reader with a thorough understanding of thread programming.
Pattern-Oriented Software Architecture, Vol. 2, Patterns for Concurrent and Networked Objects
by Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann
Recommended by Rich Newman, Principal Software Engineer:
This book is to networked and concurrent objects what the “Gang of Four” is to design and structure. The patterns found herein are absolutely essential in a new and ever increasingly networked and concurrent world. Following these patterns just keeps you out of trouble in these domains.
Coders at Work: Reflections on the Craft of Programming
by Peter Seibel
Recommended by Eliot Ayer, Software Engineer:
Coders at Work is a book of interviews with leaders in the field of computer science and software. The author interviews a diverse set of figures with distinct claims to fame, ranging from undisputed legends of the field such as Donald Knuth (who defined the mathematical techniques for analyzing algorithms) and Ken Thompson (who designed UNIX) to JavaScript creator Brendan Eich and notable Java library developer Joshua Bloch.
Through highly-readable conversations, it delves into what personally motivates these people, and his subjects offer strong opinions on what is important to become a great developer. The diverse and contrasting insights they offer will surely surprise you, such as their emphasis on reading code, the importance of empathy and teamwork, or resisting the urge to over-engineer a feature. In day-to-day work, we are overwhelmed by books and tutorials about the mechanics of programming or best practices; this book gives developers a great opportunity to connect at a deeper level with the craft, history and inspiration of development.