Once upon a time I worked with a developer who was a jerk. His bosses didn’t like him, his colleagues didn’t like him, he wasn’t a team player. He produced though, and his code worked, and he would work all night to fix field-reported issues. Consequently, the field loved him and had nothing bad to say about him. Then he was fired. His replacement was a moron, who re-architected the feature in ways that set it back by man-years. The moron was not sanctioned for this activity, but rather was actively praised for his efforts, even as those efforts dwindled to half-time and quarter-time. Eventually the moron left to pursue consulting, where his charming personality probably led to great success. I haven’t looked in a while, but when I left the company this feature still hadn’t recovered to the state in which the jerk had left it. Two observations:
1) If all your defenders are field people and you are not, you may be a jerk. Field sales and sales engineers live on the revenue-generation side of the line, and they are allowed to be jerks as long as they produce. Furthermore, they produce by finding common ground and working with whoever is put in front of them, no matter how difficult the customer may be. So, if your only defenders are people who professionally put up with shit and value blunt behavior, it’s pretty likely that you’re generating an unhelpful level of shit.
2) Shit-generating jerks are disruptive elements in a team, it’s true. That doesn’t mean that they’re not useful though, and the wise manager will compartmentalize them in a way that allows their work to continue. This is intensely difficult to do, particularly in an organization which is process-heavy and metrics-oriented, because the jerk will not play well with your Agile development practice or team-coding sessions. What they will do is produce interesting and useful things. Protect them.