all pleasant tech interviews are alike; each unpleasant tech interview is unpleasant in its own way.
i recently put down a take-home interview assignment and withdrew my candidacy. in short: it sucked and i didn't want to do it. but i'm writing this because i owe more, both to myself (as someone who's on both sides of the tech hiring table) and also to the confused friend who referred me.
software engineers are notoriously hard to interview. the field has no professionalization that could help hiring managers efficiently pre-screen applicants, but since it's the cushiest and most lucrative work that can plausibly be described as a "job," open roles are swarmed by the incompetent and mendacious, and hiring mistakes are expensive. since success only surfaces over a period of weeks to months, interviews can't allow candidates to demonstrate what they're actually being hired to do, so companies instead hire based on a collection of proxy signals. these signals are largely speculative and/or cargo-culted, and they're never calibrated. (i believe that the Politician's Fallacy has a tech interviewing analogue: "We need signal. This is signal. Therefore, we need this.")
one source of these proxy signals is the "take-home exercise." in theory, it normalizes away on-site interview anxiety caused by time pressure, an unfamiliar environment, and the stress of being watched while you do something typically done solo. the goals are noble, but their cost is severe.
that cost is: time. every single hiring manager who asks for one of these says "don't spend more than a few hours on it." every single candidate ignores this prescription. even if they followed it, this interview step would at least double the candidate's overall time commitment - selecting against people who have families and/or existing jobs - but the real problem is that the more time you spend, the more impressive your submission is. and every other applicant knows this. if i timebox my work, and my competition doesn't, i'm going to lose out every single time. (if the hiring manager says "wow, this looks like you spent a long time on it," i can just casually deny that i did, further inflating my perceived value.) in the best case, the hiring manager's ignorance of this dynamic waves the red flag of naïveté. in the worst case, candidates must demonstrate time management kayfabe. "if i ask you to do a twelve-hour task in two hours, will you push back? or will you acquiesce and then burn the midnight oil to get it done?"
despite my cynicism, i don't categorically reject companies that interview using take-home exercises, and my tolerance for managerial naïveté or sociopathy is far above "none." every job has its bullshit. i am, at heart, a Loser: if i sufficiently enjoy my work and can pay my bills, i won't raise a fuss. this time, i started the exercise because i genuinely thought it might be fun.
...but it wasn't. i don't want to deanonymize this story, so i'll just say that this company's particular assignment sported some atypically prickly thorns: i was instructed to provide a production-quality solution to a problem of managing running binaries in a cross-platform way. i don't think you can do this (to production quality) in a few hours. part of my belief comes from the time i tried to build something similar earlier in my career and was never able to stanch the flow of bizarre bug reports generated by my "solution." another part comes from the existence of the four or five libraries i found to solve the problem, each of which clearly took more than a few hours to create, and none of which reliably provided the cross-platform support they advertised - meaning that they were both unusable for the exercise and a demonstration of its difficulty.
(there is an unconfirmable possibility that the "cross-platform" requirement was naïvely added by someone who, lacking personal experience with Windows development, underestimated the particular challenges imposed by the platform. i started my career in desktop Windows development, and have tripped over quite a few of its skeletons; it would not surprise me if a novice underestimated their multitude.)
was i ingesting the requirements too rigidly? an important part of seniority, after all, is distinguishing the shadows on the wall from the reality projecting them. smoothly informing the hiring manager of the simpler deliverable he actually wanted, and delivering that, was a path out of this thicket. which is fair! like every other small startup, this firm's success depends upon its ability to define reality (rather than merely accept it), and selecting for that talent is entirely appropriate. that my referring friend told me to not overindex on "production quality" (in what i interpreted as a last-ditch effort to keep me on the line) lends weight to this view.
but while i understand the mindset, i'm bad at embodying it, and it tires me. i have no moral objection to trying in situations i care about - but Yet Another ZIRP-y B2B SaaS shop ain't it. the entire reason i'm on the market right now is that my current company's senior leadership has been aggressively dictating outrageously out-of-touch level-of-effort estimates, and starting an interview loop with this exact problem was immediately exhausting. if the company itself had been exciting, we might still be talking, but the business domain didn't inspire me, and during our initial chat, the head of engineering a) told me that "this is an equity play [which is why you aren't impressed by the advertised salary range]" and b) made it clear that he's unwilling to lose bakeoffs to AI-heavy, faster-delivering competitors - quality notwithstanding. what i heard was "the only thing that matters is that we exit." that's fine for others; i'm not judging. but it's not for me. i'm looking for something more than frantically slopping until i can unload some stock options. (at least one of: satisfying technical delivery, or a mission i find meaningful.) joining this company sounded like it would be jumping from the frying pan into a slightly shinier but otherwise identical frying pan.
so i realized, during my tedious fight with buggy third-party libraries and a weird Windows debugging experience, that i was burning out at a company that hadn't even hired me. quitting was a no-brainer. fifteen minutes later, i was watching tv with my wife, petting my dog, and feeling much, much better. i'm really grateful for the referral, and i hope i haven't burned any bridges or damaged my friend's reputation. but i don't regret the decision.
or hey, maybe i'm just incompetent, and saved us all some time. that'd still be a win.