Programming

David Astels , Test Driven Development: A Practical Guide, Prentice Hall, 2003; ISBN 0131016490.
A tutorial on test-driven development.

Kent Beck , JUnit Pocket Guide, O'Reilly, 2004; ISBN 0596007434.
The JUnit testing framework and how to use it.

, Smalltalk Best Practice Patterns, Prentice Hall, 1996; ISBN 013476904X.
Patterns for small-scale design and communicating through your code.

, Test-Driven Development: By Example, Addison-Wesley, 2002; ISBN 0321146530.
An introduction to test-first programming and incremental design. The best feature is the list of TDD patterns.

Kent Beck and Erich Gamma , "Test Infected: Programmers Love Writing Tests," in Java Report, July 1998, volume 3, number 7, pp. 3750.
Writing automated tests with JUnit, the Java version of the xUnit testing framework.

Jon Bentley , Writing Efficient Programs, Prentice Hall, 1982; ISBN 0139702512.
Cures for the "it ain't gonna be fast enough" blues.

Edward Dijkstra , A Discipline of Programming, Prentice Hall, 1976; ISBN 013215871X.
Programming-as-mathematics. Dijkstra searches for beauty through programming.

Eric Evans , Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley, 2003; ISBN 0321125215.
Lays out a pragmatic road map to clearer communication between business and technical people.

Brian Foote and Joe Yoder , "Big Ball of Mud," Pattern Languages of Program Design 4, edited by Neil Harrison, Brian Foote, and Hans Rohnert, Addison-Wesley, 2000; ISBN 0201433044.
What happens when you don't invest enough in incremental design.

Martin Fowler , Analysis Patterns, Addison-Wesley, 1996; ISBN 0201895420.
A common vocabulary for making analysis decisions. Analysis patterns help you understand business structures that impact software development.

Martin Fowler , ed., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999; ISBN 0201485672.
A definitive reference for refactoring.

Martin Fowler and Pramod Sadalage , "Evolutionary Database Design," January 2003, http://www.martinfowler.com/articles/evodb.html.
A simple strategy for incrementally designing databases.

Erich Gamma, Richard Helms, Ralph Johnson, and John M. Vlissides , Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995; ISBN 0201633612.
A common vocabulary for making design decisions.

Joshua Kerievsky , Refactoring to Patterns, Addison-Wesley, 2004; ISBN 0321213351.
Bridges the gap between design patterns and refactoring. Useful for learning how to design incrementally.

Donald E. Knuth , Literate Programming, Stanford University, 1992; ISBN 0937073814.
A communication-oriented programming method. Literate programs, while difficult to maintain, remind us how much there is to communicate.

Steve McConnell , Code Complete: A Practical Handbook of Software Construction, Second Edition, Microsoft Press, 2004; ISBN 0735619670.
What you need to know to be a professional developer. Weighs how much care you can profitably put into coding.

Bertrand Meyer , Object-Oriented Software Construction, Prentice Hall, 1997; ISBN 0136291554.
Design by contract is an alternative or extension to unit testing.

David Saff and Michael D. Ernst , "An Experimental Evaluation of Continuous Testing During Development," in ISSTA 2004, Proceedings of the 2004 International Symposium on Software Testing and Analysis (Boston, MA, USA), July 12-14, 2004, pp. 76-85.
Continuous testing provides more continuous feedback while programming.