|
| 1 | +--- |
| 2 | +layout: ../../components/layouts/post.astro |
| 3 | +title: 'Still Measuring Devs With LeetCode?' |
| 4 | +categories: [tech] |
| 5 | +tags: [engineering, programming] |
| 6 | +description: |
| 7 | + I'm disappointed to find tech interviews in 2025 are still asking LeetCode |
| 8 | + questions. Companies haven't listened to old advice on competitive hiring like |
| 9 | + DHH's "Hiring programmers with a take-home test" or Matasano Security's "the |
| 10 | + Hiring Post". |
| 11 | +--- |
| 12 | + |
| 13 | +I'm disappointed to find tech interviews in 2025 are still asking LeetCode |
| 14 | +questions. Companies haven't listened to old advice on competitive hiring like |
| 15 | +DHH's [Hiring programmers with a take-home test] or Matasano Security's [the |
| 16 | +Hiring Post][The Hiring Post]. |
| 17 | + |
| 18 | +> Years from now, we'll look back at the 2015 developer interview as an |
| 19 | +> anachronism, akin to hiring an orchestra cellist with a personality test and a |
| 20 | +> quiz about music theory rather than a blind audition. |
| 21 | +
|
| 22 | +Even new companies with the chance of a fresh, competitive approach are still |
| 23 | +asking LeetCode questions, probably because the FAANG-equivalent companies of |
| 24 | +decades ago were asking LeetCode questions. A few FAANGs still are. A |
| 25 | +100-employee startup primed me with an outline of their upcoming interview steps |
| 26 | +with a link to a sample [leetcode.com][LeetCode] question to expect, boasting, |
| 27 | +"Our interview process is similar to Meta's process." |
| 28 | + |
| 29 | +> The most dangerous phrase a \[manager\] can use is "We've always done it that |
| 30 | +> way." |
| 31 | +> |
| 32 | +> —Grace Hopper |
| 33 | +
|
| 34 | +In the most recent 10 years of my tech career, I didn't have to interview for |
| 35 | +jobs: behold, the power of referral! Not interviewing meant no LeetCode |
| 36 | +questions. The last time I had to answer a LeetCode question, the name LeetCode |
| 37 | +didn't exist, although the interview style was decades old. |
| 38 | + |
| 39 | +I actually used to be pretty good at LeetCode questions. In my college computer |
| 40 | +science degree, senior year, I went through 20 interview rounds with 12 |
| 41 | +different companies. Only the final company accepted me. I didn't get better at |
| 42 | +programming during that time, though that would have been a good use of my time. |
| 43 | +Rather, in that time, I just got better at interviewing. A lot of that was |
| 44 | +practicing LeetCode-style questions, via [the first edition of Programming |
| 45 | +Interviews Exposed][Programming Interviews Exposed]. Having little professional |
| 46 | +experience, I accepted there was no other practice for me to gain companies' |
| 47 | +trust. |
| 48 | + |
| 49 | +Within a few years in the industry, when it was my turn to play interviewer, I |
| 50 | +became empathetic to candidates. LeetCode hazing was an inaccurate and unfair |
| 51 | +way to measure. What was the ritual predicting? What hostility was it |
| 52 | +engendering? I wanted to shake free of the cult. What if we measured actual |
| 53 | +developer skill: can the candidate do the job well, rather than can the |
| 54 | +candidate do LeetCode well? What if a candidate was a great fit for the job, but |
| 55 | +the specialized simulacrum and pressure cooker of live-coding LeetCode |
| 56 | +interviews excluded such a candidate? I sought the advice of the posts at the |
| 57 | +beginning of this article, to end the cycle. |
| 58 | + |
| 59 | +> If you suffered in life and want other people to suffer as you did because |
| 60 | +> "you turned out fine," you did not in fact turn out fine. |
| 61 | +> |
| 62 | +> —@daniel_swensen |
| 63 | +
|
| 64 | +Improving the situation was and is easier said than done. Hiring is hard. My |
| 65 | +teams iterated for years to 1) structure our interviews—a structured interview |
| 66 | +is fairer but sadly not the friendliest candidate experience, for the |
| 67 | +interviewer to read from a script _at_ the candidate—and 2) develop relevant, |
| 68 | +realistic, self-contained assessment projects. For take-home assessments, we |
| 69 | +didn't pay candidates for their time, which was tantamount to free labor and |
| 70 | +exclusionary in its own regard. We also lost a great candidate who was a |
| 71 | +prolific OSS contributor to our company's tech stack. They diplomatically |
| 72 | +pointed to their public contributions as evidence of their skill and |
| 73 | +collaboration style, and declined the take-home as something they couldn't |
| 74 | +afford. What were all their free labor OSS contributions for, after all? Our |
| 75 | +team didn't have the capacity to develop and maintain a "fair" backup |
| 76 | +measurement for the special case. While our fairer structures and take-home |
| 77 | +assessment were promising for hiring, we still could've done better.[^1] |
| 78 | + |
| 79 | +During the last few years, I wound down my consulting workload and took a career |
| 80 | +break from tech. Then I wanted to go full-time again in my old full stack web |
| 81 | +developer role, in a new domain. When I started the tech job hunt 12 months ago, |
| 82 | +I no longer had the power of a referral. So I braced for interviews. |
| 83 | + |
| 84 | +I program every day. I know I can do the job. If an interviewer talks to me, I |
| 85 | +can demonstrate I know how to program, I'm emotionally intelligent, and that |
| 86 | +their team would want to work with someone friendly like me. Right? |
| 87 | + |
| 88 | +Much to my chagrin, I didn't make it far in the interview process, because |
| 89 | +almost every company I've interviewed with this year still uses LeetCode-style |
| 90 | +interviews. If a company even gives the heads up of what to expect in an |
| 91 | +interview, don't necessary believe, "Our live code assessment uses real-world |
| 92 | +problems." In 9/10 of my interviews this year, the technical step was still |
| 93 | +LeetCode in a trenchcoat. |
| 94 | + |
| 95 | +I was rusty at these live coding interviews, because in my 14 year career, |
| 96 | +LeetCode and what it teaches _never came up_ on the job. I didn't reach for |
| 97 | +binary trees, stacks, queues, or linked lists. Software development is not |
| 98 | +typically done in a eye-movement surveilled, time-constrained screen-share with |
| 99 | +1-2 others silently breathing down your neck, letting you squirm. Maybe the |
| 100 | +interviewers offer a modicum of hints that make sense to them, as they've seen |
| 101 | +the exact problem several times. Then there's no time left for me to ask them |
| 102 | +questions about the job. The interview for mutual fit turns out not to be a |
| 103 | +2-way street. It's dehumanizing for the experienced dev. |
| 104 | + |
| 105 | +When I'm rejected after an interview, in my spirit of continual improvement, I |
| 106 | +ask for feedback why. 9/10 companies are cagey, to cover their ass. So I'm not |
| 107 | +fully certain all the reasons I was rejected over the last 12 months. I might |
| 108 | +have a worse personality than I think. Maybe a member of the hiring panel was |
| 109 | +underslept and cranky. All I know is, the interview process ending _correlated_ |
| 110 | +after I failed to finish a LeetCode step of the interview, i.e. not finishing |
| 111 | +the coding puzzle prompt within 45 minutes. |
| 112 | + |
| 113 | +Roy Lee, developer of [a tool to cheat on these sort of |
| 114 | +interviews][Hard Fork: AI Action Plans], summarized what I was _supposed_ to do. |
| 115 | + |
| 116 | +> You're given 45 minutes and the task here is to _have_ seen the problem before |
| 117 | +> … and be able to regurgitate the memorized solution, without acting like you |
| 118 | +> have seen the problem before. |
| 119 | +
|
| 120 | +Some candidates spend months grinding leetcode.com to reach the top 1%, so they |
| 121 | +may be lucky enough to have already seen the 1 interview puzzle close to the |
| 122 | +1,000s they could be given. Other candidates use cheating software like Lee's. |
| 123 | +Meanwhile, experienced developers who could do the actual job well but haven't |
| 124 | +memorized the puzzles struggle to complete them under pressure. |
| 125 | + |
| 126 | +The unqualified candidate aces the test. The qualified candidate fails to finish |
| 127 | +in time, though they can explain what they _would_ do next, given more time. For |
| 128 | +your overloaded hiring pipeline, which candidate would you advance? The test ace |
| 129 | +or the struggling explainer? |
| 130 | + |
| 131 | +Lee answered whether he had ethical concerns about his product. |
| 132 | + |
| 133 | +> LeetCode interviews are about as correlated \[to the job] as, "How many |
| 134 | +> jumping jacks can you do?" … If you were just told to do as many jumping jacks |
| 135 | +> as you could and the winner gets a position, I wouldn't really care if someone |
| 136 | +> was cheating their way through jumping jacks. |
| 137 | +
|
| 138 | +Ethics aside, AI-assisted coding tools are great at solving LeetCode problems. |
| 139 | +They have memorized 1,000s of such puzzles. If something is easily solvable by |
| 140 | +computers, maybe that's another hint it's not a great test of a software |
| 141 | +developer? While I haven't subscribed to Lee's product, I know I like using |
| 142 | +AI-assisted coding in my normal job. It would be realistic to have normal tools |
| 143 | +available in an assessment. |
| 144 | + |
| 145 | +While the debate of allowed tools in an assessment rages on, to skip the debate |
| 146 | +next time I'm on the job hunt, I hope to cross-reference my applications with |
| 147 | +the [Hiring Without Whiteboards] list. Companies on the list don't make |
| 148 | +qualified devs jump through hoops with puzzles like LeetCode. The only reason I |
| 149 | +didn't use the list this time? The 2025 tech hiring market is very |
| 150 | +difficult.[^2] I felt beggars couldn't be choosers. |
| 151 | + |
| 152 | +I hope more companies think harder who they're looking for. They're missing out |
| 153 | +on qualified devs by following what's trendy. They're dehumanzing candidates. |
| 154 | +There are better ways to interview and measure. I hope to see more companies one |
| 155 | +day make the Hiring Without Whiteboards list. |
| 156 | + |
| 157 | +### Footnotes |
| 158 | + |
| 159 | +[^1]: |
| 160 | + Read more about the ethics and meritocracy myth in [Why GitHub is not your |
| 161 | + CV]. |
| 162 | + |
| 163 | +[^2]: |
| 164 | + The confluence of difficulties in the tech hiring market in 2015 vs. 2025: |
| 165 | + the magic-promising whisper of "AI" in leadership's ears, venture capital |
| 166 | + interest rates, and overhiring from the early COVID-19 pandemic, resulting |
| 167 | + in big tech layoffs and an overflowing candidate pool. In 12 months, I |
| 168 | + applied to 200+ companies. Less than 10% gave a human response. 50% sent an |
| 169 | + automated rejection from a "no-reply" email address, within 1-3 months. The |
| 170 | + rest never tell you the result of your application either way. |
| 171 | + |
| 172 | +[Hard Fork: AI Action Plans]: |
| 173 | + https://www.nytimes.com/2025/03/21/podcasts/hardfork-ai-action-plans.html |
| 174 | +[Hiring Without Whiteboards]: |
| 175 | + https://github.com/poteto/hiring-without-whiteboards |
| 176 | +[Hiring programmers with a take-home test]: |
| 177 | + https://signalvnoise.com/svn3/hiring-programmers-with-a-take-home-test/ |
| 178 | +[LeetCode]: https://leetcode.com |
| 179 | +[Programming Interviews Exposed]: |
| 180 | + https://archive.org/details/programminginter0000mong |
| 181 | +[The Hiring Post]: https://sockpuppet.org/blog/2015/03/06/the-hiring-post/ |
| 182 | +[Why GitHub is not your CV]: |
| 183 | + https://blog.jcoglan.com/2013/11/15/why-github-is-not-your-cv/ |
0 commit comments