|
| 1 | +--- |
| 2 | +layout: ../../components/layouts/post.astro |
| 3 | +title: 'Still Measuring Devs With Leetcode?' |
| 4 | +categories: [tech] |
| 5 | +tags: [engineering, programming] |
| 6 | +description: TODO |
| 7 | +--- |
| 8 | + |
| 9 | +I'm disappointed to find tech interviews are still asking Leetcode questions. |
| 10 | +Companies haven't listened to old advice on competitive hiring like DHH's |
| 11 | +[Hiring programmers with a take-home test] or Matasano Security's [the Hiring |
| 12 | +Post][The Hiring Post]. |
| 13 | + |
| 14 | +> Years from now, we'll look back at the 2015 developer interview as an |
| 15 | +> anachronism, akin to hiring an orchestra cellist with a personality test and a |
| 16 | +> quiz about music theory rather than a blind audition. |
| 17 | +
|
| 18 | +Even new companies today with the chance of a fresh, competitive approach are |
| 19 | +still asking Leetcode questions, probably because the FAANG-equivalent companies |
| 20 | +of decades ago were asking Leetcode questions, and a few FAANGs still are. A |
| 21 | +100-employee startup primed me with an outline of their upcoming interview steps |
| 22 | +with a link to a sample [leetcode.com][Leetcode] question to expect, boasting, |
| 23 | +"Our interview process is similar to Meta's process." |
| 24 | + |
| 25 | +> The most dangerous phrase a \[manager\] can use is "We've always done it that |
| 26 | +> way." |
| 27 | +> |
| 28 | +> —Grace Hopper |
| 29 | +
|
| 30 | +For the last 10 years of my tech career, I didn't have to interview for jobs: |
| 31 | +behold, the power of referral! Not interviewing meant no Leetcode questions. The |
| 32 | +last time I had to answer a Leetcode question, the name Leetcode didn't exist, |
| 33 | +although the style of questions was decades old. |
| 34 | + |
| 35 | +I used to be pretty good at Leetcode questions. In my college computer science |
| 36 | +degree, senior year, I went through 20 interview rounds with 12 different |
| 37 | +companies. Only the final company accepted me. I didn't get better at |
| 38 | +programming during that time, although that would have been a good use of my |
| 39 | +time. Rather, in that time, I just got better at interviewing, and a lot of it |
| 40 | +was practicing Leetcode-style questions, via [the first edition of Programming |
| 41 | +Interviews Exposed][Programming Interviews Exposed]. Having little professional |
| 42 | +experience, I accepted there was no other practice for companies to trust me. |
| 43 | + |
| 44 | +Within a few years in the industry, it was my turn to be the interviewer, which |
| 45 | +is when I got the perspective, the empathy for candidates. I wanted to shake |
| 46 | +free of the cult of Leetcode hazing. It was an inaccurate and unfair way to |
| 47 | +measure. I sought the advice of the posts at the beginning of this article. What |
| 48 | +if we measured actual developer skill: can the candidate do the job well, rather |
| 49 | +than can the candidate do Leetcode well? What if a candidate was a great fit for |
| 50 | +the job, but the specialized simulacrum and pressure cooker of live-coding |
| 51 | +Leetcode interviews excluded such a candidate? |
| 52 | + |
| 53 | +Don't get me wrong, improving the situation was easier said than done. Hiring |
| 54 | +developers is hard. My teams and I iterated for years on structuring our |
| 55 | +interviews—a structured interview is fairer but sadly not the friendliest |
| 56 | +candidate experience, to blankly read from a script—and developing relevant, |
| 57 | +realistic, self-contained assessment projects for candidates. For take-home |
| 58 | +tests, we didn't pay candidates for their time, which was tantamount to free |
| 59 | +labor and exclusionary in its own regard. We also lost a great candidate who was |
| 60 | +a prolific OSS contributor to our company's tech stack, because they |
| 61 | +diplomatically pointed to their public contributions as evidence of their skill |
| 62 | +and collaboration style, declined the take-home test as something they couldn't |
| 63 | +afford (what were all their free labor OSS contributions for, after all), and |
| 64 | +our team didn't have the capacity to develop and maintain a "fair" backup |
| 65 | +measurement for the special case candidate. While our take-home test was a |
| 66 | +promising hiring solution, we still could've done better. |
| 67 | + |
| 68 | +I took a career break from tech the last couple years. When I started the tech |
| 69 | +job hunt 12 months ago, wanting to try my old full stack web developer job in a |
| 70 | +new domain, I no longer had the power of a referral. I program every day. I know |
| 71 | +I can do the job. If an interviewer talks to me, I can demonstrate I know how to |
| 72 | +program, I'm emotionally intelligent, and that their team would want to work |
| 73 | +with someone friendly like me, right? |
| 74 | + |
| 75 | +Much to my chagrin, almost every company I've interviewed with this year still |
| 76 | +uses Leetcode-style interviews. If a company even gives the heads up of what to |
| 77 | +expect in an interview, don't necessary believe, "Our live code assessment uses |
| 78 | +real-world problems." In 9/10 of my interviews this year, the interview was |
| 79 | +still Leetcode in a trenchcoat. |
| 80 | + |
| 81 | +I was rusty at these live coding interviews, because in my 14 year career, |
| 82 | +Leetcode and what it teaches _never came up_ on the job. Software development is |
| 83 | +not typically done in a eye-movement surveilled, time-constrained screen-share |
| 84 | +with 1-2 others silently breathing down your neck, letting you squirm, maybe a |
| 85 | +modicum of hints that make sense to the interviewers because they've seen the |
| 86 | +exact problem before. And there's no time left for me to ask questions. The |
| 87 | +interview for mutual fit turns out not to be a 2-way street. It's dehumanizing |
| 88 | +for the experienced dev. |
| 89 | + |
| 90 | +When I'm rejected for a job, in my spirit of continual improvement, I ask for |
| 91 | +feedback why, and companies are always cagey. To cover their ass. So I'm not |
| 92 | +100% certain all the reasons I was rejected over the last 12 months. I might |
| 93 | +have a worse personality than I think. Or maybe a member of the hiring panel was |
| 94 | +underslept and cranky. Out of my control. All I know is, the interview process |
| 95 | +ending always _correlated_ after I failed to finish a Leetcode step of the |
| 96 | +interview, i.e. not finishing the coding puzzle prompt within 45 minutes. |
| 97 | + |
| 98 | +Roy Lee, who developed [a tool to cheat on these sort of |
| 99 | +interviews][Hard Fork: AI Action Plans], summarized what I was _supposed_ to do. |
| 100 | + |
| 101 | +> You're given 45 minutes and the task here is to _have_ seen the problem |
| 102 | +> before, solve the problem, and be able to regurgitate the memorized solution, |
| 103 | +> without acting like you have seen the problem before. |
| 104 | +
|
| 105 | +In 2025's competitive tech hiring market, where laid-off tech workers outnumber |
| 106 | +available positions, some candidates spend months grinding leetcode.com to reach |
| 107 | +the top 1%, while others use cheating software like Roy Lee's. Meanwhile, |
| 108 | +experienced developers who could do the actual job well but haven't memorized |
| 109 | +these puzzles struggle to complete them under pressure. The unqualified |
| 110 | +candidate aces the test. The qualified candidate fails to finish in time. As the |
| 111 | +interviewer, which candidate would you advance? |
| 112 | + |
| 113 | +Next time I'm on the job hunt, I hope to cross-reference my applications with |
| 114 | +the [Hiring Without Whiteboards][Hiring Without Whiteboards] list. Although in |
| 115 | +my 12 months of the recent job hunt, I made hundreds of applications and |
| 116 | +received human responses from less than 10%. Given the odds, I felt I couldn't |
| 117 | +afford to be choosy to use this list. |
| 118 | + |
| 119 | +[Hiring programmers with a take-home test]: |
| 120 | + https://signalvnoise.com/svn3/hiring-programmers-with-a-take-home-test/ |
| 121 | +[The Hiring Post]: https://sockpuppet.org/blog/2015/03/06/the-hiring-post/ |
| 122 | +[LeetCode]: https://leetcode.com |
| 123 | +[Programming Interviews Exposed]: |
| 124 | + https://archive.org/details/programminginter0000mong |
| 125 | +[Hard Fork: AI Action Plans]: |
| 126 | + https://www.nytimes.com/2025/03/21/podcasts/hardfork-ai-action-plans.html |
| 127 | +[Hiring Without Whiteboards]: |
| 128 | + https://github.com/poteto/hiring-without-whiteboards |
| 129 | + |
| 130 | +## Unused |
| 131 | + |
| 132 | +While they assume just because a company is famous their interview process is |
| 133 | +solid and adaptable to a SMB, I do appreciate they were honest about the |
| 134 | +inclusion of Leetcode. |
| 135 | + |
| 136 | +Cheating aside, AI-assisted coding tools are really great at Leetcode problems. |
| 137 | +It's another hint, if it's easily solvable by computers, maybe it's not a great |
| 138 | +test of an engineer? |
| 139 | + |
| 140 | +- AI Cheating in interviews (LinkedIn email) |
| 141 | +- https://newsletter.pragmaticengineer.com/p/the-reality-of-tech-interviews |
0 commit comments