TL;DR This is me ranting about crappy tech interview experiences
You’re wasting my time; I am wasting yours
This is my career rant for the summer of 2022. I’ve been on a run of unsatisfying (and unsuccessful) tech interviews in the last couple of months. I’ve had companies that have:
- changed the job description after my interview
- rejected me for not having skills they didn’t ask me about
- requested multiple rounds of technical interviews for a freelance job
- done ‘technical interviews’ with no actual tech questions
- given me a take-home coding assignment of at least 30hrs of work
On my side, it’s rather soul-destroying how disorganised most companies I’ve interviewed with have been lately. Whilst they’re generally unsatisfying and a waste of time, I’m not so vainglorious as to say my lack of success has been entirely the fault of others. My attitude towards technical interviews sucks. I’m terrible at them. I hate them. I’m just as likely to bow out of the application process as you are to reject me.
Tech interviews - in principle - attempt to convince a company that a total stranger can do certain things with software. In practice, they’re generally a virtue-signalling, largely improvised facsimile of what more successful software companies are assumed to be doing. Companies learn very little; successful candidates are generally the ones who have gamed the system.
When we do a tech interview, you are wasting my time. And I’m wasting yours.
Why tech interviews are you wasting my time
I’ve created a lot of resources online to show my skillset and put them all on my CV, but you haven’t read them. I get it. There’s a lot to do, and perusing someone’s blog or Github profile for clues is long.
You won’t read my code because reading code takes 10x more time and effort than writing it. So even if my Github is great, it’s doubtful you’ll actually see it. I know what you’re going to do.
You think you should be doing what FAANG does, right? Instead of looking at a candidate’s existing skills and portfolio, you can copy and paste something from Hackerrank or Leetcode and have them solve it on the board. I’m terrible, terrible, terrible at these.
Unfortunately, Leetcode challenges are poor cyphers for real-world problems. Particularly in DevOps, my specialism. There is no test for debugging SSL certificate chains in production at 3am. The number of times you’re ever required to find the diagonal sum of a multi-dimensional array in a career is probably about one. That one time being at your FAANG interview.
You might set me a take-home coding challenge. Again, this sounds like what the pros do, right? You’ll probably wildly underestimate the time it will take. A company recently wanted me to choose an application, terraform an infra for it (including CI/CD pipelines) and have the whole thing launchable from zero in a single line. They estimated this piece of work at four hours. Four hours if I copied and pasted the lot from Github, perhaps. Even if I was amenable to wasting so much of my time, experience tells me you have no objective criteria or resources to properly examine my code. Reading code takes way too long, remember?
This is one universal truism: Your recruiter knows LITERALLY NOTHING about the technology of the role you’re filling. You’ll pay them an absolute fortune for finding you a candidate, and - with few exceptions - they are one level up from telesales people. At least half of the recruiters I’ve spoken to have asked me to write them a little sales pitch. Most of the others are reading the names of the technologies on my CV like they would the names of obscure medieval Hindu scholars. They’re literally just passing my CV on to you.
All this, and you probably won’t even tell me if I fail. You’ll just never contact me again. I take this failure bittersweetly: if you’re not organised enough to inform unsuccessful candidates of their failure, you are a terrible company to work for. But still.
My dream is simple: meaningful feedback on my shortfalls in areas directly linked to what you were looking for (and what you tested me on). I know I can do better. I’m not an idiot. Instead, what you’re going to give me is a hash of spurious, unrelated reasons based on you not liking me as a person or not having enough years of experience in technology X. You shouldn’t be telling candidates they don’t have enough experience after the interview. That should be obvious from the CV. I will learn next to nothing from having failed to impress you. You’re wasting my time.
Why tech interviews are me wasting your time
I’m exaggerating the amount of skill that I have. Everyone is. I use the right buzzwords on my CV. I inflate the scale of my achievements and the depth of my skillset. I even add tasks and responsibilities to historical jobs that fit your requirements. You’re never going to check, are you?
Despite a long and storied career in software development, I have few abstract problem-solving skills. I proceed through problems in increments, getting slightly better each time. The beneficial thing for you that my experience brings is that I can do it really fast. Fast enough to deliver a working piece of software in a timeframe that won’t bankrupt you.
Never in my entire career have I whiteboarded a solution that even remotely survived contact with software frameworks, APIs and hardware constraints. A hundred different gotchas and restrictions lay in wait. The only way through them to a resilient solution is one step at a time. So, I can’t show you anything meaningful with Leetcode challenges unless I practice them as a discrete skill.
I also can’t show you tenacity, calmness under stress or resilience in a Leetcode challenge. We can’t replicate having no answers as to why production is down at 6pm on Christmas Eve or how we will stay at our desk until it’s fixed. I can’t demonstrate how I’ll handle trying to build fifteen different time-critical features simultaneously, juggling five product managers with their own agendas. I can’t show you how I’ll work 40hrs straight in the build-up to the go-live weekend. Yet these are the skills you truly need in your company.
I’m not going to use Google before your very eyes, either. Obviously. Despite every software engineer ever using it all day, every day.
In short, I’m not going to show you much about my day-to-day performance in the role. I’m wasting your time, aren’t I?
What do we do?
Companies, it’s a two-way street.
I need to do your interviews and fail so I can get better. I need to practice my Leetcode challenges. I need proper feedback, too. This will help me jump through the hoops, but I don’t think it will help you.
If you want better candidates filling roles, you must stop being lazy and relying on Leetcode or lazy CV parsing. Check the candidate’s portfolio. Pose realistic questions. Try to ensure your technical interviews reflect the fundamental nature of the job.