\u003C/a>\u003C/figure>\n\u003C!-- /wp:image -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>This is especially bewildering in context of the job market. Programmers are worth their weight in gold. Salaries are skyrocketing throughout the industry. Remote work has become table stakes. Tech startups are offering four-day work weeks to make themselves more appealing. Recruiters are second only to car warranty scammers in their efforts to reach us. But it all goes to waste if the candidate who gets hired isn't able to do the job. So why aren't companies investing more at the tail end of their hiring process?\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 id=\"h-an-optimized-interview-process\">An optimized interview process\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Let's talk about what an ideal coding interview could look like. If someone's job is to write Java, the process might go like this:\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:list -->\n\u003Cul>\u003Cli>Disclose the salary range and benefits in the very first contact.\u003C/li>\u003Cli>Review their resume ahead of time for professional or open source experience writing Java (any other programming language would be relevant; Groovy and Kotlin would be equivalent experience).\u003C/li>\u003Cli>Watch them write Java for an hour or so in the most realistic environment possible. Grade them on predetermined, job-relevant attributes, e.g. problem-solving, null safety, error handling, readability, naming conventions, and encapsulation.\u003C/li>\u003Cli>Give a scripted, completely standardized assessment to ensure they understand the JVM and basic command-line tools.\u003C/li>\u003Cli>Let them know when to expect a followup call.\u003C/li>\u003C/ul>\n\u003C!-- /wp:list -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>That's it. No unscripted \"culture interview,\" no free-for-all \"group quiz,\" no \"compiler optimization test,\" no asking the candidate to build a 15-hour project from scratch in their spare time. You assess their job-specific skills and you're done.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>It's not that I think coding ability (or any one skill) is the only important thing about a candidate. Of course you want to hire people who are reliable, smart, honest, and kind. But you have to restrict yourself to what is knowable. And in the context of a job interview, there isn't much. \u003Ca href=\"https://psycnet.apa.org/record/2007-16921-013\">Most candidates act fake\u003C/a> in job interviews and \u003Ca href=\"https://www.hec.edu/en/news-room/81-people-lie-during-their-job-interviews\">a significant percentage of them lie\u003C/a>. Even putting honesty aside, \u003Ca href=\"https://www.globenewswire.com/news-release/2013/08/20/567932/10045445/en/92-of-U-S-Adults-Fear-Something-About-Job-Interviews-Survey-Finds.html\">9 out of 10 people report having interview anxiety\u003C/a>. If you want to know how someone behaves at work, you simply can't rely on the interview. That's not the real them. Obviously if you see any major red flags—being rude to the receptionist, say—you can throw out their resume. But those are rare.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>That's part of the inherent risk of hiring: interviews just aren't as powerful as we'd like them to be. Many employers try valiantly to devise interviewing methods that predict soft skills and personality traits. But anything outside the limits of practical, measurable work is usually an illusion, albeit a compelling one—\u003Ca href=\"http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.396.503&rep=rep1&type=pdf\">a 2013 study\u003C/a> found that interviewers form highly confident impressions of candidates even when those candidates' responses are randomly selected! People tend to trust their first impressions regardless of how accurate or inaccurate they are, which leads to mistakes in the hiring process. Any time you ask humans to intuit facts about other humans, you decrease the accuracy of your process. \u003Ca href=\"https://journals.sagepub.com/doi/abs/10.1177/0008125617725288\">The only thing you can measure with any accuracy at all\u003C/a> is task competence.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 id=\"h-methods-for-testing-coding-ability\">Methods for testing coding ability\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>So, if it's the best we can do, what's the ideal way to measure programming skills? Several commercial products offer a way to test candidates with pre-written, auto-graded tasks in a code playground. Although they're likely much better than the norm, I'm not here to evangelize any of them. Why would you pay for another company's general-purpose assessment when your entire development team does specific, real-world \"assessments\" all day long? The last time I was asked to devise a coding test for an interview I looked over my recent work, picked a section of code that went well beyond \"glue code\" but didn't get into anything proprietary, tweaked it so it would stand on its own, and copied the function signature into LINQPad (a code playground). The interviewee's task was to implement the function according to nearly the same requirements I'd needed to meet. And when they were finished, I knew if they could do the job because they had just done it. It's hard to get a more realistic assessment than that.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>On the other side of the table, by far the best interview process I've ever gone through was with a startup who put me on a one-week contract (an \"audition\" as some companies call it) to work with their team. They assigned me a task; I cloned their repo, wrote code over the course of a couple evenings, and submitted a PR; the rest of the team gave feedback; I did some more work to bring the PR up to their standards; and they merged it and paid me at my regular rate. Even though I didn't ultimately accept their job offer, everyone walked away happy—they got some extra work done and I got a paycheck. If I had accepted, there would have been no uncertainty about my skills or ability to work with the team. That kind of organizational competence is hard to come by. Years later, they're still on my shortlist if I'm ever on the hunt for a job.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Maybe that doesn't fit your definition of \"interview.\" I say it's something much better than an interview. Can you imagine trading that experience for 15 minutes shooting the breeze with their CEO? It's a ridiculous proposition. Their CEO doesn't even code.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>For security or policy reasons, some teams may not be able to offer such a highly practical interview process. In those situations, consistency is a close second to realism. If you can't make the interview look like the job, at least make one interview look like the next—give yourself the ability to compare candidates on the same metrics by following the same script every time.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 id=\"h-helping-every-candidate-be-at-their-best\">Helping every candidate be at their best\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>A consistent, scientific interview process doesn't have to be completely rigid. You may actually hurt yourself by trying to standardize things that aren't relevant to what you're measuring; every candidate has different needs. For example, immunocompromised candidates need to have the option to interview remotely to protect their health. Candidates with physical or neurological conditions may fare better if the interview is split into short segments with frequent breaks rather than a three-hour marathon. Some candidates with interview anxiety may appreciate a moment or two before the interview to establish a friendly rapport with the interviewer; for others, small talk is difficult and they'd prefer to skip that part. You should always be willing to adjust the environment or cadence of the interview to the candidate's needs. Accommodations like these are a win-win because they allow each candidate the best opportunity to demonstrate their skills. If you want to hire the best candidate, you need to see the best of each candidate.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Also, interviews are a two-way street. You're being measured just as surely as the candidate is. Neglecting to answer their questions because \"it isn't in the script\" would be a mistake.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>How do you reconcile your need for objective, comparable data with your candidates' needs for reasonable accommodation and reciprocity? The simplest answer comes from \u003Ca href=\"https://en.wikipedia.org/wiki/Robustness_principle\">the robustness principle\u003C/a>, a famous rule of software design: \"be conservative in what you do, be liberal in what you accept from others.\" To apply it here, you should assess candidates conservatively (narrowly) on the parts of the interview that are standardized and focused on relevant skills—but you should be liberal (flexible) about whatever else they may need. You'll still get the data you want and your candidate pool won't be restricted or misrepresented by unnecessary rules.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 id=\"h-conclusion\">Conclusion\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Structured, realistic, job-focused interviews are the gold standard according to several decades of research. So when you decide how much of the process should be unplanned or how much of the evaluation criteria should be unquantifiable, the only question you should ask yourself is how often do I want to select the wrong candidate?\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Of course, sometimes the wrong candidate will slip through. That's not totally preventable. The best interviewing methods are only mostly accurate. But that shouldn't scare you into an intuition-based interview process any more than the occasional computer failure scares you into doing everything on paper.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Hiring wisely is perhaps the most powerful advantage a company can have over its competitors, and the best way to do it is to focus on what you can measure. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>\u003C/p>\n\u003C!-- /wp:paragraph -->","html","2022-05-23T14:00:00.000Z",{"current":533},"the-science-of-interviewing-developers",[535,543,548],{"_createdAt":536,"_id":537,"_rev":538,"_type":539,"_updatedAt":536,"slug":540,"title":542},"2023-05-23T16:43:21Z","wp-tagcat-code-for-a-living","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":541},"code-for-a-living","Code for a Living",{"_createdAt":536,"_id":544,"_rev":538,"_type":539,"_updatedAt":536,"slug":545,"title":547},"wp-tagcat-job-interviews",{"current":546},"job-interviews","job interviews",{"_createdAt":549,"_id":550,"_rev":551,"_type":539,"_updatedAt":552,"description":553,"slug":562,"title":563},"2025-04-24T16:28:57Z","797b8797-6e65-4723-b53f-8bc005305384","vn3UzGZJyacwgllS8WZNgc","2025-04-24T16:29:32Z",[554],{"_key":555,"_type":65,"children":556,"markDefs":561,"style":73},"bb32f75814b4",[557],{"_key":558,"_type":69,"marks":559,"text":560},"dbcf27ef29b3",[],"Community-generated articles submitted for your reading pleasure. ",[],{"_type":10,"current":563},"contributed","The science of interviewing developers",[566,572,578,580],{"_id":567,"publishedAt":568,"slug":569,"sponsored":12,"title":571},"1b0bdf8c-5558-4631-80ca-40cb8e54b571","2025-08-21T14:00:25.054Z",{"_type":10,"current":570},"research-roadmap-update-august-2025","Research roadmap update, August 2025",{"_id":573,"publishedAt":574,"slug":575,"sponsored":12,"title":577},"5ff6f77f-c459-4080-b0fa-4091583af1ac","2025-08-20T14:00:00.000Z",{"_type":10,"current":576},"documents-the-architect-s-programming-language","Documents: The architect’s programming language",{"_id":16,"publishedAt":17,"slug":579,"sponsored":12,"title":20},{"_type":10,"current":19},{"_id":581,"publishedAt":582,"slug":583,"sponsored":12,"title":585},"f0807820-02d7-4fc5-845f-3d76514b81c0","2025-08-11T16:00:00.000Z",{"_type":10,"current":584},"renewing-chat-on-stack-overflow","Renewing Chat on Stack Overflow ",{"count":587,"lastTimestamp":588},26,"2023-05-25T09:47:51Z",["Reactive",590],{"$sarticleModal":527},["Set"],["ShallowReactive",593],{"sanity-RH_HdZjtYJpaCHbJ-c61PszEW9TS40a9ey1Dh7CwM0U":-1,"sanity-comment-wp-post-20143-1755789992993":-1},"/2022/05/23/the-science-of-interviewing-developers/?cb=1%2F"]