Sometimes It’s OK to Break the Rules
I was sitting in my daughter's dance recital today, waiting for her to get on stage.
I had my iPhone all ready to capture her 2 minutes of fame on video so that I could share it with the rest of the family.
Finally, it was her turn to come out onto the stage with the other 4-year-olds.
The theme for the recital was “The Circus” and she was dressed up as blue cotton candy.
I knew I wasn't “allowed” to take video of the performance since the semi-corrupt dance studio wanted to charge $45 to buy a DVD in order to watch the 2 minutes of time that my daughter was on the stage—after charging me $65 for her to rent a costume for an hour that she couldn't even take home and that cost probably $25 to buy, oh and let's not forget the $22 per ticket both my wife and I had to buy, plus the overpriced roses they “strongly encouraged” we buy as well—but, guess what? I didn't care.
I was going to take video using my phone and they could try and stop me if they wanted.
It was like the usher/security guard knew what I had planned, because as soon as she stepped out on stage, and I lifted my phone up to start recording, I heard “Sir! Sir! You can't record. I'm going to have to ask you to put your phone away.”
I turned for a brief second—just long enough to give him a smile—then, I shooed him away with my free hand and continued filming.
I heard the lady sitting a few seats next to me, say to the oh-my-job-is-so-important enforcer, “he's not listening to you.”
He made a valiant effort to try again to get me to stop recording. Again, but in a more forceful voice, he whispered loudly this time, “Sir! Sir! You can't record this. It is not allowed. Please put your phone away.”
I didn't even look his direction this time, I just ignored him.
There was nothing he could do about it, he knew it and I knew it, so he went back to his seat and gave up.
By this time the performance was pretty much over anyway.
I put my phone away. I overheard someone mutter “How rude. That is not how to follow directions.”
I just smiled as I thought to myself how often people follow arbitrary rules or commands just because someone told them to.
What a rude jerk I am… or am I?
Now, maybe you don't agree with what I did. Maybe you think I'm a big jerk, because I didn't “do what I was supposed to do,” or obey the arbitrary rule that someone put in place in order to line their pockets by over-charging me for a DVD of my daughter's dance recital. I can understand that viewpoint. I don't really care, but I can understand why someone not following the rules might upset you and cause your blood-pressure to rise.
The truth is, most people are conditioned in life to blindly follow rules whether or not those rules have any authority, merit, or even make any sense.
I'm not one of those kinds of people.
I'll admit I used to be, but not anymore.
Don't get me wrong. I obey the law (mostly), I don't necessarily lie, cheat and steal, but I don't follow arbitrary rules that I don't have a good reason to follow.
Take recording my daughter's recital, for instance.
I realize that the dance studio created a rule that says that no one can film any part of the recital. I realize they expect people to follow this rule, but there is no good reason for me to follow it. The rule is designed to benefit them financially and doesn't benefit me, or the rest of the parents in the audience in any way.
More over, there are no serious consequences for not following the rule.
If I follow the rule, I'll have to pay them $45 if I want a copy of the performance on DVD.
If I don't follow the rule, the worst they can do is ask me to stop or to leave, but they really don't have any good way of enforcing it. I'm sure most people are probably intimidated by someone telling them to stop and that they are not allowed to do something, but if that's all it took to stop me, you probably wouldn't be reading this blog.
Not only would you not be reading this blog—because I would have never had the guts to write it—but, I'd probably still be working for someone else, I wouldn't have written “Soft Skills: The Software Developer's Life Manual,” and I sure as hell wouldn't have become an entrepreneur, because…
Entrepreneurs break rules all the time
Take Uber, for instance. Lots of rule-breaking there.
Just about every city they tried to operate in said, “you can't do that.”
Did Uber give a flying f%$!? Nope. They told their drivers that if they got a ticket, they would pay it for them.
Arbitrary rules that don't benefit anyone but cab companies and actually hurt the consumer? Nope. Not going to obey those rules.
Now, Uber was eventually forced to obey some of those rules in some cities, like Las Vegas, but only after the rules actually got some bite behind them. In the face of an unjust or ridiculous rule they held out as long as possible—and you should too.
I've always liked this quote from Steve Jobs concerning rule breaking:
“Here's to the crazy ones, the misfits, the rebels, the troublemakers, the round pegs in the square holes… the ones who see things differently — they're not fond of rules… You can quote them, disagree with them, glorify or vilify them, but the only thing you can't do is ignore them because they change things… they push the human race forward, and while some may see them as the crazy ones, we see genius, because the ones who are crazy enough to think that they can change the world, are the ones who do.”
Rules are not necessarily moral or even ethically based
I think it's also important to point out that there is a difference between moral or ethical action and following rules.
As children we tend to be brainwashed to believe that following rules—or even laws sometimes—is the ethical or moralistically right thing to do.
But that's not always true.
Murder is against the law and also inarguably wrong (at least in the very broad context of everyday life), but going faster than the speed limit, while against the law, is not inherently morally or even ethically wrong.
Every time we submit ourselves to a rule—written or unwritten—we should always ask ourselves:
- Is this rule in-line with my ethical or moral beliefs or is it arbitrary as far as they are concerned?
- What is the consequence for violating this rule and what are the chances of incurring that consequence?
How many rules in your own life do you follow “just because you are supposed to?”
How much of your life is governed by what other people are telling you to do, whether they have the authority to tell you or not?
Not all rules are formalized, some of them are “social norms,” but written or not, many of us allow ourselves to be bullied without ever thinking about the consequences—or lack thereof—of just saying “no.”
Here's another pretty awesome quote about breaking rules:
“Most rules are made by people with no authority who want to control and limit you from reaching your true potential. Ignore them, break their rules, and wave at them as you soar past them to greatness.”
― Dan Pearce, Single Dad Laughing
Professionals have to be willing to break rules
One of my favorite mentors from the programming world, Uncle Bob Martin, once wrote an excellent article about “saying no.”
In this post, he talks about how a real professional isn't afraid to say no to his boss or client when they come to him with a direction that makes no sense. He posits that a professional programmer is willing to stand on principle, that he has lines which he will not cross.
Not to say that taking this stance is without risk, even Bob acknowledges that this is a risky position and the outcome may not be positive for you—in the short run—but sometimes you have to take a calculated risk.
I hate to steer internet conversations back to Hitler. But, I'd be amiss without at least mentioning that the Holocaust wouldn't have been possible without a culture built on the mindset of just following orders.
How many horrible things have happened throughout history because people were “just following rules” or orders?
Programmers spend way too much time blindly following rules
Although I do enjoy delving into philosophy, let's take things back to the concrete for a bit—let's talk about rules and programming.
You might think it is a bit strange that I am telling you to break rules, when I wrote a blog post called “11 Rules All Programmers Should Live By,” but as some commenters pointed out, there is a 12th rule that I missed called “know when to break the rules.”
I used to be a pretty big rule follower when it came to programming.
I remember when a college professor told me that I needed to add a comment for every line of code I wrote.
I remember blindly following that rule—and insisting others do the same.
It's funny how now I tend to follow and advocate the almost opposite advice.
I remember blindly following the rule that all code needed unit tests and the units tests had to be written first.
I even had the chance to make my own rules, like 90% code coverage for all code that is covered by unit tests.
I remember blindly following so called “best practices” like using IoC containers in every single application, regardless of the complexity and the actual usefulness of such a technique.
I eventually realized that while most of these so called rules could be good, not only were they not always good, sometimes they were downright destructive.
It's tempting to want absolute rules for how to do things.
Programming would be easier if we could just follow one set of prescribed rules that told us exactly how to write the best code possible.
But… the reality is that such a set of rules will never exist—and if it did exist, we'd all be out of jobs, because we could just write a program to follow those rules and write code for us.
We have to use our brains
There really is no substitute for it.
If you believe that there is only one “right way” to do something, you might want to recheck that premise, because most situations in programming—and in life—are context driven.
I have a difficult time coming up with any single, absolute rule that governs and kind of human behavior. There almost always are exceptions that are based on different situations and context.
That doesn't mean that we can't define some rules for how we write code or do various other things in life.
But, I think it's important to realize that these rules are more like guidelines or heuristics, rather than hard and fast rules.
Confucius said it best when he said:
“The green reed which bends in the wind is stronger than the mighty oak which breaks in a storm.”
This is especially important to remember when dealing with other people.
Some of the worst management and team lead mistakes I made in my career in software development were around creating unbending rules which ended up causing more harm than good.
I set pretty strict rules for my own life, but I find that even those rules must occasionally be broken, or large missteps can result.
The point is that no matter how good our rules are—or how well intended—we have to be willing to break, and have those rules broken, from time-to-time.
We have to use our brains to make decisions otherwise we become simple automatons just pretending to live our lives.
Am I advocating anarchy?
No, not at all.
I'm not saying that you should just give the finger to anyone or anything that tries to impose any kind of rule on you and that you should live a reckless and rebellious life claiming that no one can tell you what to do. (Although, truly, no one can.)
In general, you should follow rules and conform to social norms if you want to live a life that is not full of constant strife and ostracization.
But, you should not follow rules or do what people tell you to do, mindlessly, like an idiot.
Instead, whether it be in life in general, or at work writing code, think about why you are following a particular rule or order and whether or not complying is actually the best thing to do in a given situation.
Unfortunately, traditional education systems tend to train us to either follow rules or unconditionally break them.
Neither of these extremes is good.
Become an independent thinker and make decisions for yourself.
This is the only way to be truly free in life.