Why are Software Engineering Interviews (mostly) useless?
I haven’t been writing for a while because I have been distracted moving house and not had enough time to muse and write. This particular article I have been thinking about for a long time, so I am glad I finally had time to smash it out. Enjoy!
Why are Software Engineering Interviews (mostly) useless?
Let me start off with a story. This is a story about two newspapers hiring journalists. They both put out the job ad:
Seeking an experienced journalist good at sniffing out stories.
They get a few applicants, and some are good enough to interview as they have great CVs with tons of experience. Excellent, think the potential employers. ga Newspaper one - let’s call it The Dependency - decides to send the interviewees a questionnaire they must do online without google to test their spelling, punctuation and grammar. Newspaper two - let’s call this one The Solid Times - asks the interviewees to write a short article on something of their choosing and send over some past work.
Which one will hire the better journalist?
I am hoping at this point, dear reader, you chose The Solid Times as the one with the far superior hiring policy! They have hired someone with the art of writing a good piece of journalism, the ability to sniff out a story, and craft a tale out of it. What has The Dependency hired? Who knows, but they can spell well. Despite there being spell checkers and google in this world, which negates the need to memorise every word.
I’ve done a fair few interviews in my time, and always been mystified how the interview is just like The Dependency: it is unrelated to the job they want to give me. How many times in any of my jobs have I ever done anything remotely leet code? Maybe once or twice in about 8 years. In interviews, I have been asked to write a function to traverse a file tree, another time to identify a sorting algorithm, and another time to do basic SQL on paper(!). No tests for the actual skills I need for my job: the excellent googling skills so I can find out anything in under five minutes, the ability to understand, design and navigate complex systems, and (hopefully) writing code others don’t hate. Why don’t more companies test for this if this is what you want me to do?
Leet code tests have their place: some people enjoy them, some jobs do require those skills. But if you don’t, don’t test for it.
I remember reading in an excellent book on management Peopleware (I highly recommend reading) that a job interview should be an audition for the actual job. Give someone a task they might do in the actual job in an hour and see how they go in a pair programming exercise that is not an exam, but an audition for actually working with them.
Interviews should at least be a little fun too :)