On core skills and senior engineering

Like many people, I was disappointed but not surprised to see that anti-diversity "manifesto" that's been making the rounds on the internet over the past week. There has been quite a lot written about the whole thing already, and I'm not trying to duplicate any of that.  But these conversations do tie in with some that my team happened to be having last week around career growth, what it means to be a senior engineer, and how hiring and promotion processes can impact team and company culture, so I guess now seems like as good a time as any for me to finally write down some of my thoughts on the subject.

I've linked to this post by John Allspaw before and I'll probably link to it again - being a senior engineer is really about being a mature engineer. Being a mature engineer means so much more than just technical skills, but it seems to me that in most cases in the tech industry, we see having some certain level of tech/coding skill as being the only real prerequisite to being called a senior engineer, with any so-called "soft" skills being deemed optional or an added bonus.

“Senior” engineers are more than just people with good tech skills.

“Senior” engineers are more than just people with good tech skills.

This focus on only tech skills leads to organizations where the so-called "brilliant assholes" are tolerated. You know, the sort where "nobody can stand working with him but ZOMG HIS CODEZZZ IS SOOOO GOOD". In my experiences at least, white men are much more frequently able to get away with this sort of skill imbalance, while women and people of color much more often can't. I've seen this play out on too many interview panels in too many organizations, with female candidates being passed up because they "weren't easy to talk to" while similarly-qualified men advanced through the interview processes with the same behavior.

We need to get out of this situation where white men are held to a different standard of behavior in the workplace than other groups of people. We need to realize that so-called "soft" skills like collaboration, communication, and empathy are not optional, but are in fact key to engineering. As Yonatan Zunger said,

Essentially, engineering is all about cooperation, collaboration, and empathy for both your colleagues and your customers. If someone told you that engineering was a field where you could get away with not dealing with people or feelings, then I’m very sorry to tell you that you have been lied to. Solitary work is something that only happens at the most junior levels, and even then it’s only possible because someone senior to you — most likely your manager — has been putting in long hours to build up the social structures in your group that let you focus on code.

I think we need to start referring to these types of skills as "core" skills rather than "soft" skills, because they are the core of successful, mature engineering. We need to stop viewing them as nice to have and start seeing them as mandatory, and we need to stop hiring and promoting people who don't have them.

Real senior engineering requires collaboration, communication, and empathy skills.

Real senior engineering requires collaboration, communication, and empathy skills.

People who don't have some minimum level of collaboration, communication, and empathy skills are not senior engineers. It doesn't matter how well they can code, if they aren't also mature and empathetic people capable of working well as part of a team and a larger organization. Being able to do something clever with a B-tree on a whiteboard during an interview process does not mean that a person is a mature, collaborative, and empathetic engineer. Engineering is so much more than just code. Tolerating antisocial, biased, or abusive behavior from people just because they can write good code does this industry and everyone in it a disservice.

We as an industry need to start making these core skills explicitly part of our interview and promotion processes. Skills matrices for promotions (you do have those, right? Because you shouldn't be promoting people based on just "gut feel" and who happens to be best bros with their manager) should include things like the ability to work on diverse teams, the ability to empathize with others, having effective communications skills, and so forth. If someone has a lot of technical skill but isn't demonstrating empathy or collaborative skills, they should have to grow those skills in order to advance to more senior positions.

Hiring processes should include questions and methodologies that try to assess these skills as well. I love asking candidates to tell me about a disagreement they had with a coworker, and to tell me about a time when they were wrong about something - if someone can't come up with a single example of when they were wrong, that's a huge red flag. Every single person has been wrong about something at some point in their lives, and failing to recognize or admit that is not a sign of a mature engineer.

I like using diverse, multi-person interview panels for this reason. More than once I've been co-interviewing a candidate and watched them completely ignore me and speak only to the man who was conducting the interview with me. If I had been doing those interviews alone, that behavior might not have been so obvious, but doing multi-person interviews can do a lot towards finding out how people behave in group settings. Asking candidates about their best and worst experiences working in a group can help suss out how they relate to and interact with other people. Asking them about an experience they found unfair in the workplace might help ascertain if they have any underlying feelings of entitlement.

And as an industry we, especially those of us with more privilege and more systemic power, need to be working on these things proactively rather than reactively. Don't wait until someone in your organization publishes their own manifesto, because if your culture has gotten to the point where they feel safe publicly saying that they think women are just biologically worse at engineering, it is probably toxic beyond repair. If you have influence over hiring and firing, over promotions, over interview and review processes, it is your responsibility to make sure that those processes are fair. You can help make collaboration and empathy something you require of the senior engineers within your organization, not just something that's sometimes an added bonus.

If you're a white man in tech and you don't agree with the writer of the manifesto, it is your responsibility to stand up and say something. And don't just say something once. As long as women, people of color, LGBTQ people, keep having to defend our right to even be in this industry, you have to keep speaking up as well. Say something to that problematic dude on your team. Speak up when you see microaggressions. Don't advocate for the hiring and promotion of people who lack basic empathy. I've had plenty of men tell me in private over the years, "oh, that sucks, I'm sorry you have to deal with this", but very very few willing to stand up and say the same thing in public. The standard you walk by is the standard you accept, and if you sit silently by in public when things like that happen you are saying (whether you intend to or not) that you are ok with that sort of behavior.

Don't be ok with this sort of thing. Don't stand for "senior" engineers who don't have basic collaboration, communication, and empathy skills. Realize how core these sorts of skills are to mature engineering, and start fixing your hiring and promotion processes to require these skills of all your employees, not just those from underrepresented groups. Help to make this industry and the world a better place by not tolerating any more so-called "brilliant assholes" who end up doing harm to the people, teams, and organizations around them.