Stop Interviewing with Leet Code
As an interviewer I can tell you are absolutely missing the point.<p>Why would I ever want to hire a developer without seeing them perform? And since being able to program a small piece of code to specification is such a basic, important part of development, why would it be bad for me to verify if you can do it?<p>If your friends are so good developers, why would they have a problem reasoning around a relatively simple, toy problem? Is it possible that your evaluation of your friends&#x27; prowess is biased?<p>Why do you think dealing with problems under pressure is not a valuable skill?<p>Why do you think leetcode questions are supposed to tell about quality of code that the candidate will produce? Is it possible that you just don&#x27;t understand what leetcode is for?<p>It all seems to me like students complaining that the exam was hard. IT DOES NOT MATTER if the exam was hard. What matters is if you were better than other students. (And even that does not matter, because in the long run it only matters if you have learned something useful.)<p>So what is the point here? I think people just complain too much rather than focus on figuring out how to succeed.<p>Leetcode questions are supposed to tell me:<p>- Can the candidate understand the question? Can they think about the problem analytically? (Somehow there are a lot of people that can have nice conversation but they fail when they are supposed to apply hygiene to their thinking.)<p>- Can they follow instruction? (I explain the rules of the task and am interested in seeing if the person is able to follow basic instruction)<p>- Can they program? (I met a lot of people over the years who are able to fake their way through the process EXCEPT for when they have to actually write some code. For example they learned standard library by rote but do not have ability to use those functions when needed.)<p>- Can they plan? Are they organised? (A lot of people just do stuff at random that might work for very small change but will utterly fail for any larger task. Good developer inevitably have some kind of plan and organisation.)<p>- Can they work with somebody else on the problem? (Some people don&#x27;t know how to work with others even when offered help.)<p>- Do they understand what the program they wrote is doing? (<i>MOST</i> people do not know if their program works or not or what it does. They need to run the program to be able to tell. All best developers I ever worked with can tell what the program will do before they run it. Any person that can&#x27;t do this is destined to be creating huge number of bugs as they mindlessly retry code until it works in the process leaving every bug that did not stop it from working in their test environment.)<p>- Are they intelligent (enough)? (Leetcode is sort of intelligence test. You typically need to be at least at some intelligence level to solve the problem.)<p>The problem with leetcode is all those interviewers that do not understand how to use it as a tool to learn things about the interviewee. And that frequently is because they want to get information that you can&#x27;t easily from leetcode.<p>So what you can&#x27;t learn from leetcode question?<p>- Will they write nice code? You can&#x27;t learn this because writing nice code is ability to adhere to the body of code you are already working with. Everybody&#x27;s programming style is different and even best style might still be incomprehensible to a person that is not used to it.<p>- Knowledge. Do not ask stupid questions like how to transform a binary tree in a certain way because they only thing you are testing for is whether the candidate is lucky to know the answer to your problem.<p>- Can they solve <i>complex</i> problems? Do not give complex problems on interview. It is just too noisy and luck-driven.  Perfect question is just complex enough to be novel and present some (but not too much) challenge to the candidate but not complex enough to run the risk of running out of time for a reasonable candidate.