Programming Books to Read
Mindstorms: Children, Computers, And Powerful Ideas
Effective Java, 2nd edition, by Joshua Bloch (Prentice Hall, 2008) Although it’s about Java, many of the principles apply to all languages.
Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Addison-Wesley Professional, 1994)
Programming Pearls, 2nd edition, by Jon Bentley (Addison-Wesley Professional, 1999)
High Performance Web Sites, by Steve Souders (O’Reilly, 2007). This book is noteworthy because it describes a number of ways to optimize a website without writing much code.
Joel on Software: And on Diverse and …, by Joel Spolsky. Some of the best articles from http://www.joelonsoftware.com/. Spolsky writes about many aspects of software engineering and has an insightful take on many related topics. Be sure to read “Things You Should Never Do, Part I,” and “The Joel Test: 12 Steps to Better Code.”
The human inteface: new directions for designing interactive systems - Jef Raskin
Visual explanations: images and quantities, evidence and narrative - Edward Tufte
Things that make us smart: defining human attributes in the age of the machine - Donald Norman