Smart Jerks Aren't Worth It
Myths proliferate in every culture. Some are harmless. Some are not. The myth of the "difficult genius" is perhaps one of the most harmful myths that still exist in software development today.
Your software is hurt by toxic personalities on your team. Smart jerks aren't worth it. Let's dispel the myth.
The Myth of the Difficult Genius
The myth of the "difficult genius" is not unique to software development. The myth itself proliferates in part because of famously difficult-to-deal-with scientists, mathematicians, engineers, and more throughout history.
A steady diet of books, movies, and pop culture have taught us that great things are accomplished by jerks and the people who tolerate them. This has been true.
It is also true that great things have been accomplished by well-functioning cohesive teams of people who respected each other. That, however, isn't seen as fodder for great storytelling (who wants to watch or read about a team getting along).
The important question is: which one do you want your software team to resemble?:
- "The jerk and those who tolerate them"? Or...
- "The cohesive team that accomplishes great things"?
What Is A Jerk?
Communication styles differ for many reasons: cultural, experiential, and physical. The intent here is not to label every person that we come into conflict with as a "jerk".
However, there is such a thing as toxic behavior. In the "difficult genius" tolerated by a dev team, that behavior can often be labeled as "obnoxiously aggressive". I borrow that term from the video that inspired this blog post, delivered by my friend Jamie Smyth from The Smyth Group.
You can find the original video below, and I encourage you to stop right now and watch it. It's only 2 minutes long, but contains so much truth in such a short amount of time. It also gives good examples of what we're talking about when we say someone is acting like a jerk.
Let's define the term "jerk" here as someone who is both intentionally, and obnoxiously aggressive. Aggressive in their enforcement of their own opinions and dismissive of others'. Obnoxious in the frequency of unnecessary negative interactions with them. Intentional in that they understand their behavior is aggressive, and choose not to adjust it.
Ultimately, you know you're dealing with someone who is acting like a jerk by how you feel after interacting with them. If most interactions leave you feeling emotionally exhausted, dismissed, belittled, or angry, you may be dealing with toxic behavior on your team.
Toxic behavior is ruinous both to software and the devs who build it. But it's often excused.
The Excuses
There are various excuses teams give themselves for tolerating toxic behavior. These excuses are wrong.
They're The Only Ones Who...
Sometimes the source of toxicity is also a nexus of legacy information. They're the "only ones" who know how something works, or the only ones with a particular skill.
If that is true, your team is in danger. Good documentation and process should improve everyone's knowledge and reduce dependencies on any single individual.
If they really are "the only ones" then you have a process problem, a symptom of which is tolerance of toxic behavior.
They Produce
Sometimes the source of toxicity produces a lot of code. If this is the excuse we give then we are valuing the wrong things.
A well-functioning, cohesive, happy team can come up with novel solutions, better implementations, and well-reviewed code. Toxic behavior prevents this. Therefore, you are making a bad sacrifice: team output for individual velocity.
Value most what the team as a whole produces and how they feel while they're producing it. You'll likely lose less people to employee churn, which means you'll have a more mature team producing more software in the long run.
They're Logical
No. They're people. They're emotional. The fact that they are inconsiderate of others does not make them more logical.
If someone is obnoxiously aggressive, they are satisfying some sort of emotional need at the expense of others. Maybe it's rooted in ego. Maybe it's rooted in insecurity.
The myth of the "difficult genius" is rooted partially in this false notion of logic over emotion. The smart jerk is showing that they are unable to self-regulate their emotions.
They aren't logical. They're emotionally immature.
They're Brilliant
Smart jerks are often tolerated because they're smart. We like learning from smart people, even if it's just from watching them work.
This is the fundamental benefit of the smart jerk. But if that person's behavior negatively impacts team dynamics, makes people afraid to speak up, and squashes group brainstorming, the cost is simply too high.
There are plenty of brilliant coders in the world. Teams need brilliant coders who are also tolerable to work with. Brilliance gets you in the door, but a dev's impact on team cohesiveness and output decides their long-term outlook.
The Impact
Here is a list of just some of the negative effects of tolerating an aggressively obnoxious coder:
- Loss of Ideas: When people are afraid to speak up, great ideas are lost to silence.
- Loss of Energy: When team members' emotional energy is used up dealing with toxic behavior, they have less to give to their work, their code, their teammates, the customers and the users.
- Loss of Motivation: For a team to do its best work, its members need to want to work. Not wanting to work with a source of toxicity ends up means not wanting to work at all.
Any of these are devastating to a team's output and longevity. Be aware of the costs of tolerating toxic behavior.
Can They Be Helped?
A smart jerk can change their ways. Your team may choose to take whatever steps available to deal with the issue. Whether that's one-on-one with a manager, HR, or some other avenue.
It can also be a matter of training. I have a course on team dynamics and soft skills, which I'll mention later.
It's up to your team on if or how to help the source of toxicity. Good organizations work to improve their members. However, every healthy safe organization also establishes boundaries that cannot be crossed.
Prevention
If you and your team are already dealing with a "difficult genius" (i.e. smart jerk), then dealing with the problem within your organizational structure may end up being necessary. Whether that's trying to help the person to change their behavior, or deciding they aren't a good fit for the team.
Beyond that, you should be interested in prevention. We need to find the right people to work with. Plus we should learn how to best interact with our team members, and ensure that we aren't acting like a jerk!
Finding Brilliant People Who Are Nice to Work With
We all want to work with smart people. They produce good work and we improve as we learn things from them. But, for best results, we also need those people to be nice to work with.
Finding those people is not easy. At times, there is a degree of 'taking a chance'. In other cases it's a matter of recommendations from people you trust. There's also the care involved in your organization's hiring practices.
What I can at least do, is give you a recommendation. The folks at The Smyth Group who made the video referenced earlier are both brilliant and nice to work with.
They build custom software, train or bolt on to your existing dev team, help with hiring, and provide an array of useful dev team advisory services.
Reach out to me at talicea@thesmythgroup.com to get in touch. I'm their director of education.
Not Being a Jerk
We all individually need to learn how to improve team dynamics and work with the people around us, but devs generally aren't given that education. We need to avoid being the jerk ourselves, and learn how to best communicate and interact with our team members, within the unique environment that is a dev team.
Since that education is sorely lacking, I made a course. It's called Team Dynamics and Soft Skills for Developers. I put my 25 years of dev, management, tech education, and interpersonal communication training into it. I think you and your team will find it useful.
Teams Are People
Dev teams are a collection of people. People need dignity and respect. Smart jerks injure that basic need within your team dynamic. They hurt your team and your software.
Help them or decide they aren't a fit for your team. Either way, don't tolerate them.
The benefits of their smarts are outweighed by the cost of their toxicity. They aren't worth it.