Let’s call it what it is: most tech hiring is a circus. Not the fun kind with popcorn and acrobats, but the kind where you’re asked to juggle flaming data structures while reciting the Big O complexity of an algorithm you haven’t touched since sophomore year. The problem isn’t that companies want good engineers. The problem is they’ve built entire rituals around testing skills that have nothing to do with the job. Then they act surprised when the new hire can invert a binary tree on a whiteboard but can’t ship a feature without someone holding their hand.
I’ve been on both sides of this mess. As an interviewer, I’ve watched candidates sweat through logic puzzles ripped from a math Olympiad. As a candidate, I’ve been asked to design a distributed system in 45 minutes for a role that was 90% CRUD apps and CSS tweaks. The gap between the test and the work is so wide you could drive a Kubernetes cluster through it.
The Whiteboard Theater
Picture this: a small, windowless room. A marker that’s running dry. An interviewer who hasn’t glanced at your resume since HR forwarded it three weeks ago. You’re told to reverse a linked list. On a whiteboard. In 20 minutes. While they watch.
This is the whiteboard theater, and it’s the worst kind of improv. The issue isn’t that linked lists are useless—they’re fundamental. The issue is that the performance has nothing to do with the job. Real engineering doesn’t happen in a silent room with a stranger staring at your back. It happens in a messy IDE, with Stack Overflow tabs open, a linter yelling at you, and a colleague saying, “Wait, why are we doing this at all?”
Whiteboard interviews test for anxiety management, not engineering skill. They favor people who can memorize algorithm flashcards and perform under pressure. That’s a great filter if you’re hiring for a competitive programming team. It’s a terrible filter if you’re hiring someone to debug a race condition in your payment pipeline at 2 a.m.

The Take-Home Project That Ate My Weekend
Then there’s the other extreme: the take-home project. “It should only take 4 hours,” they say. It takes 20. You’re building a mini-application from scratch, with a frontend, backend, database, and a README that explains your architectural decisions. You’re doing this for free, on your own time, while juggling your current job and maybe a family.
Here’s the kicker: half the time, nobody even reads your README. They glance at the code, run it once, and if it doesn’t crash, you move to the next round. The project is often a thinly veiled attempt to get free labor—I’ve seen companies use candidate submissions as prototypes for internal tools. Even when that’s not the case, the asymmetry is absurd. You invest a weekend; they invest 15 minutes.
And what does the project actually test? Your ability to work in isolation, with perfect requirements, no interruptions, and no collaboration. That’s not engineering. That’s a homework assignment.
The Culture Fit Charade
Then comes the “culture fit” interview. This is where things get truly unhinged. You’re asked what animal you’d be, or how many golf balls fit in a school bus. The subtext is: “Are you like us?” Which usually means: “Do you share our unexamined biases and willingness to work weekends?”
Culture fit has become a euphemism for homogeneity. It’s not about whether you can contribute to a team’s dynamic—it’s about whether you’ll disrupt the fragile equilibrium of people who’ve never had their assumptions challenged. Real culture add is what moves teams forward. Culture fit keeps them stuck.
I once sat through an interview where the CEO asked me to name my favorite text editor. I said VS Code. He frowned and said, “We’re a Vim shop.” I didn’t get the job. I later found out their “engineering culture” was a single Vim-obsessed lead who wrote unreadable Perl scripts and refused to document anything. Bullet dodged.
The Real Job: What We Should Be Testing For
Let’s get concrete. What does a typical software engineering job actually involve?
- Reading and understanding existing code—often bad, poorly documented code written by someone who left the company two years ago.
- Debugging production issues under time pressure, with incomplete logs and a customer screaming in a Slack channel.
- Reviewing other people’s code and giving feedback that is honest but not soul-crushing.
- Writing code that other humans can read, modify, and delete without wanting to quit.
- Communicating technical trade-offs to non-technical stakeholders without making them feel stupid.
- Navigating legacy systems, technical debt, and the accumulated decisions of people who meant well but were in a hurry.
Notice what’s missing? Inverting a binary tree. Implementing quicksort from memory. Designing a parking lot in 45 minutes. These are party tricks. They don’t tell you if someone can ship a feature, fix a bug, or improve a process.

