References
[1] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
[2] Christopher Alexander, Sara Ishikawa, and Murray Silverstein, A Pattern Language: Towns, Buildings, Construction. Oxford University Press, 1977.
[3] Martin Fowler, et al., Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[4] Joshua Kerievsky, Refactoring to Patterns. Addison-Wesley, 2004.
[5] Kent Beck, Test Driven Development: By Example. Addison-Wesley, 2002.
[6] Robert C. Martin, Agile Software Development: Principles, Patterns, and Practices. (Prentice Hall, 2002.) Clean Code: A Handbook of Agile Software Craftsmanship (Prentice Hall, 2008.) Check out The Robert C. Martin Clean Code Collection (Prentice Hall, 2011) for a set of two eBooks on producing really clean code.
[7] For example, see Pavel Mitin's page object slideshow.
[8] Gerald M. Weinberg, The Secrets of Consulting: A Guide to Giving & Getting Advice Successfully. Dorset House, 1986.