New post: I read a really great book recently, "Naming Things", that explains why picking the right abstractions in development is so hard.
The book goes into explaining what makes good names (variables, classes, etc.) good and heuristics for picking them.