Joel has a piece up called Biculturalism, which about two parts review of The Art of Unix Programming, one part bitching about ESR, and another two parts discussing cultural differences between Unix and Windows programmers:
What are the cultural differences between Unix and Windows programmers? There are many details and subtleties, but for the most part it comes down to one thing: Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers.
It's an interesting article, and you should go read the whole thing. I've been considering picking up tAoUP, and I'm considering it more strongly now that I've read Joel's review.
The one nit I wanted to pick was in response to the pull quote above: I don't think Joel really takes the next step and considers why this difference exists between the Unix and the Windows culture. In my experience, the difference exists and persists because in the Unix culture, even normal users are expected/encouraged to do some programming -- things on the order of small loops to process a bunch of files in the shell, and that sort of thing. In the Windows culture, normal users are expected/encouraged to just accept whatever software they can beg, borrow, or steal, and figure out how to adapt themserves to it, rather than the other way around -- they're supposed to be consumers, not creators.
I'm not saying one culture is superior to the other one because of this fundamental difference, but I am pretty clear on which one I want to be part of.