We're thinking of starting up a little bit of a "library" here at work for programming/development books, to have some shared books available as references.

Any suggestions on titles to put on the list? We mostly concentrate on Java and web application development, using Spring, Web Services, SQL, etc.

My thoughts so far:

+9  A: 

One good book which I found very helpful is The Pragmatic Programmer - should be in any developer's library (or work library).

Phill Sacre
+1  A: 

The art of software testing by Glenford J. Myers.

+13  A: 

Why don't you get a couple of Safari licenses instead? That way several people can read the same book and you can choose from many more books

In case you want a list see 5 Books Every Developer Should Read

Two people rarely want to read the same book at the same time. So this is only useful with higher numbers of people. Like in a university.And after all - a book is still a better thing to bookmark with notes and also _show_ to each other. Not to mention to read by oneself.
ever heard of print?
I agree with Leonidas, but I like the Safari recommendation as well - might be a cost effective way to give us access to many books all at once
matt b
This is a good suggestion. This gives you access to hundreds of books to peruse at your leisure. But it also allows you try before you buy. Keep a safari subscription for awhile and only buy the physical books after you've looked at them on Safari to determine their value.
+5  A: 


GOF design patterns

code complete

Unix power tools (best general unix book I've ever come across)

Steve B.
+1 for power tools books
Andy White
+13  A: 

Code Complete. It should be on every programmer's library.

Gonzalo Quero

If you do modeling in UML: some book on UML (obviously). Nice to look for some constructs.

I like this book from Booch et al.

+2  A: 

Pragmatic Unit Testing (link is jUnit, but nUnit is also available).

+4  A: 

Java Puzzlers by Joshua Bloch and Neal Gafter would be a nice compliment to Effective Java.

Java Puzzlers are, as the title suggests, a bunch of puzzles where the answer may seem to be a certain way, but due to some subtleties in the language, it doesn't behave as one expects. Each puzzle has an answer and a detailed explanation along with references, so not only is it a fun read, it's definitely informative.

A sample chapter is available from the book's website.

+1  A: 

I would not recommend books about a something that changes fast, I have for example some books about Spring and I don't use them anymore because they're about Spring 2.0 :(

As you suggested I would recommend Effective Java and Head First Design Patterns. I also liked a lot Implementation Patterns from Kent Beck...


About Face 3: The Essentials of Interaction Design by Alan Cooper, et al.


If you have the budget, you should consider buying online book subscriptions instead of dead tree. We have Safari books online at my work place, and I just totally <3 it. Safari has just about every book that everyone has suggested here so far. I have not seen the bill, so I'm not sure what the cost is.

It doesn't seem to have much on older technologies, and every big project that's central to company operations perforce is built at least partly on older technologies. For example, I had to buy books on MFC to supplement Safari.
David Thornley
Any idea how a corporate subscription works? Are all employees given a single login to use? Can multiple employees log on at same time?
matt b
@David Thornley: I know what you mean about not having much on older technologies. I still have piles of dead tree at home for 90's [email protected] b: I don't know if all employees are permitted to use one account. Sometimes I log on with my account from multiple workstations and never had problems.
+1  A: 

The Safari recommendations are good. You may want to consider ACM memberships for your development staff as well. The annual fee includes access to a subset of Safari as well as Books24x7.

Scott A. Lawrence
+1  A: 

It seems to me that you've a ton of programming books, but I think you need more than that. For instance, I guess your work involves networks, databases, possibly user interface design, and so on.

I'd steer clear of books related to particular implementations of technology. Far better to look at books recommending best practises etc. I've thrown out more books than I care to think about relating to particular versions of Java/Perl/HTML etc. However my copies of The Pragmatic Programmer and Code Complete (linked elsewhere in this conversation) remain timeless.

For networks I'd recommend Steven's TCP/IP Illustrated. Having a networking book is invaluable - I find networking to be one of the most comprehensively misunderstood aspects of the environments we work in nowadays.

Brian Agnew
+2  A: 

Brian Goetz, author of Java Concurrency in Practice, states:

J2EE Design and Development, which is one of the best books I've read on Java development, J2EE or not.

I agree, this is one of the best book about Java development, and is where the Spring Framework is introduced.

Julien Chastang

If you are feeling baffled by Java Generics: Java Generics and Collections by Maurice Naftalin, Philip Wadler

Julien Chastang
+1  A: 
+1  A: 

All of the applicable O'Reilly pocket References.

They are generally worth their weight in gold and at under £6 each, cheap.


What about something about web design and CSS?

+3  A: 

The other suggestions above are great.

Here are mine:
Mastering Regular Expressions. (Friedl)
The Mythical Man Month (Brooks)
Programming Pearls (Bentley)
Working Effectively with Legacy Code (Feathers)
(which I see now someone else also recommended)

Also, as others have recommended, you can't beat a Safari subscription.


Purely Functional Data Structures

The books that you will return to most often are the ones that contain useful data structures and good advice on choosing appropriate data structures for a given task.

+1  A: 

Getting Things Done by David Allen.

This is a very short book about personal productivity and everybody in your office ought to read it at least once.


Just stumbled across this link: Essential Java Resources.

Hope it helps out.


The C++ Programming Language by Bjarne Stroustrup

The C Programming Language by K & R

Scott Mayers Book Series

Martin Fowler Books

+3  A: 

Meta suggestion: give each developer an annual budget for books. It will boost morale, and you will build up a library appropriate to your team's specific area of practice and peripheral interests. Consider setting up a lightweight procedure to prevent duplicates or a catalog so borrowed things won't get lost.

Doug McClean
This is a great idea, if the management approves - thanks!
matt b