2009/7/22 John Fereira <[log in to unmask]>:
> Some good answers so far...
> First, regarding books.  While the suggestion of avoiding "dumbed downed"
> books has some merit it is worth noting the distinction between books that
> are primarily used for reference and books that are more about theory.  I
> haven't fund much use for "reference" books so much as usually the same
> material can be found online and kept more up to date.  However, theory
> books on algorithms and software design can provide a good background on
> how,  in general, to write good code.

Very true.  And the paradoxical upshot is that these days, some of the
best books on programming are old ones, which a few years back would
have been thought of as outdated.

In particularly, I can't speak highly enough of Jon Bentley's classic
_Programming Pearls_ (originally 1986, second ed. 1999), which is
chatty and anecdotal yet rigorous, and will help you to _think_ like a
programmer, as opposed to merely accumulating techniques.

Maybe even better is Kernighan and Plauger's tour de force _Software
Tools_ (1976!)  In 320 pages, they start by developing a program to
copy its input to its output, and end up by showing you how to design
and build a macro processor and programming-language pre-processor --
covering sorting, pattern matching and a hundred other topics along
the way.  I know of no other book that goes from 0 to 60 so rapidly,
readably and painlessly.  The language that the tools are written in
(RATFOR) is hopelessly outdated now, but the princples are timeless.

These are books that I have come back to time and time again.  They
contain treasures worth a hundred time more than whatever currently
trendy Design Pattern is being pushed by this month's hot book.

Hope this helps.