8 ms·
This post ought to be the final nail on the coffin of the cult of leetcode/whiteboard style inverviewing. Just looking at this guy's repo and his writing style
by vanusa 5y ago
This post ought to be the final nail on the coffin of the cult of leetcode/whiteboard style inverviewing.
Just looking at this guy's repo and his writing style -- you'd be foolish to waste his time or yours on leetcode-style hazing. Your conversation should be strictly high-level. If you must, pick a file at random from one his larger projects, and ask a few straightforward quetions ("I'm new to Go - can you explain why I would use this datastructure here?") just to make sure the repo isn't a copy of someone else's, and he isn't outright trolling you. Apologizing as you're doing so, of course ("Sorry, but do you mind if I ask a silly-sounding question or two about something in your repo?").
That's all you need to do. Most candidates won't have work samples that are quite as slam-dunk, of course. But still, your own "smell test" can save you tons and tons of time (and the candidate, agony). It's really, really hard to fake one's way through questions like these -- and really easy to tell if someone is trying to do so.
Put another way, your basic mindset should be: "Trust, but verify". Not: "Joel Spolsky wrote that post 20 years ago claiming that 99.5 percent of all candidates are utterly incompetent. Therefore I need to torture this guy until he confesses."
At least as far as answering the "can he/she code?" question is concerned.
- redis_mlc 5y ago> This post ought to be the final nail on the coffin of the cult of leetcode/whiteboard style inverviewing. Looks like he has ADHD. Maybe somebody with more time can go through his blog post line-by-line and figure out what's going on. Most of my Coderpad stuff compiles and runs the first time, so I don't use his incremental test method, or see a need for it. Maybe he learned programming on heavy-weight IDEs and got trapped mentally in those?
- MrStonedOne 5y agoSo a screening system that only allows devs with your writing style in is valid why? I'm just like them, only my ide is notepad++. My code never compiles on first attempt, and never runs correctly on the first attempt.
- disgruntledphd2 5y agoIf my code compiles and runs correctly the first time, I spend an inordinate amount of time looking for bugs in it ;)
- kevinburke 5y agoI use Vim, it's just different learning and development styles, I think. I’m very capable of focusing when there is a lot of money on the line.
- redis_mlc 5y agoThanks for the followup answers. I also use vi (no syntax/color highlighting, no plugins, original vi commands only.) I think you should talk to some other developers and see what's going on with your ability to focus. (I'm one of the top application developers in a particular language and can actually think in that language, so that level of familiarity helps me.)
- vanusa 5y agoLooks like he has ADHD. That sounds ad-hominem. I found the post perfectly readable. Maybe he learned programming on heavy-weight IDEs and got trapped mentally in those? Maybe he just thinks differently than you do? His body of work is not suggestive of someone "trapped" in an IDE or other dysfunctional midset.
- redis_mlc 5y ago> That sounds ad-hominem. I found the post perfectly readable. I wasn't referring to his blogging style, I was referring to his description of his "struggle" development process. > Maybe he just thinks differently than you do? He certainly does. He might want to find out what's going on by talking to other developers. One of his comments in this thread says he uses vim, so it's not an IDE issue.
- willcipriano 5y agoI generally write some naïve code and if it doesn't work, get out the debugger and fix it from there. I can work a lot faster when everything is laid out and I don't have to guess about what the data structures are going to look like. If it's performance sensitive like some tests I've seen, I'd use a profiler. I often use the jetbrains find and replace tool, as well as the search tool, I also like that I can click into the source code for libraries that I use, so I don't have to guess about the interface or implementation. Stuff like coderpad takes away a good portion of my tools that I would use day to day, I taught myself to code in notepad, but I purchased the full suite of jetbrains tools years ago so I wouldn't have to fumble around with inferior tools.
- google234123 5y agoA profile can’t suggest a better algorithm.
- GoOnThenDoTell 5y agoand a better algorithm can often be over-engineering, so it needs context in the question-giving
- nitrogen 5y agoA profiler will tell you whether a O(n log n) algorithm with a very high constant factor is better or worse for your situation than an O(n²) algorithm with a very low constant.
- duxup 5y agoHis description of how he works sounds heavy weight…by his own design to work efficiently. That’s a good thing.
- EdwardDiego 5y agoA lot of devs have ADHD.
- Kye 5y agoThere's even a subreddit: https://www.reddit.com/r/ADHD_Programmers/ https://www.reddit.com/r/ADHD_Programmers/
- zaptheimpaler 5y agoMaybe you're trapped in mentally simulating a compiler and those of us with good dev setups can dedicate brainpower to other concerns?
- wiseowise 5y agoIt's the other way around, from my experience. People who can write a program without any setup can solve it even on paper, while people that are hardwired to specific setup or IDE quickly froze when you ask them for something.
- sofixa 5y ago> People who can write a program without any setup can solve it even on paper, As someone who had courses in C on paper, i can only say that it's a colossal waste of time. Tooling exists to make lives easier, gain time and productivity, why avoid it? It'd be like saying only the farmer who can do everything by hand without any tools increasing their productivity is a real one. Or an accountant refusing to use Excel/calcuators/ERPs and writing everything on paper. And before anyone jumps to conclusions, i often write small scripts with vim with a minimal setup, but when I'm doing anything complex i prefer to use an IDE
- wiseowise 5y ago> It'd be like saying only the farmer who can do everything by hand without any tools increasing their productivity is a real one. Or an accountant refusing to use Excel/calcuators/ERPs and writing everything on paper. You're trying to map manual work onto engineering. And absolutely I'd rather work with accountnant who can write me on paper without Excel/calculator/ERP his logic. It's like you're being obtuse just for the sake of the argument. Someone who can clearly express themselves without specific medium, be it paper, IDE or whatever is strictly superior to someone who is tied to one specific medium.
- sofixa 5y agoWhen one of the mediums actively helps and avoids small human errors, I'd prefer the person knowing using it instead of sticking an old and imperfect method out of pride.
- nijave 5y agoIm not a huge fan of leetcode or work samples but on the receiving end it weeded out a huge number of bad candidates. We'd get tons of copy/pasted together infra as code from top Google results that wasn't even close to runnable (usually being close to runnable with a few small bugs was a good submission and runnable with no bugs was a great submission)
- vanusa 5y agoOn the receiving end it weeded out a huge number of bad candidates. Along with (as was the main point of the original blog post) probably quite a few false negatives, Like the author of that post, for example. Meanwhile, you can achieve the same filtering benefit by far less obnoxious and more accurate means (a cursory glance at their repo, fore example).
- kevinburke 5y agoPeople say this but then they reject answers that e.g correctly code the brute force solution or they don’t provide an algorithm to code for, so it’s not just “can you code,” it’s can you find the optimal algorithm and also code it, and usually the algorithm isn’t trivial or one you’d ever run into at work.
- wiseowise 5y agoI'd rather filter out good candidate than let bad in. It's a domino effect. You let one bad, he will hire more in the future.
- klipklop 5y agoI always hear this but never seen proof. If they are bad how do they get into a position that lets them make hiring decisions? Everyone likes to think they are the good candidate and not the bad one that slipped through…
- wiseowise 5y ago> If they are bad how do they get into a position that lets them make hiring decisions? We have flat hierarchy. Just volunteer to interview because your voice is on the same level as others.
- deleted 5y ago[deleted]
- aydwi 5y agoYour mention of Joel's post made me curious to find and read it. I assume this is the post in question: https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guide-to-interviewing-version-30/ https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guid... I'd say much has changed since he wrote that, and even for the time it contains some odd advice which he tries to force down the throat of the reader, but I'd be more interested to hear other's thoughts on the article.
- rightbyte 5y agoTo Joel Spolsky's defense, leet code questions where probably a great idea for him, when it was not an industry wide thing. He also had this, what seems to me, nightmarish, dev. speed and progress estimation tracking app he made. I don't remember what blog post, but he described it and jokingly wrote that Lisa needed to get the speed up, or something. Fast forward to today and it is a predecessor to our agile nightmare. But I don't think that was his intent.
- chiph 5y agoI remember when he made that post ("Evidence Based Scheduling"), and was also appalled. Yet, here we are today and programmer velocity is a now a measured metric in Agile. https://www.joelonsoftware.com/2007/10/26/evidence-based-scheduling/ https://www.joelonsoftware.com/2007/10/26/evidence-based-sch...
- rightbyte 5y agoOh ye thank you that is the one. The general problem with Scrum like velocity tracking is that devs will start to lie to hit the estimates to keep the commissars of their backs. The best liar gets the straightest graph. And as devs learns to lie, you get the impression of improved estimation. "Some developers (like Milton in this picture) may be causing problems because their ship dates are so uncertain: they need to work on learning to estimate better." I mean ... why God. I don't know but maybe poor Milton has the hardest tasks, does not cut corners or what not. Brandon seems to "get it" and has silly narrow error range - I wonder how ... (I am not bitter. Pinky swear)
- treis 5y ago>Just looking at this guy's repo and his writing style -- you'd be foolish to waste his time or yours on leetcode-style hazing Perhaps it's just me, but I took a look and I'm not convinced. Nothing jumps out to me as overwhelming proof of programming ability.
- bogwog 5y agoCan you explain why? To me it's obvious that this guy knows how to code, and he's probably better at it than most of the engineers I've met.
- treis 5y agoHard to explain the absence of something other than it's just not there. The list of projects/accomplishments are fine but the reality is that people lie about stuff like that. I poked around their recent GitHub commits but it was mostly bug reports. Nothing really that points to being obviously great at coding. I see that on paper they're a great candidate, but the reason that companies do these tests is that often the candidate doesn't measure up to the resume
- vanusa 5y agoNothing jumps out to me as overwhelming proof of programming ability. Are you suggesting that leetcode tests provide "overwhelming proof of programming ability"?
- sangnoir 5y agoNot gp, but obviously yes. I'm yet to meet someone who can pass a leetcode-style interview with sober and conscious interviewers, but can't code. Have you? Leetcode and coding ability is an A -> B but B -/-> A situation: failing leetcode doesn't mean you can't program, but the reverse is absolutely the case. Leetcode can't filter out other potential issues that may impact success (e.g. poor anger management, or poor judgement).
- vanusa 5y ago
- creamytaco 5y agoYour post ought to be ample proof that subjective opinions (like the one you display here) are not solid grounds for hiring decisions. When looking at this person's Github page, I -unlike you- see a vast number of trivial projects that can best be described as regurgitations of other people's work. Even worse, if you actually look at his first pinned project (https://github.com/kevinburke/nacl https://github.com/kevinburke/nacl), you'll see that it is nothing but a wrapper with trivial changes/updates... an anti-project. In the end, I see code that provides the illusion of competence but, when actually inspected, is actually telling me not to hire this person. The fact that pretty much anyone can declare oneself "a software engineer" today and easily present a veneer of competence together with powerful financial incentives, makes it absolutely necessary for any serious engineering team to have objective measures in place in order to evaluate candidates. There are so many terrible engineers out there (and some even slip through the cracks and land at places like FAANG) that doing anything less is irresponsible.
- vanusa 5y agoI never said you should just hire someone on the basis of their repo. But rather, if you're looking for a basic smoke test which can answer the question "Can this person actually code? Do I want to spend more time engaging them?" -- there are better ways to do that than expecting them to cram on a list of algorithms to recite over the phone. Like looking at an actual work sample. The fact that you looked at this work sample -- and came to your own conclusion about whether they would be worth engaging -- validates this very simple and basic point. Which is your call of course. He may not meet your bar, but it would be absurd to say this guy can't code, and hasn't been around the block in terms of general CS concepts. That said -- my own subjective opinion is that you're being exquisitely savage in your assessment of his NaCl implementation. Yeah, it's wrapper -- like it says in the Readme, and like a lot of working code out there. It's a pretty established way of solving a problem, in fact -- in some cases a very efficient and elegant way. It's not the same thing as writing 20k of primitives from scratch, of course. But that's not what he's presenting it as. He's not saying it's a "tour de force". He's saying "I think this shows we can talk about other things besides FizzBuzz". And then other things you're like saying... like "an anti-project"? Wow.