by Lasse Koskela
Date Read 12/2007
One Minute ReviewPositives* Excellent coverage of Test Driven development* Covers many development best practices* Excellent writing style
Negatives* Could be more concise
SummaryThis is an excellent book on TDD — I think it’s the best book on the subject. At first, I thought this book is going to be just a review of the commonly known practices: test-code-refactor. Not true! In this book, I learned a lot more about this practice (of course), but also about how to do other types of testing (servlet, db, jsp, swing, and more), and also about the different tools available for the task. I really liked the author’s open, direct style of writing. Makes it an interesting and a worthwhile read.
Java Concurrency in Practice
by Brian Goetz
Date Read 3/2007
Want to learn about synchronization in Java? Do you know what’s new in concurrency in Java 5/6? Not sure? Then this is the book for you.
This book introduces many new concurrency concepts introduced in the new versions of Java: Locks, BlockingQueues, Semaphores, Executors, Concurrent data structures and more (much more). There is a lot of new material, a lot of new topics. It’s actually a major overhaul. The authors do a very good job introducing them.
It’s not the most exciting subject, but the authors have tried to keep it interesting. This book has clear writing, simple examples, and good coverage on variety of topics. What else can you ask in a book on threads?
All in all, an excellent book: the best book on the threads in Java 5/6.
If you want to call yourself a well-rounded Java programmer, read this book.
Design Patterns (GoF)
by Ralph Johnson, Richard Helm, Erich Gamma, John Vlissides
Date Read 10/2006
I have read several books on patterns. This is the best. You’ll get sound design principles as well. You will become a better designer if you read this book. If you can finish it — you might want to take it slow…
This is not an easy book. I had tried reading it couple times but could never finish it. It was boring to me. I was getting distracted by the C++ code that this book has as sample code. But now, after finally reading it from start to finish, I can see that this book has great value.
This book is the definite guide to the most important patterns, the GoF patterns. These guys invented — or first reported — these patterns. Other books, which claim to simplify them and make them easier to remember (ie. Head First Design Patterns), don’t come close to this book. Some of them are helpful, though, and you might want to start with them before you read this book — learning patterns is hard.
There are several approaches in how you can read this book. The authors say you can just select a pattern you are interested in and just read it. I think the best way to read this book is to start with the indroductory chapter, which contains a lot of great advice on design in general; get to know the patterns referenced in these chapters; and then read one of the three major sections: creational, structural, or behavioral. The author refer to patterns in each section, so I think it’s good to read the whole section. It is also good to have other examples of the patterns to look at — you can find many by searching the web.
The GoF patterns are the most important and most widely used patterns. Every architect/senior developer needs to know them. This book is a must have.
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal
Date Read 9/2006
This is one of the best design patterns books. I am not the only person that’s saying that. Check out Amazon.com reviews, check out recomendations from Martin Fowler. If you’re into architecture, this is a must read. (As a side benefit, you’ll enjoy reading it.)
By reading this book, you’ll not only gain design patterns knowledge, you’ll get an excellent discussion about architecture in general, and a great OO design discussion.
This book is broken up into eight different sections. The three sections that I enjoyed the most (major part of the book) are architectural patterns, design patterns, and patterns and software architecture discussion.
In the architecture patterns section, the authors have an excellent discussion about the Layers pattern, the Broker pattern, MVC, and Presentation Abstraction Control. I especially enjoyed the Layers and the Broker pattern. (My understanding of the Layers pattern was a little different before reading this book.)
In the design section, I found the following especially valuable Whole-Part, Master-Slave, Forwarder-Receiver, and Client-Dispatcher.
The discussion about software architecture in general and about object-oriented design in chapter 6 is one of the best. It’s always good to refresh your mind how your project should be structured, the qualities it should have. Always valuable.
This is a must read if you’re into architecture and design. You will become better at it by reading (and implementing) the patterns cointained in this book. One of my most valuable books.
Patterns of Enterprise Application Architecture
by Martin Fowler
Date Read 8/2006
Excellent patterns book. Written in a pragmatic language.
Fowler talks about patterns that relate to domain logic, remote services, data source and more. Even though you probably heard a lot of the patterns discussed in this book (if you’ve been following patterns), you will learn from this book.
Fowler presents the patterns in an interesting way. He tells you how he used it, what worked and did not work for him. He gives you a lot of insight, which in the pattern world, is very important I think as it gives you the context you can use the pattern. It’s good to see what problems he went through, the issues with the potential solution. This book gives you exactly that.
The book has two sections, the first, around 100 pages, is where he discusses the patterns and tells you when to use it. The section about layering the architecture is excellent. The overall section is quick to read. After reading this section, you basically read the whole book.
The second section is the pattern reference where all of the patterns are listed.
The best thing in the book is the author’s pragmatic language and very good, simple examples
This is an important book in my architecture/design library. I plan to re-read this book every year or so, in addition to having it on a side as a reference.
Beyond Code: Learn to Distinguish Yourself in 9 Simple Steps!
by Rajesh Setty
Date Read 4/2006
This book is similar to My Job Went To India. However, it’s shorter and reads smoother. It focuses mostly how to improve yourself; how to distinguish yourself. The author has been there, and he tells interesting stories. He has excellent quotes in each chapter. Excellent book recommendations on the back.
Even though a lot of the information can be found elsewhere, the author presents it in an interesting way.
My Job Went To India
by Chad Fowler
Date Read 4/2006
When I first looked at the book, I judged it by the title. I thought, what a stupid title. I did not even look into it. But then I saw recommendations from some people and overall good reviews. I jumped in, bought it, and read it.
If you are scared that your job might go to India, this is a required book for you. Otherwise, you will find a lot of good tips and valuable information that will help you become a better developer.
This book is a quick read. It cointains short 1-2 page chapters — 52 of them. Or you can call them “short lessons.” As I read, I kept telling myself: I need to do that, or I need to do that more often. Some info is common sense, but it serves as a good reminder.
Don’t Make Me Think
by Steve Krug
Date Read 3/2006
This is a required reading for UI designers, web developers, and very useful for web users. That covers almost anybody, right? Written in a style that is accessible to anybody, so why not? Anywhere you fit in that group, you will benefit.
Think about yourself as a web user. When you visit a new site, what happens? Do you spend a lot of time figuring out where everything is, or do you quickly scan it then if you find you’re looking for, you click on it. I certainly follow the latter. And I’ve gotten frustrated a lot of times when a site is making it hard for me to see where I am, what the site is all about. I give up a lot of times. But I know, now, because of the book, that the site is badly designed. On the other hand, I appreciate the sites that just seem right instantly.
This book is very valuable. I learned how users browse (they scan). I learned what users don’t like (they don’t like fancy stuff). I learned what users like (standard, intuitive interfaces). I became a better user because I see this when I browse. I became a better developer, because I know that users don’t think and I try to make it as easy as possible for them. I think about that when I design an interface.
This is an excellent book. It is a quick read (you can even read it in a bookstore in one or two sittings). I bought the second edition, but it doesn’t differer too much from the first. This is the best, most intutive, and the shortest book on UI I’ve read.
I came across a list of Five books every Java developer must own by Rob Sanheim. I commented on the list. But the list got me thinking. What are the books that I consider the “must have” books? Today’s Javalobby newsletter just added to the fire. I had to create the list. So here it is.
1) Effective Java, Joshua Bloch
A lot of people just code in Java, without being aware of the implications. This book clears out those implications.
2) Code Complete 2, Steve McConnell
This book will make you a better programmer. Enough said. My favorite.
3) Refactoring, Martin Fowler
It is getting a little old, but it contains invaluable information on good design, code smells, and more.
4) Design Patterns, GoF
The best book on patterns, though not an easy one. Might want to get the Head First Design Patterns to help you.
5) Core J2EE Patterns, Deepak Alur, Dan Malks, John Crupi
You have to know GoF patterns if you call yourself a good programmer. You have to know Core J2EE patterns if you want to be a good Java programmer.
6) Agile Software Development: Principles, Patterns, and Practices, Robert Martin
Not an easy book, but a best book on Agile, good Object Oriented programming, and patterns.
7) Applying UML and Patterns, Craig Larman
Java is an Object Oriented language, but a lot of people still treat classes as data structures. Learn what an object, and OO programming is all about.
8) Pragmatic Programmer, Andrew Hunt, David Thomas
Contains sound practices, good advice. It will make you a better programmer.
9) Facts and Fallacies of Software Engineering, Bob Glass
See what works in software engineering, and what doesn’t. Bob Glass explains it best.
10) Don’t Make Me Think, Steve Krug
A great little book, great when you’re involved in UI.
I have not read these, and that’s why I have not put them in my original list, but the books below should be on your must-read list.
Peopleware, Tom Demarco, Timothy Lister
Domain Driven Design, Eric Evans
The Timeless Way of Building, Christopher Alexander
Patterns of Enterprise Application Architecture, Martin Fowler
Five books every Java developer must own, Panasonic Youth blog
If you have been active in the software world, you probably have read most of the articles that are in this book (I had read around 40-50% before reading this book). In that case, this book will not be as beneficial to you, but you’ll enjoy it.
On the other hand, if you don’t know who Joel Spolsky is, or Eric Sink, or Paul Graham — this is a must read for you! You will get introduced to some of the finest writers in the software domain. This book will help get on track.
The one essay that I had not read before, and that left the most lasting impression on me is the EA: The Human Story, which talks about the horrible working requirements in the EA — the computer gaming company. Wow.
The article on outsourcing is great. Most of the articles are high quality. Most are worth reading.
It’s a weekend book. It’s a book that you take with you to the beach. I read the whole book while on vacation in Spain — it’s not technical, easy to read.
Great stuff, Joel.
If you don’t feel like buying the book, you can find the whole list with the links to all of the articles here.