What is the best non software development related book that you think each software developer should read?
Note, there is a similar, poll-style question here: What non-programming books should programmers read? [1]
Update: Peopleware is a great book, must read, no doubt. But it is about software development so does not count.
Update: We ended up suggesting more than one book and that's great! Below is summary (with links to Amazon) of the books you should consider for your reading list.
...to be continued.
Godel Escher Bach [1] by Douglas Hofstadter [2].
[1] http://en.wikipedia.org/wiki/Godel,_Escher,_BachDon't Make Me Think by Steve Krug [1]
It's a book for web designers on usability, but the lessons learned here are crucial in understanding how to make great UI for both web and standalone applications.
[1] http://rads.stackoverflow.com/amzn/click/0789723107Zen and the Art of Motorcycle Maintenance:
http://en.wikipedia.org/wiki/Zen_and_the_Art_of_Motorcycle_Maintenance
For an exploration into the meaning of quality.
The Design of Everyday Things [1] by Donald Norman
[1] http://rads.stackoverflow.com/amzn/click/0385267746As a programmer, I often have to organize visual content. That's what this small book's about.
[1] http://rads.stackoverflow.com/amzn/click/1566091594I enjoyed Hackers and Painters [1] by Paul Graham [2]. It's entertaining, informative, and thought provoking.
[1] http://rads.stackoverflow.com/amzn/click/0596006624Off the top of my head...
And to finish. An amazing video [12], also from the TED talks [13], that shows how much we don't know about this beautiful, amazing, wonderful planet!
Reap these righteous riffs and enjoy!
[1] http://rads.stackoverflow.com/amzn/click/0713999896Slack by Tom DeMarco is more recent than Peopleware. I would recommend:
The Goal by Eli Goldratt. The theory of constraints can be used to solve many problems in software engineering.
Here Comes Everybody [1] by Clay Shirky. How to organise without organisations.
Peopleware. (Ok, didn't read the question fully...How about "Good to Great", that is a good read about how business should work)
The "Business of Software" by Erick Sink is very good. Erick himself recommends "Crossing the Chasm", and though I have not read it myself, Erick's synopsis of the book was very thought-provoking.
Now, Discover Your Strengths [1]
I'm a big fan of this and several other books by the Gallup Management Journal. Many companies take the approach to career development and training that you must figure out your weaknesses and somehow compensate for them. If you are someone who's not good at communicating, they'll send you to a communication class. If you're a manager who can't manage, they send you to a management class. By studying thousands of successful professionals and organizations, the Gallup folks observed success comes when you focus on strengths instead of covering up weaknesses.
Along with the book, you take something like a personality test that will help you find in what areas you best perform. The book then describes how you can be much more successful by focusing on those strengths and incorporating them more into your daily routine.
[1] http://rads.stackoverflow.com/amzn/click/0743201140Systemantics: How Systems Work and Especially How They Fail [1] by John Gall.
[1] http://rads.stackoverflow.com/amzn/click/0671819100I quite enjoyed In search of stupidity which I've read a couple of times...
Synopsis from Amazon:
In Search of Stupidity: Over Twenty Years of High-Tech Marketing Disasters, Second Edition is National Lampoon meets Peter Drucker. It's a funny and well-written business book that takes a look at some of the most influential marketing and business philosophies of the last twenty years. Through the dark glass of hindsight, it provides an educational and entertaining look at why these philosophies didn't work for many of the country's largest and best-known high-tech companies. Marketing wizard Richard Chapman takes you on a hilarious ride in this book, which is richly illustrated with cartoons and reproductions of many of the actual campaigns used at the time. Filled with personal anecdotes spanning Chapman's remarkable career (he was present at many now-famous meetings and events), In Search of Stupidity, Second Edition examines the best of the worst marketing ideas and business decisions in the last twenty years of the technology industry. The second edition includes new chapters on Google and on how to avoid stupidity, plus the extensive analyses of all chapters from the first edition.You'll want to get a copy because it Features an interesting preface and interview with Joel Spolsky of "Joel on Software" Offers practical advice on avoiding PR disaster Features actual pictures of some of the worst PR and marketing material ever created Is highly readable and funny Includes theme-based cartoons for every chapter
How to solve it
[1].
by
Pólya
[2]
Currently, I'd be leaning towards Concrete Mathematics [1].
[1] http://rads.stackoverflow.com/amzn/click/0201558025I've suggested this before on a similar post, but How to win friends and influence people is a must for all people in technical roles that have to deal with non-technical people every day. It's very old (1930s), but all the lessons inside are still highly relevant.
For fiction I would suggest anything by Charlie Stross [1] is a must, in particular The Atrocity Archives, The Jennifer Morgue (both about a Lovecraftian spy IT guy) and Halting State (starts with a bank robbery inside an MMO).
[1] http://en.wikipedia.org/wiki/Charles_StrossNotes on the Synthesis of Form [1] by Christopher Alexander - Alexander's insights are wonderful, the Pattern Language and other books are also very good and eventually the much later Nature of Order series is more mature and the theory has progress to become more holistic - I think his work is fundamentally more meaningful to read to understand patterns than books written about patterns in software - which tend to bypass the practitioner internalizing the fundamental motivations of patterns.
Are Your Lights On?: How to Figure Out What the Problem Really Is [2] by Donald C. Gause and Gerald M. Weinberg - great thinking about problem-solving and the nature of people's perceptions about problems.
I emphatically second the earlier recommendation of Normal Accidents - that is a tremendous book for understanding the (unexpected) behavior of complex systems.
[1] http://rads.stackoverflow.com/amzn/click/0674627512Introduction to General Systems Thinking [1] or at least one other book by G. M. Weinberg [2] that induces you to think about how you think about problems.
[1] http://www.geraldmweinberg.com/Site/General_Systems.htmlI see that all the obvious answers are already here. I'm taking a slightly different slant on the question in that I am listing books that make you think about things (not all computer/development relate) in the belief that just thinking about the world around you at a slightly different level will make you a better developer.
Godel, Escher, Bach by Douglas R. Hofstadter to make your head hurt and expand.
Zen and the Art of Motorcycle Maintenance by Robert Pirsig to experience thinking philosophically about 'quality'.
Accelerando by Charles Stross to see where we're going, although I could just about finish it.
The Soul of a New Machine by Tracy Kidder, computers, excitement and history.
The Fountainhead. [1] A story about an architect, but everything to be learned from it readily applies to software development.
[1] http://rads.stackoverflow.com/amzn/click/0451191153I strongly recommed Atlas Shrugged [1] by Ayn Rand. I saw The Fountainhead mentioned also, but I really see Atlas Shrugged as the most accurate telling of our society today and how we as the thinkers and creators fit into it.
[1] http://rads.stackoverflow.com/amzn/click/0452011876On Writing [1] by Stephen King is pretty awesome.
[1] http://rads.stackoverflow.com/amzn/click/0743455967The Road to Reality by Roger Penrose [1] Because physics and mathematics are inspiring, if you're that way inclined.
[1] http://rads.stackoverflow.com/amzn/click/0679454438So much effort is spent adding features to various sites and apps. Sometimes one good way to do something is better than several different ways.
[1] http://rads.stackoverflow.com/amzn/click/0060005696Life of Pi: http://en.wikipedia.org/wiki/Life_of_Pi
Maybe it's considered out of date, but he actually predicted the shift to "knowledge" workers (many, many years ago), which is really the core of development. His clear definition of what a business really is still resonates with me:
There is only one valid definition of business purpose: to create a customer
His writing tends to be more philosophical, but there are some real gems in there.
Information is data endowed with relevance and purpose. Converting data into information thus requires knowledge. And knowledge, by definition, is specialized.
Edit:
Well, let me be a bit more specific. Many people think The Effective Executive [2] is the quintessential Drucker, but I enjoyed Management [3] more.
[1] http://www.amazon.com/exec/obidos/search-handle-url?_encoding=UTF8&search-type=ss&index=books&field-author=Peter%20F.%20DruckerThe Four Hour Work Week by Tim Ferris. Turn off the email!
Someone already got Peopleware and GTD so how about:
How about the Queer Eye book [1]?
I'm serious. Programming skills will only get you so far in your career. After you reach the point of "senior software architect" or whatever your company calls its top developer, there's really nowhere else to go if all you have to offer is programming proficiency.
I wrote an entire blog article [2] about this a short while ago that received mixed reviews, but I stand behind it. Like it or not, at some point in your career you will hit a point where in order to advance you're going to need to be able to effectively interact with people. And, like it or not, people make judgments about you based on your appearance. First appearances can make or break you; it's tough to convince a potential client to hiring you to take care of their software needs when you can't even take care of yourself.
[1] http://rads.stackoverflow.com/amzn/click/140005446XAs an alternative way for building things evolution is one thing we must understand (in the meanwhile you'll also learn how we happened). I suggest The blind watchmaker [1]
[1] http://rads.stackoverflow.com/amzn/click/0393315703There is another masterpiece by Hofstadter, on the line of GEB [1] but more technical !
Metamagical Themas: Questing For The Essence Of Mind And Pattern [2]
I would personally rate it better than GEB [3] ! ....
[1] http://rads.stackoverflow.com/amzn/click/0465026567The lord of the rings...