tags:

views:

2885

answers:

69

I know, that questions regarding books have been asked before. What I'm after is what books are "must haves" on your bookshelf?

You know, those books that, if you don't have a copy, it makes you feel uncomfortable. They keep vanishing because people keep, er, "borrowing" them.

I read Ed Yourdon's The Decline and Fall of The American Programmer and while the book was fairly interesting, his Appendix on what he has on his bookshelf, and why, is quite a revelation. Several of the books on his list are not directly concerned with coding but in the appendix he goes on to explain why they are on his list, e.g. Robert Pirsig's book Zen and the Art of Motorcycle Maintenance

This idea also comes from Peter Coffee's Agile 06 keynote address where he relates his choice of books back to the Agile Manifesto (mp3).

Here are my must haves:

  1. Thriving on Chaos (1st ed.) Tom Peters
  2. Systemantics: How things work and how they fail (1st ed.) - John Gall
  3. The Psychology of Computing Programming - Gerald Weinberg
  4. K & R C

What are your must haves?

+7  A: 

"The Good Parts", written by Douglas Crockford on JavaScript.

roosteronacid
A: 
  1. Learning to tango with D - Lars Igesund and the other developers of tango
  2. Thinking in C++ - Bruce eckel
  3. Expert F# - Don Syme, Adam Granicz, and Antonio Cisternino
  4. Real World Haskell - Unknown
Rayne
+7  A: 

Martin Fowler's Patterns of Enterprise Application Architecture

Andrew
+19  A: 

I have a lot books on my shelf, some of which I think are just there to look good. There's one I often find myself turning back to though:

The Mythical Man Month by Fred Brooks

Paul Dixon
+6  A: 
matli
+41  A: 

Code Complete by Steve McConnell

Andrew
Absolutely. Even our Linux guy / Microsoft hater in the company recommends this Microsoft Press Book ;) And in contrast to many other programming books, it is available in translated versions.
OregonGhost
Good call! I think I prefer the first edition.
Rob Wells
Rob: Why do you prefer the first edition?
I find that the first edition has a different feel to the writing. I can't really describe it beyond that.
Rob Wells
+1  A: 

Code Complete, Second Edition by Steven McConnell

Maurice
+3  A: 

Code Complete of course...

and I'm going to be controversial and say the Dragon book as well!

kronoz
Dragon book is great, but not everybody writes compilers.
Gamecat
Oooh. yes. And I just bought yet another copy of the dragon book.@gamecat, it goes so much further beyond compilers. I've applied various bits from this book to projects and seen spectacular improvements, e.g. DB lookup improvements from 49 minutes to 15 seconds!
Rob Wells
Well vote it up then Rob :-)@Gamecat - Read http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
kronoz
+1  A: 
  • Martin Fowler's Refactoring
  • Everything by Joe Celko
  • Everything by Christopher Alexander
  • Most of the O'Reilly JavaScript and DHTML References and Cookbooks
Cade Roux
+3  A: 

Story of philosophy by Will Durant

bgbg
A: 

201 Principles of Software Development by Alan Davis

Cade Roux
+7  A: 

Programming Pearls by Jon Bentley

Cade Roux
Don't forget the famous mergesort bug in this book <http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html>! (-:
Rob Wells
+17  A: 

Don't Make Me Think - Steve Krug

ginozola
+3  A: 

The C++ Programming Language (Amazon link)

matli
A: 

Assuming this question is about becoming a better programmer, I'll repeat what I said in another thread: beyond a certain level of basic competence, general intelligence is more important than technical knowledge. Read books that broaden your understanding of how the world works, not just about the hot new programming language.

Christopher
+7  A: 
Zsolt Botykai
+1 for unexpected reference to life of pi
MattyW
That's one of the best books I've ever read.
Zsolt Botykai
+1 for the Foundation series
RCIX
+1 For SnowCrash!
Roberto Sebestyen
+38  A: 

Pragmatic Programmer