What Good Hiring Looks Like
Good hiring processes are rare, but they exist. They look less like a hazing ritual and more like a day of work. Here’s what I’ve seen work:
Paired Programming on Real Code
Give the candidate a real, non-critical task from your backlog. Pair them with a future teammate. Watch how they navigate the codebase, ask questions, and handle getting stuck. This tests collaboration, code literacy, and problem-solving—all at once.
Debugging Simulations
Set up a broken environment—a failing test, a misconfigured service, a mysterious error log. Give the candidate access to the tools they’d actually use. See if they can find the root cause. This is infinitely more predictive than a whiteboard algorithm.
Code Review Exercises
Hand them a pull request full of subtle issues: security holes, performance traps, readability nightmares. Ask them to review it. You’ll learn about their attention to detail, their communication style, and whether they’re the kind of person who leaves helpful comments or just writes “LGTM.”
System Design With Context
Instead of “design Twitter,” give them a problem your team actually faced. Explain the constraints, the trade-offs you debated, the ugly parts you had to accept. See if they ask good questions. See if they can think in terms of cost, complexity, and maintainability—not just theoretical scalability.
The Meta-Problem: Hiring as a Proxy for Engineering Culture
Here’s the uncomfortable truth: bad hiring processes are a symptom of bad engineering culture. When a team doesn’t know what good engineering looks like, they can’t design an interview to find it. So they copy what Google did in 2008, or they cargo-cult the latest fad from a tech influencer’s Twitter thread.
Engineering culture is the set of unspoken rules about how work gets done. It’s how decisions are made, how mistakes are handled, how credit is shared. A team with a healthy culture knows what skills they actually need. They hire for those skills. A team with a toxic culture hires for compliance, for ego, for the ability to suffer silently.
The hiring process is a mirror. If your interviews are a gauntlet of trivia and trick questions, your culture probably values looking smart over being effective. If your interviews are a series of monologues where the candidate barely speaks, your culture probably doesn’t listen to anyone. If your interviews are disorganized and disrespectful of the candidate’s time, your culture probably treats engineers as interchangeable parts.
Why Companies Cling to Broken Processes
If these processes are so obviously flawed, why do they persist? A few reasons:
Fear of false positives. Companies are terrified of hiring the wrong person. So they design processes that minimize false positives at any cost—even if it means rejecting tons of great candidates. It’s easier to say “we only hire the top 1%” than to admit your process is random.
Cargo culting. “Google does brainteasers, so we should too.” Never mind that Google publicly admitted brainteasers were useless and stopped using them over a decade ago. The meme outlives the evidence.
Interviewer ego. Some interviewers treat the process as a chance to prove how smart they are. They ask obscure questions, nitpick irrelevant details, and reject candidates who don’t share their specific technical religion. It’s not about finding a great colleague—it’s about validating their own expertise.
Lack of training. Most companies spend zero time teaching people how to interview. They throw engineers into rooms with candidates and say “assess their technical skills.” The result is a random walk through whatever the interviewer happens to care about that day.
What Candidates Can Do
If you’re on the job market, you can’t fix a company’s broken hiring process. But you can protect your time and sanity.
Ask about the process upfront. Before you agree to a technical screen, ask what it involves. If it’s a whiteboard algorithm gauntlet for a role that’s mostly debugging and feature work, politely push back. Some companies are flexible; some aren’t. Either way, you’ll know what you’re signing up for.
Treat the interview as a two-way street. You’re evaluating them as much as they’re evaluating you. Ask about their engineering culture. Ask how they handle technical debt, how they make architectural decisions, how they onboard new hires. If they can’t answer coherently, that’s a signal.
Set boundaries on take-home work. If a project is supposed to take 4 hours, spend 4 hours. Submit what you have. If they reject you because you didn’t spend 20 hours, you’ve dodged a bullet. Companies that respect boundaries in the interview process are more likely to respect them on the job.
Remember that rejection is not a reflection of your skill. Most hiring processes are so noisy that getting rejected tells you almost nothing. It could mean you’re not a fit. It could mean the interviewer had a bad day. It could mean the company doesn’t know what it’s looking for. Don’t internalize it.

What Companies Can Do
If you’re in a position to influence hiring at your company, start by asking: What do we actually need people to do? Then design your process backward from that.
Audit your current process. Look at the last 10 hires. Which interview stages actually predicted on-the-job performance? Which ones were just theater? Kill the theater.
Train your interviewers. Teach them how to assess skills, not just how to ask questions. Teach them about unconscious bias, about structured interviewing, about the difference between a signal and noise.
Standardize, but don’t rigidify. Every candidate should get a fair, consistent process. But that doesn’t mean every interview should be identical. Leave room for interviewers to dig into a candidate’s specific strengths.
Respect the candidate’s time. If you’re asking for a take-home project, pay them for it. If you can’t pay them, keep it short—really short. A 2-hour exercise that mimics real work is more predictive and more respectful than a 20-hour monster.
Hire for growth, not just current skill. The best engineers I’ve worked with weren’t necessarily the ones who aced the interview. They were the ones who learned fastest on the job. Curiosity, humility, and a willingness to be wrong are superpowers. Test for those.
The Bottom Line
Hiring is hard. There’s no perfect process. But there’s a clear difference between processes that try to approximate the actual job and processes that have drifted into self-parody. If your interview tests skills that nobody on your team uses, you’re not hiring engineers. You’re running a trivia night with higher stakes.
Stop asking candidates to juggle. Start asking them to do the job. You might be surprised who actually shows up.
FAQ
Why do so many companies still use whiteboard algorithm interviews?
Because they’re easy to standardize and grade. A binary tree inversion has a right answer. Debugging a real system doesn’t. Companies often optimize for process consistency over predictive validity, and whiteboard interviews are the ultimate checkbox exercise.
What’s the best way to assess a candidate’s debugging skills?
Give them a broken environment—a failing test suite, a misconfigured service, a production-like error log—and watch them work. Provide the tools they’d actually use on the job. Pay attention to how they form hypotheses, how they isolate variables, and whether they ask for help when stuck. That’s debugging. Not reversing a linked list on a whiteboard.
How can I tell if a company’s engineering culture is healthy before I accept an offer?
Ask specific questions during the interview: “How do you handle incidents?” “Can you walk me through the last architectural decision the team debated?” “How is technical debt managed?” Vague, glossy answers are a red flag. Also, pay attention to how the interviewers treat each other—if they interrupt, dismiss, or one-up each other in front of you, that’s the culture you’ll be joining.