The software engineering world is one of constant and sometimes quick changes that make continuing education a critical part of any developer’s career. Communities can be a big help with many issues, but there are also books that can take a philosophy or issue and help bring focus.
This list of books that software engineers should be reading right now is a combination of the Amazon Bestsellers in Software Design & Engineering list, the Required Reading for Software Development Professionals section on Goodreads’ Listopia, and input from several software engineers we spoke with.
1. Cracking the Coding Interview by Gayle Laakmann McDowell
Cracking the Coding Interview is a guide to help make your coding interviews more successful. The 6th edition features 189 programming interview questions with walk-throughs and hints on how to solve the problems you’re given; five strategies for algorithm questions; and a guide on how companies handle developer hiring.
“Whiteboarding and algorithmic questions can be quite different than what you’ve been doing in your day-to-day work, especially if you haven’t job searched in a long time,” said Biron Clark, a former tech recruiter and founder of CareerSidekick.com. “This book prepares you to succeed in a coding interview, with example questions and solutions.”
2. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
Clean Code is another popular choice of books, ranking second on both Amazon and Goodreads, and it was also popular with developers. Martin’s book teaches how to recognize bad code and turn it into good code. It is divided into three parts – the principles, patterns, and practices of clean code; case studies; and all the discoveries made while creating the case studies.
“This book explains the importance of organized and well-written code by providing readers with real examples and case studies, as well as theoretical knowledge,” said Vladlen Shulepov, CEO of Riseapps.
3. The Pragmatic Programmer: From Journeyman to Master by Andy Hunt and Dave Thomas
The goal of The Pragmatic Programmer is to teach the core process of software development, including career development, personal responsibility, architectural techniques, and adapting and reusing your code. The book examines the best practices and biggest problems software engineers might face.
“This book helps the reader to reach a new level of development understanding without spending years on it,” said Shulepov.
4. A Philosophy of Software Design by John Outsterhout
Ousterhout’s book looks at the complexity of software design and the problems encountered in trying to manage it. The book also covers philosophies in design, principles to apply during the process, and explains how to identify problems that occur during design.
“It’s not super long, but there is a lot to unpack and digest,” said Nate Tsang, founder of WallStreetZen. “It contains a lot of tidbits that I might have picked up instinctively over the years, but I’ve never seen articulated and laid out as well as it’s done here. Ousterhout’s idea of software as a fight against complexity really nails the essence of good software design, and it’s a must-read for junior engineers.”
5. Don’t Make Me Think by Steve Krug
Krug’s book explains that humans using software or websites lean toward accepting the first solution that is presented to them, so software engineers should take advantage of this and consider it when it comes to designing. The book focuses on simplicity, brevity, and common sense.
“An essential book for any software engineer,” said Mike Gilfillan, Technical Lead at Edge of the Web. “It really is the best book out there for helping you to understand UX, and to change your way of thinking so that UX is always the driving force behind your decisions.”
6. The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks
In the Anniversary Edition, Brooks adds to the original advice and opinions in the original book on project management in the software engineering world and his philosophy that adding manpower to a late project will only make matters worse.
He covers items such as scheduling failures, the second-system effect, irreducible errors, and more.
7. Head First Design Patterns by Eric Freeman, Kathy Sierra, Bert Bates, and Elisabeth Robson
This book looks at design pattern issues that software engineers might face. Software engineers can learn about patterns that are the most important, how and when to use those patterns, and when to avoid the patterns completely.
There are hundreds of books on just about any subject you can think about related to software engineering. If you’re looking for books more specific to your career, with some reviews and feedback from your fellow engineers, then Goodreads is a great place to start in your search. In addition to searches in different categories, the site also offers targeted lists in its Listopia section.
Other suggestions from software engineers:
24 Deadly Sins of Software Security by David Le Blanc, John Viega, and Michael Howard
“24 Deadly Sins of Software Security is an easy-to-follow book that shows common examples of security mistakes developers tend to make and ways to fix them or avoid them altogether. A software developer who is known for writing secure code can earn a lot more money if they can market that aspect of themselves correctly.” – Mark Soto, Software Developer, Cybericus
Agile Metrics in Action by Christopher Davis
“Often new developers are trained in the technology without helping them understand what their managers are looking for. This book helps bridge the gap.” – Robert Brink, Partner, Project Iris
The Rails 4 Way, The Rails 5 Way, The Rails 6 Way by Obie Fernandez
“I’ve now read all three of them and feel it is a must-have reference for any Rails developer. The code samples are production-quality, the author covers topics that developers face in their real-world applications, and it is clear that the author has an in-depth understanding of the framework while still delivering the content in a very appropriate manner. It is the ONLY book I’d recommend to anyone wishing to learn or improve on their Rails development skills.” – Kurt Maine, Senior Software Developer, DeveloHost
_____
If you’re looking to get check out our Intermediate and Beginner Hack Reactor Coding Bootcamps.