Definitely! BTW Their website is full of great articles as well!
Rob Wells
Excellent book; highly recommended reading.
Rob
+12  A: 
+3  A: 

I think UML Distilled is a great book for UML. And of course The art of programming.

Gamecat
+14  A: 

The Design of Everyday Things by Donald Norman.

Adam Pierce
+4  A: 

So much hidden .NET goodness: CLR via C#

foson
+13  A: 
korchev
+19  A: 
Gary Willoughby
I can never look at that cover without remembering this post: http://www.codinghorror.com/blog/archives/000380.html
Jarrod Dixon
I *really* dislike the cover design of the "Head First" series! Reminds me of some terrible "Learn QBASIC in 21 days!" book that I got as a teenager.
Pete
Never judge a book by its cover. ;o)
Gary Willoughby
+12  A: 

You need to know your limits:

Gödel, Escher, Bach: an Eternal Golden Braid

Peter Parker
I think my brain melted when I read this in university. Definitely gets you thinking though ;)
Kezzer
+3  A: 
Nils Pipenbrinck
+2  A: 

I feel distinctly uneasy if I do not have a readily available copy of Douglas Hofstadter's "Godel, Escher, Bach"

pookleblinky
+5  A: 

a thesaurus is indispensable in helping select good variable/method/class/etc names.

i like this one in particular (USD$6.00):

Roget's 21st Century Thesaurus - In Dictionary Form

just mike
I use http://VisuWords.com, which is an open-source, GUI interface of the Princeton WordNet database.
Jason Jackson
Why is there only one word for thesaurus?
Rob Wells
+2  A: 
drewh
+2  A: 
sebastian
+4  A: 

A must have in my bookshelf is Structure and Interpretation of Computer Programs. Well, maybe not in my bookshelf, as I only have the HTML version stored in my computer.

It is one of those books that changes the way you think about computer programming. The complete text, assignments and instructor's resources are available on its site. It´s true that the book is showing its age, but the fundamental concepts are still an enlightening read.

Another "must have" of mine is The Business of Software by Michael Cusumano. It discusses business models for software companies and software development issues from a managerial point of view. Always good to have one of these in your bookshelf to stay in the pragmatic side after reading a book like the SICP.

Luiz Penkal
+2  A: 

Chicago Manual of Style. I use it frequently. You gotta be able to write about your designs and your code.

(P.S. "You gotta" is probably not an acceptable construct in CMS.)

mxg
+7  A: 
Russell Myers
+1  A: 

Working Effectively with Legacy Code by Robert Martin. Useful even when writing new code, since it helps you to keep it from turning into the sort of code that everybody hates to maintain.

eschercycle
+3  A: 
Russell Myers
+2  A: 

C: A Reference Manual

It's not a book for learning C (read K&R for that), it's the best and most up to date piece of C reference material I've found.

+1  A: 

Oracle PL/SQL Programming by Steve Feuerstein.

I know after months away from PL/SQL if I can't remember something Steve will help me.

Steve Bosman
+3  A: 
Jason Jackson
+5  A: 
Vivek
+3  A: 

Jared Diamond's Guns, Germs, and Steel. It's not a programming book, but you should read it anyway.

MusiGenesis
+1 Great book indeed
Robert Gould
and after that move onto the Rise and Fall of the 3rd Chimpanzee
MattyW
@MattyW: sorry, Chimpanzee is actually kinda crappy. I'm a former Anthropologist by trade, and Diamond got a bunch of stuff wrong in that one. Nobody's perfect (Collapse is pretty bad, too).
MusiGenesis
+1 One of the best 3 books I have read in my life, I would say. A real eye-opener that every person should read, and highly interesting. Thanks to Pär who gave this to me for my birthday.
Tom Bartel
+7  A: 

I can't believe I'm the first to say this but Peopleware, Duh! Owning something from Katty Sierra is recommended too.

ilcavero
+1  A: 

