It was after the fourth interview with the company when the email came. By that time, I’d interviewed with almost half the company and had come to think of them as “friends.” That made the message a surprise.
“But in the end, the team felt that you didn’t quite have the depth of experience we were looking for.”
Having developed software for 25 years, I couldn’t see what experience I lacked. Yet I had to admit it wasn’t wholly unexpected. It was my third software interview that ended in a pass.
When I say it was my third interview, I mean that quite literally. I’ve only had three software interviews ever. I had previously owned a software consulting company that wrote software for scientists, and every job I’ve had in software came from those clients not wanting to see me go.
I knew I was missing something about the interview process. When I asked my friend what I was doing wrong, he was non-nonchalant.
“Did you study?” He asked.
“Study? You mean prepare? Like learn about the company and their people and such? Of course!”
“No, did you study?”
“What would I study?”
“Programming exercises, example problems, data structures, algorithms. You know, study.”
My friend, let’s call him Sam, is an exceptional programmer. I first met him when he interviewed me for a job. Later I hired him at my consulting firm. We then worked together at another company. I trust Sam very much, but I had to consider that he might be mentally unstable. I smiled and nodded pleasantly, then forced myself to ask what couldn’t possibly be a sensible question.
“Study? Like in college?”
It was then that Sam, one of the best developers I know, told me he had 2–3 interviews per week for 6 months before finding his current job. I realized what I was missing was something I couldn’t see because I am not a part of that culture.
Despite so many years in software, I was first an anthropologist. As such, I am very attuned to culture. Not “theatre” (spoken dramatically) or “art” (spoken pretentiously) or any such vague notions of what we call “culture” but rather the social norms and constructs that guide how social groups act and interact.
“Often culture colors our perceptions in ways we don’t recognize, such as our interactions with those of different races.
Culture not only defines how we act, but also what we value. We can see this through language, the popular example being the number of Inuit words for snow, but I once had a Bulgarian woman tell me she was amazed that English has so many words for fire. Another example is the prejudices from 1000 years ago that we carry as “truths:” That “dining” is more proper than merely “eating.” Often culture colors our perceptions in ways we don’t recognize, such as our interactions with those of different races.
Finally culture can define for us what is real, what exists. In some societies, there is no distinction between red and yellow, or between blue and green. While green may exist for us, we could argue all day with the Tzeltal of the Mexican highlands about the difference between “blue” vs “blue mixed with yellow” and they would just look at us like we’re crazy. For them, there is only blue. Green simply does not exist.
Before you think them primitive, ask yourself why we have words for light red (pink) and light brown (tan) but no word for light blue. One could argue all day with us about the difference between “blue” and “blue mixed with white” and we would just look at them like they’re crazy. For us, there is only blue. Whatever color they are talking about simply does not exist.
And culture does not apply only to entire language groups or people. There are cultures within language groups (think of British and Americans, for instance), and there are even cultures within small groups such as families or even academic sectors.
I realized I came from a different culture than programmers the first time I spoke at a technology conference. Coming from the outside, I expected some interest in why I would present at a tech conference. What I did not expect was to be constantly challenged about it.
“…and everyone still thinks that, but they’re wrong, do you know why?”
I had introduced myself to a gentleman and had been immediately posed that question. I can’t remember the specific content, obscure as it was — something about the efficiency of data structures designed for 32 bits. What struck me was not the content, but that the question had been presented as…for lack of a better word…a test.
“Uh, no.” I said, and the gentleman moved on, quickly forgetting that I existed.
That was one of many similar conversations. I was constantly tested on my knowledge of everything from data structures to the origins of the Klingon language. It felt as though I were in a gladiator ring where our weapons were not swords and lances but our knowledge of obscure pop culture references and programming arcana. There was no time for getting to know each other, discovering our interests as people, then using those interests to have a common ground for communication. Software developers, it seemed, are not always the best at interpersonal communication.
That was a significant moment for me, because I was at the conference to speak about bringing scientists and programmers together as a way to create better tools to help our environment. I went in thinking we could help one another create a better world, but I left convinced that I was not welcome unless I knew the proper pronunciation of Coruscant or how to invert a binary tree without…doing whatever I was not supposed to do when inverting a binary tree.
When Sam told me that he’d interviewed 2–3 times per week for 6 months before finding a job, my jaw dropped, but my eyes opened. I could not believe that this developer, who had proven his worth in job after job, had been dragged through that much mud. But I began to see why he had been.
There are so many social media posts about software interviews it’s impossible to count them. From the happy-go-lucky howto to the listicles, from justifications of the whiteboard exam to outright condemnations of them.
There is even a combination of listicle and condemnation, admonishing readers to create new interviewing methods with “don’t be that guy” in an essay that does nothing but list current interview types without promoting with any new methods itself. It was apparently written by “that guy.” You know, the one we’re not supposed to be.
Another essay, with almost maniacal enthusiasm, described alternatives to whiteboarding as if the actual use of a whiteboard, specifically, was the fundamental issue.
Candidates, consider bringing your own laptop: instead of hand-writing code, ask to open up your favorite IDE and code it right on front of them. Time limits (if imposed) make it feel like a hackathon anyway, so ask to hack!
I’ve read dozens of essays and posts on software interviews and they all sound the same. Every one of them discusses this frustrating yellowish-blue color that’s, well of course it’s blue, but somehow it’s just not blue enough.
I had trouble in my software interviews and couldn’t understand that trouble because I came from a different culture, that of anthropology and hydrology. My hydrology interviewers did not demand I answer trivia. They asked questions based on what the culture values: who I am, what I’ve done, how do I learn, and how I work with others. An interviewer would never ask me to work out a mathematical model to estimate watershed response on a whiteboard because they would know that any competent hydrologist could learn that if they didn’t already know it.
Similarly, software interviews are based on what the culture values: knowledge, arcana, and challenge based proof that you are, in essence, worth talking to. The software interview process is not broken, it works perfectly. Like any interview process, it promotes and protect the culture from which it was born. Interviewers will universally tell you they “just want to see how a person thinks.” The reality is that to pass the test you have to show them you essentially think the same way they do.
Software development has a culture essentially born of a single demographic. Just as our current English/American culture carries the prejudices of 11th Century England with our preference for “dining” over “eating,” so does our software culture carry the prejudices of the disaffected white male geek of the 70s and 80s with our preference for intellectual sparring over interpersonal communication and emotional support. The value focus of the entire industry is on proving you can answer a trivia question rather than on building a nurturing environment in which you know any competent developer could learn the answer if they don’t already know it.
In other words, you can argue with software developers all you want about the difference between “whiteboarding” vs “building a nurturing work environment” and they would just look at you like you’re crazy. For them, there is only whiteboarding. Nurturing work environments simply do not exist.
My recent job interviews made me feel like I did during that first tech conference: As if I am one in a million. At that conference, it didn’t matter who I was as a person, how quickly I learned, or what I’d done in the past. If I couldn’t properly pronounce Worf’s name fast enough, there were 999,999 other developers at that conference who had actually studied Klingon and were willing to play the trivia game.
Software interviewers use coding challenges because they don’t need to care about who you are. You are one in a million. There are 999,999 other developers who’ve studied programming exercises and are willing to play the whiteboard game. The value focus of software is not on creating a nurturing work environment where any competent developer can succeed because that would mean valuing interpersonal relationships. It would mean creating onboarding programs and mentoring employees — and I don’t mean all those “mentoring” programs where a new employee is chucked under the “supervision” of an already overworked employee who themselves have no support and would rather they just go away.
As I casually look for another job, I see so many postings that talk about “valuing our developers” and can’t help but feel developers are valued in the same way we would value very expensive robots. I have to question whether I want to be here anymore at all. After 25 years developing software in various fields, the prospect of spending 6 months taking 2–3 tests per week until I can prove to someone I actually know how to program is bad enough. Do I really want to be in an industry that cares more about trivia than it does about building a work environment in which any competent developer can succeed? Do I really want to be dragged through that mud just so I can be valued as if I’m merely a very expensive robot?
I’m not sure being one in a million is worth it to me anymore.
To those many developers who feel it is worth it, but are complaining about software interviews: Just stop. Any efforts to change the software interview are childish and fruitless. You must change the culture. You must change what you value. You must destroy the idea that it’s necessary for people to prove they are trivia rockstars and you must honestly value work environments that can nurture any competent developer into success. Until you do that, complaining about whiteboarding interviews is the same as complaining about that frustrating yellowish-blue color when you don’t even realize other colors can exist.