| Working with arrogant people is a bummer. I have very little patience for people who know more than they do, and people who take opportunities to tear down rather than educate. This sort of behavior is bad for teams and bad for culture. Distributing the responsibility of code is a possible strategy. More pairs programming, will force people to work together, and remind everyone that no individual is really that smart. Incorporating mentoring responsibilities into employees work, is another way to distribute responsibility. Rotating job descriptions was a strategy used at qumulo. If you were hired on as a SWE, you would be rotated to different teams every few months in order to increase your understanding of entire code base. Bakes diversity comparable to your employee diversity into the code base. At Isilon pairs programming was used during code reviews, and reviewers were often held responsible to later fixes. Flat teams are used at Galois, Grammatech (Research), Steam, and JPL (Research). Many remote-first companies require all comments to be made in the ticket. This forces people to explain their concerns in writing. "Is dumb" is not an actionable critique. Ideally arrogance should be filtered prior to hiring, but if you have a lot of it in the company, its worth asking why and how to grow those people toward cooperative thinking. If the person you are hiring believe they are "the smartest person in the room" then their growth is dependent on them not being in that room. Firing brilliant people is a wonderful past-time. |