Programming is Not a Zero Sum Game
Simply put, a Zero Sum Game is a situation where in order for one person to win, another person has to lose. Or, in order for someone to gain something, someone has to lose that thing. Think about poker. In order for you to increase your chips, you have to win them from the other players, decreasing their earnings. At the tournament level, the game ends when one player has everything and everyone else has nothing.
It seems that a lot of people try to treat programming/technology like that. I know the counter argument to that is that I’m blind and crazy. Haven’t I seen blogs and been to conferences and user groups? People are sharing knowledge all of the time. That is true and that is great. Unfortunately, those people aren’t even close to the majority of developers. The majority are the Dark Matter Developers, and they are what is out there*. Additionally, this kind of selfish behavior I’m describing has shown itself to be human nature in all areas of the workplace.
No matter what the industry, people are often reluctant to share knowledge with others. Sometimes they are afraid that if someone else knows how to do “their thing”, that they will be easily replaced by someone else – probably someone else making less. The key is that if you can be replaced over one or two things, you have larger issues. If someone else knows how to do the thing that you are holding on to, that frees you up to learn something else and grow your skills and your worth to the organization. If nothing else, the act of teaching something to another person will build your own “instruction skill”. Being willing to always teach others also makes you more valuable to your employer because it shows that you are a team player.
Besides job insecurities, another thing that will keep developers from sharing their knowledge is that they like being the only one to know things. I’ve met several people that fit this bill and I’m ashamed to admit that 15 years ago, I fit this bill. This one is pure ego and sadly, our community is known for some very big egos. If you are holding on to knowledge because you like being the keeper of that knowledge, you need to let that go.
When you were first learning, someone had to teach you. Even if you were “self taught”, you most likely read manuals/documentation, books, blog posts, Stack Overflow, attended conferences, user groups, etc. Most people did not gain their entire technology education by hacking around and figuring out 100% of things for themselves and never learning from anyone. I would wager money that if such a person existed, their code would be full of bugs, security holes, and performance issues because they’ve never learned what hundreds of thousands of “thought hours” have worked through.
If you learned from someone, teach someone else. Pay it forward. Pass it on. Give back. Mentor someone. Whatever you need to hear to get you motivated, hear it and act. Helping others ultimately helps you. If you’ll allow me one last cliche, “a rising tide lifts all boats”.
* Incidentally, I realize that this post may very well be preaching to the choir, since these Dark Matter Developers would probably not be reading this. My hope is that this post can be instructive, or at least serve as a reminder as you are out in the world to help recognize your own bias as well as the biases of those around you.