I think the type of competition you describe (pitting folks against one another) is grossly detrimental, and pretty prevalent in the software industry. A lot of the time it reminds me of the dynamic between anonymous folks playing on the same team in Call Of Duty or whatever cool multiplayer game whipper-snappers are playing these days.
By that I mean: you're technically on the same team, but you'll also berate, shame and ultimately try to beat your teammates if it's better for you as an individual.
With that said, competition is not inherently bad. @bosepchuk
describes this pretty well in his comment.
A lot of very effective teams are full of super competitive folks, but the purpose and drive behind their competitive nature is doing the best job, getting the best result or winning the game (depending on the context).
This is the culture I aspire to create in the teams I work with. I want them to strive to do better, not to beat their neighbor, but to elevate the team. It's a difficult balance to strike, but definitely doable.
I think if teams were competitive like best friends rather than frenemies, we would see a lot of progress. Think about it, I know it's happened to me: Ever have a buddy of yours walking next to you when you get to the bottom of a big flight if stairs? You get to the first step, lock eyes, and without a word you both take off up the stairs. How does it usually end? You both breathless laugh as the loser remarks about the winner clearly making progress on the treadmill, then the winner posturing a bit before making any excuse for how they won: "No, its those shoes your wearing. If you had sneakers on like me you would've totally taken me for sure!" Then, somehow, drinking gets involved but your both silently motivated to do stairs more often for next time. I think that kind of competition is more comradery than anything else.
I've seen comments on the military and I've got an uncle who was USMC recon in Vietnam. From what he has said, when your up against it, you don't care if you hate they guts of the guy next to you because if he dies, then that is one less guy between the VC and you, so you fight to keep him alive just like everyone else.
We, as developers, need to realize that each of our roles in the team is equally important. Think that Jr dev is some idiot kid fresh out of school so you troll her mercilessly? That's fine, just be prepared to fix all your own bugs for 2-3 weeks when she quits and they look for a replacement.
We are all in this together. But management needs to realize that they are not in a position of power, but one of leadership. Meaning that you are responsible for ensuring success, but any failures fall directly on you and nobody else. That means keeping everybody involved, up to speed, and productive. Which means getting involved and getting your hands dirty. There is a reason the web and cloud are called "the wild". This world of tech is not so much an efficient republic as it is the Wild West. What counts is you and yours being alive at the end of the day, and that which seeks to destroy you has failed until tomorrow. That can't happen by being a hype man/woman or cheerleader. Leadership means knowing your team inside and out, caring about their personal lives and wanting them to succeed. Because if your project fails, it is your fault because you did not do enough to ensure everyone succeeded.
This, in my opinion and personal experience, is the largest failing in technology that leads to competitiveness. It's not a frat house. The guy who can do the longest keg stand is not the champion of your team. If you can understand that, then you are not qualified for leadership. Lead from the front.
Sorry for the rant! The end.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.