This is a recommended reading list for software engineers. The list is presented in no particular order. This is not THE list, it is a list of interesting, thought provoking reading.
Design Patterns, Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides
Design Patterns by the Gang Of Four is a often cited resource for other software books. It is focused on object oriented software and the examples are shown in C++. However, it inspired many other ‘patterns’ books for other languages. Not only does it provide a recipe book for C++ programmers (if you use C++), the ideas can be abstracted to other languages. It is not necessarily meant to be read from cover to cover in one sitting. Rather, it is organized more as a reference book, and can be read in small chunks.
xUnit Test Patterns, Refactoring Test Code
by Gerard Meszaros
Unit testing, all experienced programmers practice it, or at least know they should. However, the question is often, “how can I do this better?” The xUnit Test Patterns book provides a valuable reference as to how to perform the testing. It is a voluminous reference and there is some repetition. However, the information is presented in a ‘pattern’ style, so it isn’t required that is read from cover to cover. It is a good reference for those that currently practice unit testing and want to get better.
by Henry S. Warren, Jr.
This is a little gem of a book. It lists a variety of recipes for performing bit manipulation calculations. It isn’t a book you would reference on a daily, or even weekly basis. However, when that time comes that you need one of the algorithms listed, the book is priceless.
Extreme Programming Explained
by Kent Beck
A great book for programmers trying extreme programming for the first time. Full of whimsical, yet pragmatic, anecdotes. This book will get you excited about XP (if you weren’t already).
by Bruce Schneier
Good introduction to cryptography. Details a number of algorithms, listing the pros and cons of each. Also includes implementation source code in C. A great reference for those that need to use cryptography, but are not experts in the field.
I hope you have enjoyed reading this list and possibly learned about a new book. Happy reading!