Skip to content

Commit 0c40487

Browse files
Merge remote-tracking branch 'origin/leetcode'
Promote draft to post
2 parents 14b5d04 + 7ca69ba commit 0c40487

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
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

Comments
 (0)