This is an old revision of the document!
Inexperienced developers can learn from principles what others already know. So principles are a means of experience reuse and a way of learning how to design. Just like patterns, idioms, anti-paterns, or code smells, principles are condensed knowledge and makes it learnable and teachable.
A principle language can be used as a guide for making design decisions.
Inexperienced designers will use a principle language like a catalog or a handbook. For a given design problem the relevant aspects can be looked up. Each considered principle describes an aspect and lists other principles that should be considered, too. One principle leads to several others typically resulting in a small set of principles or aspects which characterize the problem. This characterizing set of principles then helps finding a suitable trade-off. As a designer gets more experienced, the principle language becomes more and more a mental model. So for seasoned developers it is not necessary to directly look up the principles anymore.
Note that the principle language does not make the trade-off itself. This is still the task of the designer. It is rather a tool for finding relevant aspects, an aid for finding reasons why one solution may be more suitable than another one.
When talking about design decisions, it is necessary to explain the reasons for them. This can be in order to explain an already taken decision or to discuss a design decision with other designers to find an appropriate trade-off. Principles are about replacing vague reasons like “it feels better” or “my experience tells me that” by more comprehensible reasons.