Part of the Practical IDL Programming
Complete: A Practical Handbook of Software Construction, by Steve McConnell
Code Complete is about building well-crafted software, and it contains the kind of wisdom that usually takes 10 years or more on the job (not in school) to accumulate. When you have a question such as "What are some guidelines for naming variables?", or "How do I decide if this section of code should be separated into a function?", McConnell offers clear and sensible advice, backed up by hard data accumulated from numerous studies of software development projects. If I could only recommend one programming book to someone just starting out, this would be it.
Pearls, 2nd Ed., by Jon Bentley
First published in 1985, this book gets the mental cogs turning as it explores the process of solving problems via computer programming. There are many classic stories about breaking down a problem into it's fundamental components; when and when not to optimize (what about getting the right answers first?); and how to decide if a computer is even the appropriate tool to fix a problem. Bentley encourages the reader to think first before diving in to start coding.
Underground Guide to Unix, by John Montgomery
This book is designed for those of us who want to know enough about Unix to get the job done, and that's all. It's not a 'dummies' book. It assumes you know enough about Unix to log in and do some simple things, and that you'd like to move to the next level. Numerous tables are included (e.g. top 10 shell customizations, the 12 loveliest vi commands) to distill crucial information. The section on using rsh to control remote tape drives made the purchase worthwhile for me. Montgomery doesn't try to tell you everything there is to know about Unix; he just tells you what you really need to know.
Face: The Essentials of User Interface Design, by Alan Cooper
When I wrote my first graphical user interface, I was much more concerned with the mechanics of widget creation and event management than whether the application was easy to use. Reading Cooper's book gives the bigger picture, the essence of which is this: the user matters most. We've all been insulted by rude applications which interrupt our work flow with idiotic dialog boxes and error messages. Cooper gives numerous examples of ways to make users feel stupid, and presents a strong case that the top priority of a GUI application should be to not make the user feel stupid. This book is essential reading for anyone building GUI applications.
Explanations: Images and Quantities, Evidence and Narrative, by Edward
The third volume in Tufte's legendary series is highly relevant to the kinds of information displays that can be created in IDL. You can look to this book for inspiration or for real world ideas. I found the section on color shading of topographic maps to be very useful when creating global displays of satellite data that emphasize real trends, rather than artifacts of a particular color scale.
Revelations: Graphical Tales of Fate and Deception from Napoleon Bonaparte
to Ross Perot, by Howard Wainer
This book discusses the myriad ways that charts and graphs can be done poorly or done well. In particular, it shows how graphs can be used intentionally or inadvertantly to muddy the facts. I guarantee you'll never look at a pie chart the same way after reading this book. Required reading for those intending to produce legible and informative graphs.