Fog Creek Software
Discussion Board

The bookshelf

There are books that are considered an industry standard, and that you just can't get without.
In management, design, analysis, programming, testing and other fields. For every language and every concept.

What books you consider a must on your shelf?
I am considering on expanding my own..

And while we are on the subject, does anyone actually reads those books, or they just acummulate dust on a shelf at the office?

Eli Golovinsky
Tuesday, November 25, 2003

Although I have quite a few I'd call "must haves,"  the one I'd keep before all others is "Object Oriented Software Construction (2ed)" by Bertrand Meyer.

the scapegoat
Tuesday, November 25, 2003

SPSG (Software Project Survival Guide) is good. You probably won't be enlightened reading it, but it does concisely summarize a lot of things you need a reminder of when working on a project.

Peopleware is good.

Programming Pearls (by Jon Bentley) series is very good, if you can find a copy.

Avoid "World Domination in 21-Days" type books, and books with lots of graphics/screenshots/sources. They rarely have real content, and even those of them that do take too much shelfspace.

Ori Berger
Tuesday, November 25, 2003

And besides having those books, have you guys actually read them? Have you ever succesfully convinced a reluctant peer or subordinate to read one?

Eli Golovinsky
Tuesday, November 25, 2003

Did you see Joel's list?

Tuesday, November 25, 2003

I have had some success with photocopying a chapter and getting my peers to read that... It breaks up the work day, or they can read while they commute if they don't drive.

This is sort of like sharing Dilbert cartoons around the office, but a little longer.

Speaking of industry standard tomes, are you at all familiar with the Project Management Institute's Body of Knowledge (PMIBoK). I know you're in a managerial position, and I was curious if anyone in management actually knows this thing.
Tuesday, November 25, 2003

The ones that survived on my shelf  (a lot of other ones have migrated to "lower" status and carry dust).

Applying UML & Patterns - Larman

An introduction to database systems  - Date

Million Dollar Consulting - Weiss

The pragmatic programmer - Hunt/Thomas

Lateral Leadership - Fisher

The product marketing handbook for software - Chapman

Marketing stripped bare - Forsyth

T-SQL Cookbook
The guru's guide to T-SQL
SQL for Smarties

Managing Software Requirements

Running the professional service firm

The prince - Machiavelli

Art of War - sun tzu

Beyond software architecture

ASP.NET for developers

Adobe Illustrator - classroom in a book

The software project survival guide

Operational marketing

The Mc Kinsey way

Code Complete

Philippe Back
Tuesday, November 25, 2003

What versions of The Price and Sun Tzu do you have, and what value do you gain from them?
Tuesday, November 25, 2003


I have heard about the PMIBOK somewhere, but found (at the time) very little useful information on the subject on the net.

But the net has evolved some. I found a hacked online copy of it and downloading it right now.

If I remember correctly, it referse to prject management in general and not to our industry in particular. But still, probably an interesting read. In the bathroom :)..

Eli Golovinsky
Tuesday, November 25, 2003

I have several hundred engineering books, including practically everything mentioned on all the best-of lists,  but these are the ones I really appreciate the most and have no troubles with:

The C Programming Language
C Traps and Pitfalls
Expert C Programming
Obfuscated C
The Secrets of Consulting
Code Complete
Design Patterns
Effective C++

Ed the Millwright
Tuesday, November 25, 2003

I've read Object Oriented Software Construction three times (the old edition once, the new edition once as a group reading exercise, and the new edition once on my own).  Each time, I've gotten something useful out of the exercise.

The PMBoK is a standard for project management professionals, but in my opinion it way too full of holes to be useful, except to comply with high ceremony project charters.  Operationally, I think it will get you into trouble.

the scapegoat
Tuesday, November 25, 2003

You're right, though I have seen someone who wrote a book focusing on the technology subset of the PMIBOK.
Tuesday, November 25, 2003

