A good portion of my advice ends up being misunderstood.
I’m all for being a rule breaker.
I, in general, have a contempt for authority.
I genuinely believe the path of going to school, getting good grades, and working a shitty 9-to-5 job for the rest of your life, hoping that someday your 401k will be enough to survive your golden years, is a bullshit way to live.
But, despite the fact that I make my own rules, I can live—and thrive—in the world of other people’s rules and values.
In fact, I firmly believe one of the strongest traits any “rebel” can possess is the contradictory one of compliance.
It is only when you can master the rules that someone else has imposed upon you—when you can beat them at their own game—that you gain the power to break the rules that bind you and create your own.
Joseph, the rule follower?
There are many stories that I could pluck from history to illustrate this point, but one in particular sticks out to me because of the perceived injustice attached to it and of the rapid rise to glory within.
Whether you believe in the Bible or not, you have to admit the story of Joseph is quite an interesting one.
Here is a shepherd boy, who is in all essence a rule breaker and rebel at heart.
He has a dream in which he sees himself ruling over his brothers and even his father as they bow down to him—symbolically, at least.
I’m sure this vision facilitated some illusions of grandeur in a young boy, probably so much so that his brothers humored killing him, but ultimately decided on throwing him in a pit and then selling him into slavery instead.
Now, at this point, Joseph had some pretty good reasons to be pissed off.
He had been betrayed by his brothers, sold into slavery, and brought to a foreign land, where he was stripped of his freedom and forced to serve a master whom he didn’t necessarily respect.
But, did Joseph rebel?
Did Joseph rail against the injustice, reject reality, and choose to vocalize his discontent or start an uprising?
No. He simply decided to go to work and to work harder than anyone else in his master’s service.
Remember, he didn’t belong to this system.
This wasn’t his country. He didn’t subscribe to the values and beliefs that were thrust upon him.
He may have still had aspirations of greatness, but he came to a realization that went beyond just his faith that God would save him. He recognized that in order to eventually break the rules, not only would he have to learn to play by them, but he would also have to master them better than anyone else.
As a reward for his diligence, he was promoted to be the overseer of his master’s entire household. That is, until he was propositioned by his master’s wife and again took the position of character rather than that of compromise.
His reward this time was prison for being accused of attempted rape.
But, even being imprisoned unjustly, he still did not revolt. Instead, he found a new set of rules to follow and master. Once he mastered those rules, he was again invited to rise above them as the steward of the other prisoners.
I’m shortening the story a bit here, but a time came when opportunity did strike, and he was able to gain influence and a position with the Pharaoh of Egypt by interpreting his dream.
At this point, Joseph literally became the most powerful person in Egypt and was able to implement his own rules.
What is my point here?
Well, let’s think about it this way.
What would have happened if Joseph had refused to play by the rules that were set for him? What would have likely happened if he rebelled and chose to go his own path?
Instead of being put in charge of his first master’s household and being elevated to the position of the steward of the other prisoners, and eventually the Pharaoh’s right hand man, I think he would have probably felt the crack of a whip quite a bit.
Joseph was smart. He bided his time and waited for his chance. He didn’t try to force opportunity.
Joseph learned to play by the rules that were presented to him and then to master those rules until he was finally appointed to a position where he could make his own rules.
Young and foolish
I talk to many young programmers who think they have it all figured out.
They think that all the wisdom of the ages is bullshit and that they are faster, smarter, and more capable than everyone else who came before them.
They think they don’t have to wear a tie to work—and no one can make them.
Some of them don’t even seem to think they have to obey the laws of physics.
Many of these programmers end up creating new frameworks that solve already-answered problems, and in much worse ways—but I don’t want to digress here.
The funny thing is, I agree with most of what these “young punks” have to say.
F&# the man! F&# the establishment! Right on!
The problem is, though, that a lot of these “revolutionaries” can’t hold regular jobs. A lot of them can’t conform to the existing structures and rules.
They say that they don’t want to, and that it’s not for them.
I say they can’t hack it.
I’m going to say this once, and then I’m going to say it again, because it’s so damn important.
If you want legitimacy, you have to pay your dues.
If you want legitimacy, you have to pay your dues!
I don’t care how brilliant you are. If you can’t at least do what I can do, you can’t tell me I’m wrong.
But guess what?
If you can do what I can do—in fact, if you can do what I can do two times better or faster—and then you tell me what I am doing is wrong, I have to listen
It doesn’t matter how young, old, white, black, male, female, or tattooed you are—if you can beat me at my own game, I have to listen to you. You have credibility.
So many people try to conquer the world by just claiming that everyone else is wrong.
It’s not enough to have a good idea. It’s not enough to have a strong belief. You have to be able to dig the trenches. Then you actually have to have dug the trenches if you want to earn respect.
Now, don’t get me wrong and swing the opposite direction.
I’m not saying that paying your dues means that you have to work a 9-to-5 job for 30 years of your life, and then get an opportunity to do something different.
You don’t even have to work a 9-to-5 job for any year of your life, but you have to be capable of doing so.
If you want to call the “working man” (or woman) a sucker, you’ve got to be able to do what the working man can do and do it better than him, but then reject it because you have a better way, not because you are stubborn, lazy, or incapable.
It seems like a small difference, perhaps a triviality, but we all know the difference between those who can just talk the talk versus those who can actually walk the walk. A fraud is most easily identified.
Old and stubborn
I don’t mean to just pick on the young programmers who seem to get all the ire of the older generation constantly yelling at them to “get off my lawn.”
A different set of attributes—but just as highly destructive—can be seen in the older generation of programmers who may have the tendency to be so defined by a single set of rules that they can’t break from them.
While many young programmers constantly want to break rules and disregard tradition, experience, and the wisdom of the ages, many older programmers want to hold onto these things too tightly.
These programmers get stuck in a rut where they are so good at just following a certain set of rules, they can’t see beyond them or even the reasons for them.
These programmers, when thrown into a new environment or faced with the inevitable change of our ever-changing profession, dig in their heels and grit their teeth.
Some of these programmers haven’t even learned to master the rules of their existing game. They’ve simply achieved proficiency and stopped there.
To them, the rules seem to be set in stone—they can’t be broken.
These are the well-meaning folks who email me and declare that what I am saying is crazy. They tell me why what I am doing or suggesting won’t and can’t work, in spite of the obvious evidence to the contrary.
They try to pull myself and others back into the world of continual, but mediocre, conformity.
They don’t understand that if they would put in a little more effort, learn to adapt to the changing rules, and finally master them, they could also be free. They could open new doors, invent new frameworks, and literally revolutionize the way we develop software, because they are already so close to their goal.
Be twice as good as you need to be
I was listening to an episode of TechZing, in which one of the hosts of the podcast, Jason Roberts, told a story about his son playing Little League Baseball and being treated unfairly by the coach.
Jason discussed how it is only natural that the coach would put his own son in the game more often than Jason’s son, even if Jason’s son was more skilled.
But things really get interesting when Jason repeats the advice he gave to his son:
“You have to be twice as good as the coach’s son.”
Twice as good.
His logic followed that if his son was twice as good, there would be no way the coach could get away with putting in his own son, who would be clearly inferior.
What does this have to do with conforming to and mastering rules before you can break them?
Simple. There are a set of rules that govern how Little League Baseball and the players are chosen. Yes, the rules are unfair. It’s clearly not fair for the coach’s son to be picked over other players based on nepotism rather than pure talent. But, fair or not, that was reality.
The key to solving this problem was not to flat-out break the rules, but rather to beat them at their own game. By conforming to the rules and learning to master the game of baseball so well, Jason was able to put his son in a position where he was eventually able to force the rule to be broken.
Conformance led to legitimacy, which eventually led to change.
Outright confronting the coach about this nepotism would have probably resulted in, at best, a false promise or justification; at worst, a fist fight.
Here is the thing: there are many unspoken rules in life that aren’t fair.
I’m not going to pretend that there isn’t such a thing as privilege and discrimination. Of course these things exist—intentional or not.
I’m not even saying that we shouldn’t fight them. We should, but we should fight them from a position of power, not one of weakness.
Regardless, a majority of programmers—and just people—would be better off understanding that if you can be a whole lot better than everyone else—perhaps even twice as good—then you become capable of overcoming a lot of the unfairness that exists in life.
(By the way, sometimes disadvantages are actually advantages. I haven’t seen it put as eloquently as it is in David and Goliath, a great book that I finally got around to reading.)
Steve Martin was quoted as saying, “Be so good they can’t ignore you.”
And Cal Newport wrote a book of the same title—which I highly recommend you read.
An underlying principle
I’ve gone a lot of different directions here, but that is because I believe there is an underlying principle at work that unifies all of this together.
It’s this idea that you have to go with the flow, that you can’t constantly fight the current and expect to make progress.
It’s the Judo-like idea that you have to use your opponent’s own strength and power against them instead of trying to fight it directly.
It’s the idea that if you want to rise above people, you have to place yourself beneath them, not over them.
It’s the idea that true strength doesn’t come from subjugating others to your will, but rather by having the ability to do so and possessing the self-restraint not to.
So, yes, I talk a lot about not asking for permission or breaking rules, but breaking the rules because you can’t follow them or because you lack the self-discipline and determination to conform to them is vastly different from breaking them because you’ve mastered them and know how to beat the rulemakers at their own game.
If you want legitimacy, you have to pay your dues.