Becoming a better software developer is a multi-discipline, life-long endeavor. One benefits from the study of programming languages, software engineering principles, computer science, mathematics, and so much more. What’s more—these fields of study may not even account for the sources of creative inspiration for many!
Over the years, there have been a number of books that have left a lasting influence in fields related to computer science and software development. From Turing’s 1936 paper On Computable Numbers, with an application to the Entscheidungsproblem to the “Gang of Four’s” 1994 book titled Design Patterns: Elements of Reusable Object-Oriented Software—there have been many perspectives immortalized in the pages of textbooks, academic papers, and reference manuals.
Note: This article is a Work in Progress
Below you’ll find a list of iconic books within the fields of computer science, programming, software development, and even math. In some cases, books may come from other fields of study entirely!
This list is an ever-evolving reference presented in no particular order. Feel free to contact me and plead your case if you believe a certain book should be included, omitted, or altered in its presentation.
Agile Software Development, Principles, Patterns, and Practices – Robert Martin, 2002
This book was written by renowned Computer Scientist Robert Martin (a.k.a. Uncle Bob) and outlined the SOLID principles of Object-Oriented Design (OOD). Heralded as one of the pioneers of AGILE software development, this book covers theory, case studies, and is loaded with examples of common design patterns.
Structured Analysis and System Specification – Tom DeMarco (1979)
In this classic systems design book, DeMarco lays bare a survey of analyzing data, processes, and systems integration. He makes striking, simple, and convincing arguments for the application of such concepts as Data Flow Diagrams expressing unique approaches for “interviewing” data.
Object-Oriented Software Construction – Bertrand Meyer (1988)
This book is widely recognized as the conceptual framework for modern Object-Oriented Programming (OOP). The first edition was published in 1988 and successive editions provided significant expansions and revisions (think thousands of pages). This book often referred to as OOSC, focuses on the principles of correctness, robustness, extendibility, and reusability as they relate to software development. Key focus includes the abstract data type (ADT) as a basis for modern OOP concepts like inheritance, polymorphism, generics, and objects.
Year: 1997 (2nd edition)
Headfirst Design Patterns: A Brain-Friendly Guide – Eric Freeman & Elizabeth Rosman
This book is a great high-level introduction to some of the most popular and widely-used design patterns used in object-oriented programming. This book covers patterns like The Observer, Decorator, Factory, and Singleton patterns with gentle introductions, basic code examples, and useful discussions that avoid the overtly technical.
The books on this ever-evolving list are those that stand out among computer science, programming, and software engineering books. The subject matter and interdisciplinary range of these books are immense.
There is no single qualifying scope for a book to make or be excluded from this list. Strong consideration is given to seminal and notable updates to new conceptual topics and applications. A book’s exclusion from this list has no implication as to its quality, depth, breadth, or utility. Want to see a book added? Drop us a line.