PMBoK - Project Management Body of Knowledge is put out by the Project Management Institute ( They run a certification program for project managers (PMP).  An excerpt of the PMBoK is available for download. It's the sort of Capital-M Methodology thing that big companies love but that good software teams laugh at. IMO, you can safely ignore it unless you have an intense need to buffalo your managers. The Microsoft MSF/MOF (Solutions Framework and Operations Framework) material is actually a pretty comprehensive and yet dogma-neutral approach to some of this material. It's a good baseline and the Microsoft imprimatur makes people pay attention to what you are talking about. Lots of whitepapers on the Microsoft site, search under msf and mof. Taking into account the operations side of things is what separates the men from the boys, IMO.

The desert island book (if your only going to read one book, read this one) for software engineering is Steve McConnell's "Rapid Development, Taming Wild Software Schedules." This is the bedrock knowledge for organizing software teams and projects.

"The Pragmatic Programmer" (Hunt/Thomas) and "Writing Solid Code" (McGuire) are very good and more oriented towards programming.

Other than that, it starts to depend on your technology platform and your application domain. If you let us know a bit about these, we can recommend some specific books.

It sounds like you might want to consider having someone come on your site periodically and do some training. It can be invaluable to align the team with a common knowledge base. Based on your previous post, I'm not sure 19-year old short-timer will get that much out of reading McConnell. There's tons of consultants who can evaluate your group and do tailored training programs.

Jim S.
Tuesday, November 25, 2003

Jim, Thanks for the overview, I always suspected this was the case. I always find books like that good for padding documents that are intended to go up the management chain.
Tuesday, November 25, 2003

I highly recommended McConnell's "Code Complete" for those with little experience. I read this book in my senior year at university and it really opened my eyes to "professional" coding. The book is HUGE and dense, but lots of fun. :-D

Tuesday, November 25, 2003

Some unmentioned that are on my shelf (along with most of the above)

1. The Mythical Man Month

Joel recommends this as well. Its an easy read and is both insightful and inspiring. Considered a mainstay of project management.

2. Programming Perl (by Larry Wall)

Not just a perl book. Its great for regular expressions and he goes into a good deal of depth about engine and precedence. This is a great read, especially if you are willing to dig through the Perl source code. Written by the original programmer.

3. UML Distilled

Those of you who don't have time for Booch, Rumbaugh, and Jacobsen will get a good overview of the UML from this one. Very easy reading and well respected.

4. Design Patterns

This was mentioned, but I wanted to STRONGLY reiterate it for anyone getting into design and overview. Its also a light read, and not technically dense. This is THE pattern book.

5. The Statistical Analysis of Experimental Data (Dover)

This and anything else from Dover will give you a solid foundation in mathematics. They were written for a certain audience, but are refreshing for those into math. SAED is particulary useful for people going into analysis and modeling fields. Dover is the standard press for many many math subjects.

6. Anything by Tufte

Anybody designing reports, web pages, and user interfaces owes it to themselves to pick up Tuftes 3 books on the subjects. They are masterpieces and very entertaining reads. Also considered definitive for cognitive science work.

7. The Art of Computer Programming

Need we say more? Knuth is where its at.

8. The Art of Assembly

This is available online. For those of us with a drive to monitor our processor with an oscilloscope, this is one step above that.

9. Processor Books about Intel

More processor level stuff for nerds, try reading the 8080 specs. 8080 bugbook is good, as is MCS-48. Intel related material is what you want to read for processor level implementation.

10. Compilers: Principles, Techniques, and Tools

Aho, Sethi, and Ullman. The Dragon Book (2nd ed.) The compiler principles book.

In general, the Oreilly press does good stuff on system administration and the open source technologies. Wrox is good for Java mainstays. C and C++, look for work by K&R, along with the ancient gurus who built Unix. For modern design work, go to the Rational founders (Rumbaugh, Booch, Grady), and the Gang of Four (wrote Design Patterns.)

Dustin Alexander
Tuesday, November 25, 2003

"The Art of Computer Programming"

Yes, this is certainly appropriate for a 19 yr old newbie with no background in CS. Not!

Dennis Atkins
Tuesday, November 25, 2003

He didn't mention that he was looking for nube material. He wanted to know the mainstays of comp sci, and AoCP is most assuredly one of those.

Most of the books I posted would not be the greatest reads for someone not entertained by technical details.

That said, any 19 year old programmer who read those would be at the top of his class.

Dustin Alexander
Tuesday, November 25, 2003

You're right, he said he wanted must-have books for his own shelf and that does qualify.

Dennis Atkins
Tuesday, November 25, 2003

Mr. Nice

Tom Vu
Tuesday, November 25, 2003

Some books I read through once, a few get read multiple times, and others are referred to as needed.  And there are ones that just collect dust.

DeMarco and Lister's "Peopleware" is one that gets multiple readings and I have spare copies to loan out occasionally.  At one site I worked at, a book discussion group got started and it was the first book read.

As a C++ developer I keep a copy of Stroustrop's "The C++ Programming Langauge" on the shelf, have read most of it, and refer to it as needed.

I have a couple of copies of GOF's "Design Patterns", have read the descriptions of the patterns (but not spent a lot of time on the implementation details), and keep a copy around to refer to when working on projects that use patterns.  At a previous employer a group of developers got together after work to read and discuss this book.

"Numerical Recipes in C" is one I wouldn't be without.  I bought a copy so I didn't have to keep borrowing it.  The amount of use it gets varies with the project.  I don't open it all that much, but when I need it, it is really helpful.  It is not one to read through, but to look things up as needed.

I have Meyer's OOSC, both editions.  I found the first edition helpful in learning OO concepts, but have only read it once.  The second edition was harder to read.  I won't disagree with people who say it is too verbose, especially the second edition, but it is the best I know of on the topic (but there is probably something better that I don't know of).

Tuesday, November 25, 2003

C++:  The Complete Reference by Herbert Schildt - I bought this book in high school.  The cover is falling apart from years of heavy use.  I still refer to it.

UNIX in a Nutshell, O'Reilly & Associates

Design Patterns, Gamma et al

The Non-Designers Design Book by Robin Williams - This is a classic graphic design book, and although it deals specifically with print media, the concepts are applicable to any form of graphic design, including web pages or user interfaces.

The NEMA DICOM standard - If you're not involved in medical informatics, then you won't care about this.  If you are, then this spec is your bible.  Unfortunately, it is an incredibly obtuse read rather like trying to read a novel in which all the nouns are in one chapter, the verbs are in another chapter, etc.  However, its importance is undeniable and there is no substitute that covers the material in sufficient depth.

Linear Algebra and Its Applications by Gilbert Strang

Roget's College Thesaurus - Programming is, at the very core, about the precise application of language.  Well named variables, database tables, etc. make for good readable design documents and code that can be understood by others.

Matt Latourette
Tuesday, November 25, 2003

I'd like to recommend Rodale's Synonym Finder as a competitor for Roget.

Herbert Schildt's book is a good one. It has very clear explanations and proceeds in a very clear, logical order.

clear... clear.. I need to keep my Synonym Finder on hand.
Tuesday, November 25, 2003

For information on analysis of algorithms, read Knuth. There is no substitute, he wrote the bible on it. It's dense, but you can get through it if you want to. Age is entirely immaterial here.

I'll Nth the GoF book recomendation, it's really that good.

Pragmatic Programmer is good reading, though it does reiterate some fairly elementry ideas.

If you do C++ seriously, you need a copy of the C++ Programming Language, and a copy of Meyer's Effective C++ line (and probably a copy of his STL book as well, though I've not read that one).

I've found the Schildt C reference very good, and I imagine his other books are good, too.

I have the C++ for dummies book, but grew out of that one rather quickly.

I have read most of the above books fairly completely (The Knuth and Stroustrup being notable exceptions).

Mike Swieton
Wednesday, November 26, 2003

Dale Karnegie "How to win friends and influence people"

Read this before you die.

someone from the crowd
Wednesday, November 26, 2003

From Sun Tzu, I got great advice and refer to it when a really tricky situation comes in.

It allows me to avoid the "foolish" behaviors leading me directly in a wall.

As for the Prince, I read the standard text and have discovered a book having texts from Erasme, Machiavelli and More. Interesting stuff going from divergent thinking, through realistic thinking (or realpolitik) to visionary thinking. The text has comments about how this could apply to the current economic world. It's an interesting reading grid. It's in french tough.

Philippe Back
Wednesday, November 26, 2003

Another + for UML Distilled, and for the GOF book.
John Lakos, Large Scale C++ Software Design is good, even if you aren't working on systems as gigantic as he is talking about.
Ross Anderson, Security Engineering is really interesting. It covers a wide range of applications where security is important, the kind of things that systems can do, how they can be compromised etc. If you are doing design in this area it will give you an insight into the way you need to think, rather than just give you a recipe.

Wednesday, November 26, 2003

PMBoK (modfied a bit) is used at Merck & Co for their engineering projects. Seemed to have worked well for that group. They build some damn big facilities with that method and often in a very short period of time.

They then tried to apply those rules and in general the rules for building plants and labs to building the software that supported the group. For many reasons it was not the cure that the group needed to control the software development.

I have a feeling it had to do mostly with the engineering group being staffed by top flight engineers and the IT group being staffed by the best people they could find. Not nessesarily the best of the best like they hold out for in engineering. Once again showing it is the people and somewhat the methods.

Wednesday, November 26, 2003

I think I need a book on how to buld a bigger bookshelf.

Wednesday, November 26, 2003

I'll second 'Code Complete', 'Programming Pearls' (esp. for the bitmap sort) and 'The non-designers handbook'.

I'll add...

'Humane Interface' by Raskin,

'About Face' (there's a new version out)
'The inmates are running the asylum' by Alan Cooper

'Psychology of everyday things'
'Invisible Computer' by Donald Norman

The best programming book I have is 'Turbo C - The complete refence' by Herbert Schildt'.  This book is over 15 years old, but very clearly explains how to do linked lists, hashes,  stacks, queues, expression parsing, searches, sorting, and how to write a BASIC interpreter, etc.

It explains things so well that the fact it is a book on C is irrelevant.  You could delete all of the C code and it would be just as worthwhile.  A rarity indeed.

As someone above mentioned, it has no screenshots and very few graphics.

I haven't read any of his later books, Amazon shows good reviews if that's any help.  ($2 for a copy of this Turbo C book!)

Wednesday, November 26, 2003

not needed since 1992, but before heavily:

Clarence B. Germain
Programming the IBM 360

Wednesday, November 26, 2003

Whoever borrowed my copy of "The Mythical Man Month", please return it.

Wednesday, November 26, 2003

Clearly, _Atlas Shrugged_ by Ayn Rand should be at the top of the list.

(grinning, ducking, running)

Wednesday, November 26, 2003

Hey, if comeone can post an IBM 360 book, then here's my all time favorite:

Machine Language for the Commodore 64, 128, and Other Commodore Computers
by Jim Butterfield

Wednesday, November 26, 2003

Wow!  Jim Butterfield.  I used to love his stuff.  That column he wrote for Compute! magazine was always the first thing I'd turn to when a new edition would arrive.

another old fart
Wednesday, November 26, 2003

For anyone who might have to get close to the hardware and need to know a little bit about electronics, e.g., working with embedded systems, should consider buying a copy of "The ARRL Handbook for Radio Communications", formerly known as "The Radio Amateur's Handbook".  This is updated every year and is available in both dead tree and CD versions.  Here's the link:

Wednesday, November 26, 2003

Good to see someone else appreciate strang on linear algebraapplied math

Friday, November 28, 2003

The Sinclair ZX81 manual.

Anyone else learn how to program one rainy day because they could never get their ZX81 to load games from tape :-)

The next revelationary book after that was McGonnel's 'Code Complete', 20 years later.

At the moment the 3rd Manifesto by Date and Darwen is causing me to rethink everything I thought I knew.  And so fart I only understand about 5% of what I'm reading.

I'm reading it alongside Meyer's 'OOSC2', and now the Memes are battling for supremecy in my mind.

Next is the GOF, which was unearthed untouched during an office move.

While I'm reading all this I'm supposed to be studying for my Masters.

And to think, a few years ago I thought I knew everything.

Ged Byrne
Friday, November 28, 2003

He he he, fart.

Ged Byrne
Friday, November 28, 2003

I'd like to see Date and Darwen tagteam against Meyer and Nerson on the subject of nulls.  I side with Meyer and Nerson on this one, but I bet it would be a real knockdown dragout :)

Saturday, November 29, 2003

*  Recent Topics

*  Fog Creek Home