Here is a list of the top books on various software development topics I recommend. Believe it or not, I've read all but one or two of them, which should give you a hint as to how long I have been doing this.
Design
"Object Design: Roles, Responsibilities, and Collaborations"
by Rebecca Wirfs-Brock, Alan McKean
This is one of the best books on object oriented design you will find. This books focuses is on using approach to object oriented design.
"Domain-Driven Design: Tackling Complexity in the Heart of Software"
by Eric Evans
This is an amazing book and still a favorite. This book explains how to model the problem domain knowledge and create a ubiquitous domain language.
"Object Thinking"
by David West
This is a quirky book and I suspect it won't be to everyone's liking. But for serious OO designers it is well worth reading and full of thought provoking ideas and opinions.
"Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D"
by Brett D. McLaughlin, Gary Pollice, Dave West
A gentle and entertaining introduction to the subject. This book will is mainly aimed at novice designers and will probably bore more experienced developers.
"Design Patterns: Elements of Reusable Object-Oriented Software"
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
What is left to say about the book that started the design patterns movement other than every serious developer should read this book at least twice. Just please ignore the Singleton pattern.
"Agile Software Development, Principles, Patterns, and Practices"
by Robert C. Martin
A great book with lots of example code that really lays out some key OO design principles such as DRY (Don't Repeat Yourself). Though I thought the bowling example was a bit weak and I told Robert Martin so.
"UML Distilled: A Brief Guide to the Standard Object Modeling Language, (3rd Edition)"
by Martin Fowler
You won't find a simpler, shorter, or more readable introduction to UML anywhere.
Development
"The Mythical Man-Month: Essays on Software Engineering"
by Frederick P. Brooks
Who would have thought this book would still ring true after so many years. This is a classic that you really ought to read.
"Extreme Programming Explained: Embrace Change, (2nd Edition)"
by Kent Beck, Cynthia Andres
Kent Beck is arguably the leading voice for agile development and this is the book that started it all. A must read for any anyone interested in agile software development. Sadly, so far I've only read the first edition.
"Lean Software Development: An Agile Toolkit for Software Development Managers"
"Implementing Lean Software Development: From Concept to Cash"
by Mary Poppendieck, Tom Poppendieck
Having trouble convincing your management that agile software development makes sense? If these two books don't help then nothing will.
"Waltzing With Bears: Managing Risk on Software Projects"
by Tom Demarco, Timothy Lister
Another classic that still works. If you only read one book on software project risk this should be it.
"Software Configuration Management Patterns: Effective Teamwork, Practical Integration"
by Stephen P. Berczuk, Brad Appleton
This book will help you move beyond simple check-in an check-out to managing your project's artifacts. It explains the proven SCM patterns and practices needed to succeed.
"Pragmatic Version Control Using CVS"
by Dave Thomas, Andy Hunt
An excellent concise introduction to version control in general and CVS in particular. This is a great book for the new or inexperienced version control user.
"Continuous Integration: Improving Software Quality and Reducing Risk"
by Paul Duvall
This is a very good book. Ever since Martin Fowler's seminal article on the subject we've badly needed this book. I only wish it had been written a couple years earlier. This book will be most useful to those new to the concepts of "Continuous Integration".
Programming
"Refactoring: Improving the Design of Existing Code"
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
This is the bible on refactoring. If have not read this book and think you practice "refactoring" then think again. Refactoring, along with unit testing, are key techniques of agile development.
"Refactoring to Patterns"
by Joshua Kerievsky
This book is about using patterns to improving existing designs of existing code bases.
"The Pragmatic Programmer: From Journeyman to Master"
by Andrew Hunt, David Thomas
This is a must read for every programmer. It is full of all sorts of techniques for improving your craft. Ever wonder why the best programmers are 10 or 20 times more productive? It's probably because they are already use the techniques in the book.
"Working Effectively with Legacy Code"
by Michael Feathers
Strategies for fixing that crusty old untested legacy code.
"Code Complete"
by Steve McConnell
I first read this book twenty years ago. The newest edition is just as good a guide to the why and how of writing great code as the original. This should be on every programmer's bookshelf.
Java Programming
"Pragmatic Unit Testing in Java with JUnit"
by Andy Hunt, Dave Thomas
You won't find a better tutorial on unit testing or JUnit. Give this book to any programmer new to developer testing.
"Effective Java Programming Language Guide"
by Joshua Bloch
Every Java programmer must read this book! Any Java programmer that hasn't should not be allowed anywhere near a Java compiler.
"Java Generics and Collections"
by Maurice Naftalin, Philip Wadler
A clear guide to a tough subject. I think everyone will learn at least one new thing.
"Thinking in Java (5th Edition)"
by Bruce Eckel
Architecture
"Patterns of Enterprise Application Architecture"
by Martin Fowler
"Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions"
by Gregor Hohpe, Bobby Woolf
Design
"Object Design: Roles, Responsibilities, and Collaborations"
by Rebecca Wirfs-Brock, Alan McKean
This is one of the best books on object oriented design you will find. This books focuses is on using approach to object oriented design.
"Domain-Driven Design: Tackling Complexity in the Heart of Software"
by Eric Evans
This is an amazing book and still a favorite. This book explains how to model the problem domain knowledge and create a ubiquitous domain language.
"Object Thinking"
by David West
This is a quirky book and I suspect it won't be to everyone's liking. But for serious OO designers it is well worth reading and full of thought provoking ideas and opinions.
"Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D"
by Brett D. McLaughlin, Gary Pollice, Dave West
A gentle and entertaining introduction to the subject. This book will is mainly aimed at novice designers and will probably bore more experienced developers.
"Design Patterns: Elements of Reusable Object-Oriented Software"
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
What is left to say about the book that started the design patterns movement other than every serious developer should read this book at least twice. Just please ignore the Singleton pattern.
"Agile Software Development, Principles, Patterns, and Practices"
by Robert C. Martin
A great book with lots of example code that really lays out some key OO design principles such as DRY (Don't Repeat Yourself). Though I thought the bowling example was a bit weak and I told Robert Martin so.
"UML Distilled: A Brief Guide to the Standard Object Modeling Language, (3rd Edition)"
by Martin Fowler
You won't find a simpler, shorter, or more readable introduction to UML anywhere.
Development
"The Mythical Man-Month: Essays on Software Engineering"
by Frederick P. Brooks
Who would have thought this book would still ring true after so many years. This is a classic that you really ought to read.
"Extreme Programming Explained: Embrace Change, (2nd Edition)"
by Kent Beck, Cynthia Andres
Kent Beck is arguably the leading voice for agile development and this is the book that started it all. A must read for any anyone interested in agile software development. Sadly, so far I've only read the first edition.
"Lean Software Development: An Agile Toolkit for Software Development Managers"
"Implementing Lean Software Development: From Concept to Cash"
by Mary Poppendieck, Tom Poppendieck
Having trouble convincing your management that agile software development makes sense? If these two books don't help then nothing will.
"Waltzing With Bears: Managing Risk on Software Projects"
by Tom Demarco, Timothy Lister
Another classic that still works. If you only read one book on software project risk this should be it.
"Software Configuration Management Patterns: Effective Teamwork, Practical Integration"
by Stephen P. Berczuk, Brad Appleton
This book will help you move beyond simple check-in an check-out to managing your project's artifacts. It explains the proven SCM patterns and practices needed to succeed.
"Pragmatic Version Control Using CVS"
by Dave Thomas, Andy Hunt
An excellent concise introduction to version control in general and CVS in particular. This is a great book for the new or inexperienced version control user.
"Continuous Integration: Improving Software Quality and Reducing Risk"
by Paul Duvall
This is a very good book. Ever since Martin Fowler's seminal article on the subject we've badly needed this book. I only wish it had been written a couple years earlier. This book will be most useful to those new to the concepts of "Continuous Integration".
Programming
"Refactoring: Improving the Design of Existing Code"
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
This is the bible on refactoring. If have not read this book and think you practice "refactoring" then think again. Refactoring, along with unit testing, are key techniques of agile development.
"Refactoring to Patterns"
by Joshua Kerievsky
This book is about using patterns to improving existing designs of existing code bases.
"The Pragmatic Programmer: From Journeyman to Master"
by Andrew Hunt, David Thomas
This is a must read for every programmer. It is full of all sorts of techniques for improving your craft. Ever wonder why the best programmers are 10 or 20 times more productive? It's probably because they are already use the techniques in the book.
"Working Effectively with Legacy Code"
by Michael Feathers
Strategies for fixing that crusty old untested legacy code.
"Code Complete"
by Steve McConnell
I first read this book twenty years ago. The newest edition is just as good a guide to the why and how of writing great code as the original. This should be on every programmer's bookshelf.
Java Programming
"Pragmatic Unit Testing in Java with JUnit"
by Andy Hunt, Dave Thomas
You won't find a better tutorial on unit testing or JUnit. Give this book to any programmer new to developer testing.
"Effective Java Programming Language Guide"
by Joshua Bloch
Every Java programmer must read this book! Any Java programmer that hasn't should not be allowed anywhere near a Java compiler.
"Java Generics and Collections"
by Maurice Naftalin, Philip Wadler
A clear guide to a tough subject. I think everyone will learn at least one new thing.
"Thinking in Java (5th Edition)"
by Bruce Eckel
Architecture
"Patterns of Enterprise Application Architecture"
by Martin Fowler
"Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions"
by Gregor Hohpe, Bobby Woolf
No comments:
Post a Comment