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.
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.
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.
Most guidelines are written so that beginners avoid producing bad stuff -- not with the intent to make great stuff.
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.
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?
Would a work of Shakespeare be less great if it were written by 1 of infinity monkeys?
There is inherent value in the process, not the product. If bad process ends in a good product, that's nice, but about as likely as a million dollars suddenly materializing in front of you. There are an almost limitless number of permutations of any idea that break the rules. By understanding the rules and their function, you can intelligently choose to disregard some of them but still have a good idea which of those infinite ideas are good.
To return to the monkeys: If you have infinite monkeys, you're never going to find Shakespeare even I'd one of them wrote it. You have to have a decent idea what a Shakespearean sonnet looks like or you are never going to find the right monkey, it and would certainly help if you had some way to organize the monkeys so that you had a finite search space for Monkey Shakespeare.
Not challenging, just clarifying, because I agree.
In "given an infinite number of monkeys at an infinite number of typewriters, eventually one of them will produce the script to Hamlet", the key word is "eventually", and speaks to nothing about the quality of the monkeys or of their writing. It's a rephrasing of Bogosort. If you try to optimize the bogosort process in some way so it finishes in less than infinite time in the average case, it's not bogosort anymore.
And bogosort is exactly what you don't want when you break the rules. Being able to break the rules is about knowing which rules to break and how to break them, not trying things randomly hoping it gets better. But one also has to watch out for being too knowledgeable and not being able to, uh, "think outside the box" when looking for new things to try.
To quote Web Dude, "did you restart it three times?"
I agree with you completely that the most likely chance of success comes from knowing the rules before breaking them. But I don't think it's unheard of for someone to bypass the rule-learning and figure out some new way of looking at things. Granted, maybe had they been forced to learn the rules they would have ended up breaking them anyway. Many people are content to just learn the rules. But given two works of art, can you actually say "that one is amazing because the artist learned the rules and that one is not because the artist was making up his/her own new rules or merely guessing" ?
And quite a bit is possible given infinite monkeys. :)