Sunday, February 26, 2017

Bad apples

There's a lot of stuff to think about, recently. A SHA-1 collision was displayed; a bad security bug was uncovered; and of course there's the weather.

But what's really been on my mind recently is working, as is perhaps to be expected since I just changed jobs.

It's not easy for me to select a place of employment. I spend an enormous amount of time at my office, and the people I spend my time with are among the best friends I've made. I've been lucky to have had a career, and to have had a certain amount of lucky opportunities in that career, which have allowed me to have, by and large, an extremely enjoyable professional life.

Some people, however, are not so lucky. For example, Susan Fowler: Reflecting On One Very, Very Strange Year At Uber

Women were transferring out of the organization, and those who couldn't transfer were quitting or preparing to quit. There were two major reasons for this: there was the organizational chaos, and there was also the sexism within the organization.

Mike Isaac in the New York Times presents some evidence that this was not an isolated incident: Inside Uber’s Aggressive, Unrestrained Workplace Culture

Interviews with more than 30 current and former Uber employees, as well as reviews of internal emails, chat logs and tape-recorded meetings, paint a picture of an often unrestrained workplace culture. Among the most egregious accusations from employees, who either witnessed or were subject to incidents and who asked to remain anonymous because of confidentiality agreements and fear of retaliation: One Uber manager groped female co-workers’ breasts at a company retreat in Las Vegas. A director shouted a homophobic slur at a subordinate during a heated confrontation in a meeting. Another manager threatened to beat an underperforming employee’s head in with a baseball bat.

The two articles paint a truly dreadful picture.

Other writers present a more nuanced view, but still, there is clearly a severe "Brogrammer" problem going on here.

And it remains a rampant problem throughout the industry.

So, for now, let's stop talking (just) about Uber.

And let's have that broader discussion.

For my contribution, I'm going to suggest that a large part of the problem is: how we hire.

Americans are awful at figuring out how to decide who gets what job. In particular, we unconsciously (or perhaps even consciously) discriminate against old people and against people with unrelated and irrelevant other issues.

That's just a general problem, and is very hard to fix.

A much more specific, and much more fixable problem, plagues the software industry. For lack of a better term, I'll call it: "Google does it, so it must be good."

By which I mean that company after company models their hiring process on Google's.

Google are well-known for their extremely rigorous, and yet fundamentally bizarre, approach to hiring. Now, this approach seems to mostly work for Google. In service of their desire to be objective, and scientific, and precise, Google have worked very hard to make hiring as cut-and-dried and impersonal as possible.

But many other high tech companies, in their desire to be the next Google, parrot Google's every behavior, but they don't understand WHY Google do things the way they do, so the result is disasters like this: My Interview at Uber

My next interview was in yet another room. My recruiter once again came back to grab me and walked me to the new location. On the way I got to see a bunch of young Uber employees hanging out/working in various nooks and spaces that were designed to look like a mix between a Club and Google office, but were clearly neither.

Next interview consisted of two engineers (a guy and a girl, both young and smart) asking me some basic front end questions. By that point, I had a pretty good feeling that Uber was not for me, and I probably was not for Uber, but we went through the motion. The guy interviewer was so tired from “staying up last night working” that he drank two energy drinks during our interview and forgot his laptop when he left.

My next interview was in the same room, with two more engineers – an Uber old-timer and a recently hired engineer. The old-timer guy seemed completely checked out and the newer girl seemed not fully engaged. We talked for about 40 minutes about some random stuff and they passed me onto my recruiter.

This, in my opinion, is exactly where the problem resides: YOU DON'T WANT HIRING TO BE IMPERSONAL!

Software engineering is a very social, very human, very interactive occupation. A bunch of extremely smart people sit around together, and talk, and look at problems from different perspectives, and think about ways those problems could be solved, and discuss what might be good or bad about those various approaches, and after it's all said and done some software emerges.

Sometimes the software doesn't even emerge; software engineering is just that hard.

But here's the thing: software engineering is much less about coding, and much more about communication, then people think.

I'm not saying that coding is easy; it's an extremely hard thing, and you want to find people who are great coders.

But it's even MORE important that they are great PEOPLE.

If you try to take the "human" out of these "human resources", you get the Google Interview Process, with its detached, anonymous, and dispassionate panels of interviewers-in-lab-coats, and what results is this: Why I Don't Talk to Google Recruiters

I wanted to be interviewed by the person who really needed me: my future boss. That person will understand my profile and won't ask pointless questions about algorithms, simply because he or she will know what my duties will be and what kind of problems I will be capable of solving, if they hired me.

This issue goes both ways: not only is it critical for your company that you involve the people who will be your co-workers in the selection process, it's critical for the interviewee, as well. Why is that? Well, the one question that absolutely MUST be answered during the interview process, and which the Google process goes to extreme lengths to AVOID answering, is this:

Who are these people who I would be working with? Are they good people, or are they jerks? Can I communicate with them? Do they drive me crazy? Can I envision spending hours and days and weeks and months and years of my life sitting in meeting rooms with them, talking about anything and everything?

You can include this in your interview process, and yet still be very rigorous and keep very high standards. For example, at my new job, the interview process was long and involved and highly-structured; it included a multi-hour programming test, as well as several days of lengthy in-person and remote interviews with various different team members. I talked with my manager, my manager's manager, various team leads of related teams, as well as nearly every member of the team I actually joined. We spent hours sitting in conference rooms together, discussing arcane details of software engineering, alternating back-and-forth between them grilling me and me grilling them.

But there were two very important differences between this approach, and the Google approach, and these two differences were actually quite closely related:

  1. Firstly, everybody I talked with (save a few corporate administrative staff) was directly involved with the team I was being considered for, and with the project I was a candidate to join.

    That meant that they cared deeply about making sure that I was the "right" person for that role, and, conversely, I cared deeply about making sure that they were the "right" people for me to work with.

  2. Secondly, it turns out that my new company has an fundamental rule that actually outranks the criteria of selecting for technical excellence and software aptitude.

    Their number one hiring criterion is: "no bad apples" (well, internally they use a rather coarser term, but the idea is the same).

That is, you want the best employees, but "best" is a complicated thing.

And, clearly, the high tech industry as a whole is not getting it right.


  1. Hi Bryan! My friend Andrew linked to this great post as an example of "how to do it right" in comparison to the recent article making the rounds about silly whiteboarding interview techniques ( Your point about hiring "no bad apples" got me thinking about selecting for diversity, in all its obvious and non-obvious expressions. I suppose one concern about the "no bad apples" rule is that you create selection bias for people with similar personalities, and this may create blind spots that create risk. As you put it, you want the best employees, but "best" is a complicated thing. So is diversity. Here's a short post I wrote on that topic, and would love to get your thoughts.

  2. I worked for a government agency that hired scientists and engineers right out of college. Most of the hiring criteria involved the applicant's college record, although there were interviews by other scientists and engineers, not the ones with whom the candidate might be working. After hiring, the new employee jumped around four times in a year, then settled down. Those who did not land with a compatible team, as well as those who didn't really like the environment in a remote location, left after a year or so. It was remarkably inefficient, wasted the government's money, and did not weed out bad apples, who were then enormously hard to fire.