
Pretend there are 11 quarterbacks here
I’m a software developer. To be really really good, you have to be really really smart. Fortunately, the world is full of smart people that want to be software developers. The bad news is… they all seem to start out as assholes.
If you are the smartest person in the room growing up, and the smartest person in the room through high school, and the smartest person in the room through college, then you will go through your whole life always being right. Which leads to you thinking that you are always going to keep being right.
You never learn to appreciate anything anyone else does because … your world consists of you being right. You are kind of imprisoned by your own experiences, but you don’t know it. I remember as a child when I discovered that other people’s fathers actually came home from the office to sleep every night I was flabbergasted. Why would anyone do that? Leave work at night just to wake up in the morning and go back the way you just came? Think of the time that wasted! I hadn’t even conceived the thought that anyone would ever want to actually come home every night. I was trapped by my experiences – up until that point, my father came home only occasionally or on weekends, so as far as I knew that was how the world worked. I didn’t have the experience to see the world any other way. Being really smart does a similar thing to people.
So when you enter the work world, if you are smart like this, you solve everything. Nothing is hard for you – of course not – because you are smart. You come up with answers, that is your thing, that is what you do. And of course you get used to being right at work too. After all, that is how your world works. Except software development can be kind of competitive. There are really many different ways of thinking about things, and it can be hard to prove that any one particular way of thinking about things is definitively wrong. So you end up in technical discussions. These discussions can’t go on forever, they can’t stay theoretical. You are at work and things have to get done, you have to act on these ideas. So, now if you are one of these people that has been the smartest person in the room for your whole life, you end the discussions too. For the good of the team. Obviously what you are proposing is correct. If someone disagrees with you then they are an idiot. Sorry, life is cruel. Can we get our work done now?
I was one of those people.

This isn’t really me.
I tried not to be an asshole. I tried to give people space to flounder around some in ways that wouldn’t impact my work. They could do their dumb stuff on other projects away from me and as long as they didn’t try to get me to do anything stupid I would try to leave them alone. Sometimes I would even leave problems for them to solve so they could feel good about themselves.
I thought I was being tolerant and respecting diversity of thought. I really wasn’t. I think the best I probably managed was some kind of strange passive aggressive tolerance. But deep down I knew the work world would be a better place if everyone was just like me. The more they diverged from how I did things, the wronger they were.
Until one day the people on my team attended some team building. I can’t remember exactly what we did, but it was something like that we were given a pile of large shapes and we had to work together to build it into something useful. Halfway through the coach identified who the leaders had been and then switched them between the teams, just for extra fun. I don’t remember who won or who else was on my team or really anything else – except that I had come up with a great idea that was going to win the competition for my team. I tried to communicate this idea to my team, but I couldn’t get buy in. I tried some more, to the point I was irritating people, but no one really wanted to try my idea. They were fixating on this other stupid idea someone else had come up with. So we tried that.
And then a really interesting thing happened. As we worked I came to the realization that this stupid idea we were trying might actually work. A little while after that, I realized it was a really good idea, much better than mine. So different from what I had come up with that I couldn’t even see how good it was until I had worked with it some.
I remember that after the leader switch my team was behind, and at the end of the competition we were close. We may have won, I just don’t remember. And it was all due to this idea that I had thought was really stupid.
How could this possibly have happened? The idea wasn’t just a variation on any idea I had. This wasn’t just a slightly better idea. The person that came up with the idea had completely different thought processes than I did. So the whole way they approached the problem was completely foreign to me. I couldn’t make myself think like they did if I had to. Their way of thinking was a better match for the problem than my way of thinking was.
Before this, I thought a perfect team of software developers would consist of people that thought exactly like me, but probably not as well. We could just implement all my ideas, and because they thought like me they could recognize the correctness of my thoughts without a lot of discussion, and they wouldn’t get lost going down stupid paths. Diversity of thought was avoided, which was good because all that really did was cause a whole lot of pointless discussions about things I already knew the answers for.
After this, I realized that if everyone was just like me, then what we were really doing was limiting the team to actually only being excellent in one particular way with a whole lot of redundant mediocre backup. Kind of like a football team with 11 quarterbacks. The fact was that there was a person on my team that had come up with a better idea than mine because of how DIFFERENT they were from me.

Diverse enough for you?
Diversity isn’t a problem. It’s a strength. The more different viewpoints we have on a team, the better we can adapt to different situations and solve different problems efficiently. The whole team is raised up. Weaknesses don’t mean so much because other teammates strengths cover them up. The team functions at the lowest level of everyone’s best skill.
I also learned that just because I can’t understand someone else’s logic, it doesn’t mean that they are wrong. If I am in a team and there is one person that disagrees with me, I might feel like they are probably wrong. If there are three people that disagree with me, even if I don’t understand their logic – I am probably wrong. I believe that I am probably wrong with the same strength of conviction that I believe my idea is correct.
I have learned to actually believe that I can be wrong even if I think I’m not. I have learned to appreciate diversity. Not to say I’ve never since been an asshole. I’m ashamed to say I have. But it’s an exception, not the normal way I do business.
I am grateful that this reckoning happened to me early in my career. I have watched this happen over and over again to different developers over the years. It seems like crashing and burning in this way is a necessary step in their development. Without it, they seem to just stay assholes forever.
Nooooooooo!
And I don’t think it applies just to developers. I think that for anyone that is used to being the smartest person in the room this kind of thing is probably necessary for their development too. So, if you think you are always right, you should look forward to the day when you will be absolutely certain you are correct about something, and then be proven in a humiliating, public way that you are not. It may be one of the best days of your life.