in reply to
What book would be valuable to someone self-taught?
Personally I think far too much is made of paradigms and methodology. The principles of good s/w construction were set out early on by the likes of Steele,Brooks,Parnas, & Knuth, and have not changed.
The Mythical Man Month
Structure & Interpretation Of Computer Programs
Higher Order Perl
The books I use most are of course reference books - "Effective Perl", "Perl Cookbook" etc. But the books that have made me think about how to approach software are the ones that have some philosophical as well as practical content:
But these days there is so much material on the net you don't need to worry about books so much. Some people worth looking up:
In my opinion the most important things a beginning programmer should know are:
There so many ways to get things done. The computer won't care which one you use.
Human beings are hopeless at predicting the future so don't try and justify complex solutions in the name of maintainability.
There is no empirical evidence that OO leads to better software.
2 nice quotes which I think sum up just why we shouldn't get too precious about languages, paradigms and (my all time least favourite word) methodologies:
I am rarely happier than when spending entire day programming my computer to perform automatically a task that it would otherwise take me a good ten seconds to do by hand. Douglas Adams
Plan to throw one away - you will anyway. Fred Brooks