Design Patterns
This is a must have book for the object oriented programmer. Often, when writing software, people come up with the same good ideas to accomplish certain things. This book documents those recurring designs. You may have written some of these designs yourself, without realizing it.