I think the author probably meant this on a broad, business and marketing strategy level, but the concept holds for programming and database design as well. Until you have worked with highly scaled or long-lived programs, you probably shouldn't make calls on what kind of "hacks" are okay and what aren't. It's the knowledge of the rules and the experience of learning why they're the rules that really enables you to break them with little cost and sometimes huge advantage to your organization. I think this is true of NoSQL solutions in some shops - until you understand the purpose of normalization and the ways it affects data integrity, maintainability, performance, etc you really shouldn't be allowed to "break the rules" by denormalizing, using only unstructured document storage, etc. They certainly have a place and can be great tools, but all of their weaknesses and problems manifest when implemented blindly/without regard for "the rules" and where they came from.
This is a great lesson that I learned from an English teacher in high school, and it's a lesson that applies absolutely EVERYWHERE. The statement must be taken in its entirety: If you know the rules, then you are allowed to break them.<p>People try to "break the rules" without an understanding of why they were there in the first place, and it comes out as shit. This applies to art, programming, writing, basically anything creative.<p>The Baroque period had all kinds of customs that applied to music; if you take music theory you will learn all about the rules of four-part harmony, no parallel fifths, etc. But then once you learn these things and have a complete understanding of why the rules are there, you can selectively break them to great effect. You break them with the cognizance of what you're doing, you break them to make a statement, or to explore new territory, or any number of reasons. But you do it with PURPOSE, because you already understood the rules.
This actually goes to the heart of a debate a friend and I have been having, whether it's possible to create rules that have longer term usefulness. Hopefully this isn't too off topic, but after reading Anathem and looking at the Long Now stuff I thought, what sort of "disciplines" are useful for creating organizations that can a long time preserving core values but adapting external values (and being aware of that adaption). I tend to think that rules or meta rules are possible in this space. My friend thinks that rules are always too restrictive and you should just have sets of models you can apply. Maybe this "only break the rules you really know" provides a path to create rules and break them with purpose.
The author is slightly off the mark. All of these "rules" we hear -- for advertising, powerpoint presenations, social conduct, etc. -- are not actually rules. They are guidelines meant for beginners who need a starting point.<p>Most guidelines are written so that beginners avoid producing bad stuff -- not with the intent to make great stuff.<p>Once beginners realize WHY these guidelines are suggested, then they also realize how they can move beyond them and still deliver compelling results.
Sometimes the best way to learn the rules quickly is by trying to break them. Try to do the impossible so that you can find out what is possible. I think it's important to make a distinction between the actual rules and the rules as they are understood or documented. Our understanding of rules tends to change over time.
Reminded me of Kristine Kathryn Rusch's:<p><i>Rebels learn the rules better than the rule-makers do.<p>Rebels learn where the holes are, where the rules can be breached.<p>Become an expert at the rules.<p>Then break them with creativity and style.</i>
I agree with the author that it's probably best to learn rules before you break them, but is there any inherent value in things produced by breaking rules you know over breaking rules you don't know? Or is it merely that by knowing the rules you'll be able to break them to better effect?<p>Would a work of Shakespeare be less great if it were written by 1 of infinity monkeys?