What? No one has mentioned Joel Spolsky's crown jewel? I'll do then: "Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity"

Each time I read it I find something to learn!

Joe Pineda
+5  A: 

I have been doing a fair amount of maintenance of late in consulting engagements. I picked up this book on a number of recommendations from the Development community.The book summary can be found at Working Effectively with Legacy Code by author and Object Mentor fellow Michael Feathers, whom is a colleague of the infamous 'Uncle' Bob Martin. A definite must to any professional developer's toolbox!

JohnL
+2  A: 
  • Pragmatic Programmer
  • Facts & Fallacies
  • K&R C
  • Don't make me think
  • Peopleware

Too bad that it's really hard to get Code Complete 2nd E. here in Germany, I would love to read the book.

ak
+2  A: 

I'm surprised Rapid Development didn't make it on anyone's list. It is on mine: http://www.amazon.com/Rapid-Development-Taming-Software-Schedules/dp/1556159005

torial
+2  A: 

Bertrand Meyer's Object-Oriented Software Construction

A: 

Effective C# is invaluable to me. I look forward to the sequel coming out this month.

http://www.amazon.com/Effective-Specific-Improve-Software-Development/dp/0321245660/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1223142349&amp;sr=1-2

torial
+2  A: 

Joe Celko's SQL for Smarties.

swapnonil
+2  A: 

Effective C++, Third Edition by Scott Meyers

A: 

C++ Pointers and Dynamic Memory Management by Michael Daconta

+8  A: 

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series) by Martin Fowler, Kent Beck, John Brant, and William Opdyke

+2  A: 

If you code C++ there are several must haves.

  1. Exceptional C++ - Herb Sutter
  2. More Exception C++ - Herb Sutter
  3. Even more Exception C++ - Herb Sutter
JaredPar
+3  A: 

Hitchhiker's Guide to the Galaxy by Douglas Adams. No true programmer can live without it.

Ola Eldøy
+1  A: 

Algorithms in C++ by Robert Sedgewick. Covers a lot of basic things (like many of the different sorts and trees) that you will probably never use, but now you will know why. :-)

staticsan
+2  A: 

Bertrand Meyer's Object Oriented Software Construction, 2nd Edition

grettke
A: 

How to Design Programs An Introduction to Computing and Programming

Matthias Felleisen Robert Bruce Findler Matthew Flatt Shriram Krishnamurthi

grettke
+2  A: 

Wizard Book n. Hal Abelson's, Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs (MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book.

grettke
+1  A: 

Code complete, second edition by Steve McConnell

+4  A: 

Domain Driven Design, by Eric Evans

alt text

Dala
+1  A: 

An Introduction to General Systems Thinking. Gerald Weinberg.

Whimsically written, profoundly true.

Leonard
+1  A: 

A Pattern Language, Christopher Alexander et al

The architecture book that inspired the software pattern movement. An incredible inspiration, and an affirmation of our need to re-think design in every aspect of our world. Right up there with Don Norman's Design of Everyday Things for anyone with aspirations to be a software architect.

Leonard
+2  A: 

HTTP Developer's Handbook

Sergei
+1  A: 

Applying UML and Patterns, by Craig Larman

Nelson Reis
+1 An excellent overview of software development approached as a structured method rather than happy hacking. You may not agree with Larman's recommendations (some of you will prefer less modelling, but hey, UML is in the title, so you've been warned!), but somewhere along the line, you'd better consider the questions he raises when you collaborate on creating software solutions to people's problems.
Pontus Gagge
+1  A: 

Design Patterns

Introduction to Algorithms

OOA/D by Grady Booch

Thinking in C++

Refactoring

Algorithms in C++

[More] Effective C++

Effective STL

MadH
+5  A: 
Jonas Kölker
The most concise programming book I've read. Wish they could all be tis short!
TheSean
Jonas Kölker
+5  A: 
AnnaR
+1  A: 

Think And Grow Rich by Napoleon Hill keeps me coding through DLL hell.

FreshCode