in reply to Pragmatic Programmer, The
Pragmatic programmers realize that rules don't exist because there is some ideal aesthetic in which that is the right way to do things. Rules exist because someone tried to put into words what works and what doesn't. Rules are someone's opinion on how to do things. Opinions backed by practice, theory, and (unfortunately) prejudice.
This book explains a lot of the rules that the authors have found useful over decades of programming. But more importantly than that, they explain why each rule exists. And they strongly encourage you to examine how you work and continue to learn.
Indeed I have found from personal interaction with the authors that they consider this key. They really believe that it is better to always be thinking while you are programming than it is to blindly follow what someone laid down as good rules. If you blindly follow rules you will not know how to apply them well, and will not understand when you are misapplying them. If you stay concious, and seek to improve, you may come to different rules, but you won't be forever limited by the imagination of the person who laid down the rules, or limited by your initial misunderstandings of what that person's rules were supposed to mean...