Too Long; Didn't Read
Meta-programming is magic. That is the main reason why we should not use it. The golden rule states that a model must be open for extension and closed for modification. This rule is still true and it is something that we should try to emphasize on our models. But in the real world there are no models or meta models, only business entities that we are speaking about. The one and only software design principle is the open/closed statement belonging to the definition of solid design.