Naming Things
Just something that popped into my head, and keeps rattling around, probably because I got no sleep last night. (Bouldered 'till 8:30 or so, then headed back to my place for food and Sneakers, then settled in to read some more of Freakonomics, and next thing I know it's 1am.)
A weakly typed language (say, Scheme) depends heavily on naming conventions to indicate typing. I'm not sure this is a good idea.
I once worked with a database where there were two levels of a company/customer/business entity represented in the database: an ORGANIZATION and an ORG, with ORG representing a subdivision of the parent ORGANIZATION.
As if that wasn't crappy enough, developers used "ORG" as shorthand for both ORGANIZATION and ORG. Without careful study of the code, the actual content of something called ORG_ID was impossible to tell. Often, subroutines passed along ORG_ID values to other subroutines without any indication of what it referred to. If you wanted to know, you had to search the subroutines for hints.
All this is to say: your average programmer isn't nearly anal enough to pick the best possible varible names all the time. I'm not sure putting more importance on variable names is a good idea.