14 Essential Software Development Books to Read This Summer

Jul 14, 2016

Posted by Parasoft

SoftwareDevelopmentReading.png

With long days, nice weather, and hopefully a little break in your work schedule, now's the perfect time to catch up on all those books you've been meaning to read... someday. 

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 next?

If you're up for a little professional development amongst all of summer's sun and fun, consider the following recommendations from Parasoft developers.

 

Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems

by David J. Agans @daveagans

Recommendation by Nathan Jakubiak, Project Lead Engineerdebugging.jpg

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 @erictfree and Elisabeth Robson @elisabethrobson

Recommendation by Nathan Jakubiak, Project Lead Engineerheadfirst.jpg

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

by Steve McConnell (@stevemconstruxcodecomplete.jpgcodecomplete.jpg

Recommendation by Nathan Jakubiak, Project Lead Engineercodecomplete.jpg

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.  However, 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 (@mikewcohn)succeedagile.jpg

Recommendation by Matt Love, Project Lead Engineer succeedagile.jpg

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

by Martin Fowler (@martinfowler)

Recommendation by Jeehong Min, Project Lead Engineer refactoring.jpg

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

by Robert C. Martin (@unclebobmartin)

Recommendation by Jeehong Min, Project Lead Engineer  agile_sw_dev.jpg

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 (@jasonfried) and David Hansson (@dhh)

Recommendation by Jeehong Min, Project Lead Engineer rework.jpg

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 (@BrianGoetz), Tim Peierls (@tpeierls), Joshua Bloch (@joshbloch), Joseph Bowbeer, David Holmes (@dholmesf5), and Doug Lea (@dougleajavaconcurrency.jpgjavaconcurrency.jpg

Recommendation by Michael Siegel, Senior Software Engineer  javaconcurrency.jpg

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 (@KentBecktdd.jpg

Recommendation 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

patterns_enterprise.jpgby Martin Fowler (@martinfowler)  patterns_enterprise.jpg

Recommendation 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

effectivec.jpgby Scott Meyers (@Scott__Meyerseffectivec.jpg

Recommendation by Rich Newman, Principal Software Engineer effectivec.jpg

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

posix.jpgby David R. Butenhof posix.jpg

Recommendation by Rich Newman, Principal Software Engineer posix.jpg

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 pattern_oriented.jpg

Recommendation by Rich Newman, Principal Software Engineer pattern_oriented.jpg

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 @peterseibel

Recommendation by Eliot Ayer, Software Engineer

codersatwork.jpgCoders 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.

 

New Call-to-action