15 ms·
The less talked about absurdity is that successfully passing programming interviews is a skill itself. It's especially absurd because the time I spend developin
by zinclozenge 8y ago
The less talked about absurdity is that successfully passing programming interviews is a skill itself. It's especially absurd because the time I spend developing that skill is less time spent developing skills and knowledge more directly relevant to my job. Yet, programming interview skill is more relevant to progressing my career.
edit: now if you'll excuse me, I need to do some dynamic programming problems.
- griffinkelly 8y agoI've worked with some folks who were decent engineers who originally didn't get offers from FANG companies because they blew the interview; they later studied their ass off on leetcode and got offers. This did not make them better engineers at all. Ultimately, its just studying for the test, very much like the ACT/SAT in high school. You can be great at taking tests but ultimately a terrible student or vice versa.
- fossuser 8y agoIt feels very much like that to me which is why it’s strange there isn’t a Kaplan equivalent. There’s interview cake and leetcode, but I think people would pay $2k for a class that focuses on the questions and in person whiteboard practice. They could collect information about the interviews at the major companies and then use those to create the program. For payment could also help candidates negotiate and then take a cut of the signing bonus. If this isn’t part of lambda school already I think it should be. I already work at a competitive tech company, but I’d sign up for this in a second to help me stay competitive for interviews.
- austenallred 8y ago> If this isn’t part of lambda school already I think it should be It’s part of classes for our existing students, but it isn’t a single offering. One day.
- fossuser 8y agoCool - if you need somebody to help I’d be interested.
- acb1990 8y agoApp Academy was working on something like this, last time I checked. I believe it's more focused on people who've already been through their program working on getting the next-step-up job from their first so I don't know if it's generally advertised/ available
- pmiller2 8y agoThose courses are out there. I saw one for $5k and ran for, IIRC, 8 weeks, that covered the entire interview process.
- Frost1x 8y agoI've noticed several groups that offer SE interview specific training out there now that I'm stepping through this interview process after the landscape has changed since my last position. It's funny that after doing some searching, many proponents of this widely adopted and poorly researched interviewing methodology appear to be running businesses selling training for these interview processes... surprise, surprise.
- chooseaname 8y agoThe only way I would consider paying for a course like this is if, upon successfully completing it, I would not have to do the technical portion of the interview at companies I applied to. They would accept this cert and just do the soft skills interview.
- Apocryphon 8y agoSounds like a neat segment for Triplebyte to move to- or for a competitor to capitalize upon.
- alboy 8y agoOne could argue that CS undergraduate degrees are perfectly suited for this purpose. FAANG & Co don't seem to care for that. You've successfully passed a few dozen exams at MIT or Stanford? Well, let's make the reasonable assumption that you have no clue about algorithms and data structures and start with our third whiteboarding session, that should be a way better proxy for your knowledge.
- erik_seaberg 8y agoThose incentives are misaligned. Not every law school grad can pass the bar.
- alboy 8y agoThey may very well be, but is the quality of signal truly worse than that which an interviewer can extract from a few hours of your writing code on the board?
- erik_seaberg 8y agoThere are people with degrees who can't code. I'd prefer we don't hire them, so we ask for coding.
- reificator 8y agoThat's called college, and experience has shown that the people who have the certificate aren't guaranteed to know how to write a fizzbuzz.
- Apocryphon 8y agoThe major ones seem to be Outco and Interview Kickstart. But agreed, there's far fewer whiteboarding/interview process-specific bootcamps compared to web/mobile bootcamps.
- TrinaryWorksToo 8y agoThis is exactly what Outco.io does, and I highly recommend them for this purpose.
- fossuser 8y agoLooks interesting - have you used them?
- TrinaryWorksToo 8y agoYes! I felt I was noticeably better at selling myself in interviews, which was my primary goal for going through them. I didn't feel I had enough of a support network to properly prepare otherwise. There's a lot of technical stuff, that goes by very quickly, and also equal amount of non-technical, this-is-how-recruiting-works content.
- FabHK 8y ago> This did not make them better engineers at all. How do you know? I understand that FANG have themselves come to the conclusion that brain teasers are not necessarily very predictive for engineering performance. But CS/programming questions for CS/programming roles? That seems sensible. You can study lots of vocabulary to achieve better results on the verbal section of the GRE or similar tests. But afterwards, you will, in fact, have better vocabulary, I submit. I am surprised that you categorically deny that they were better engineers after studying CS/programming questions.
- Buldak 8y ago>You can study lots of vocabulary to achieve better results on the verbal section of the GRE or similar tests. But afterwards, you will, in fact, have better vocabulary, I submit. Yeah, but tests like the GRE claim to predict academic performance, not vocabulary. So unless you think augmenting one's vocabulary alone will make one a substantially better student, there's still a gap there.
- ivanhoe 8y agoOh, you'll certainly be better at solving programming puzzles type of problems, but the thing is that those questions usually don't translate well into real-life problems that you'll encounter at work later. You can't architect a good solution IRL by trying to figure our what the test author wanted you to do, like with programming puzzles. And for implementing some algorithm keeping every detail of it in head definitely helps, but it's not a significant advantage over someone who just googled all those details 10 minutes ago. So both types of tests are not testing the real dev capabilities, they test how much they prepared for the test. IMO only tasking the candidate to build some real piece of software or even better refactor some real code, with enough time and full access to google and stack overflow, and being fully able to ask other people for suggestions & help will show you the realistic picture of the candidate's future performance as a part of the dev team. Put them in a real situation and give them the real type of problems, and you'll get the real results. Everything else is like giving sudoku tests hoping to choose the best mathematician.
- meko 8y ago
- ng12 8y agoIf you're FANG you kind of want to hire that guy though -- the one who sees there's a task and a set of things he can do to accomplish that task. Same thing with the ACT/SAT, colleges want good test-takers because they're going to be giving a lot of tests.
- tombert 8y agoI go back and forth about how I feel about doing heavy algorithm/data-structure stuff in interviews. On the one hand, I have never once written any kind of sort algorithm or LRU cache by hand for a production system, because why would I? Pretty much every language's standard library has a fairly-optimized sort and caching thing built in, and if they don't then there's still probably a million outside libraries to do it for me. On the other hand, I genuinely do feel theory is really important. While not knowing the minutia of a tim-sort doesn't indicate that you'll be a bad engineer, not knowing the runtime efficiency of a sort can lead to some really awful code. Not knowing when to use a hash table instead of a nested-for loop can be a sign that you don't really know what you're doing, and not knowing some rough theory on concurrency indicates that I might be stuck debugging your race conditions or deadlock. I try to not be a complete jerk and I won't do stuff like give out an NP-complete problem (which an interviewer gave me once), nor will I ask for intimate details of how one would implement CSP, but I do tend to focus on theory-heavy questions more than my peers, but I try to give a fairly-generous amount of hints so that people don't get too stuck.
- bunderbunder 8y agoI'd be curious to see if there is any value in questions that focus on understanding of the basic ideas behind algorithms and data structures as a subject. Time complexity, sure, but what I would really want to know is, given a description of a data structure and some algorithms for manipulating it, can you identify the invariants that should be true of these rules? That sort of thing might give a better sense of if someone has an instinct for how to verify whether the code is working. And, by extension, if they have a grasp of some concepts that go a long way toward helping a person come up with more reliable and maintainable designs.
- Waterluvian 8y agoI think the important thing here is the difference between understanding complexity and implementing a sorting algorithm. If I were hiring a carpenter I would want to know they understand their tools and when to use them. I don't care if they don't know how to make them. But of course knowing how to make them suggests an intimate appreciation for the craft (looking your way Matthias Wandel)
- fancyfish 8y agoWhat's more, it's funny reading that Google sends out prep packets saying to learn/relearn these algorithms. So they don't expect their recruits to know them, just be able to memorize them for the interview.
- rightbyte 8y agoThis is kind off strange for a non US resident to grasp. I've been employed as a programmer three times and noone tested my coding abilites what so ever on the interviews. No samples, nothing. Never heard of any collegue doing that either.
- SilasX 8y agoWhat stops someone unqualified from getting through? What other filters do you apply?
- mlthoughts2018 8y agoProbing someone with very technical conversation about past technical projects is a much stronger filter to prevent unqualified candidates than passing CoderPad tests, whiteboard algorithms, etc. The conditional probability you are hopelessly lacking software skills to do a job given that you nonetheless passed a TripleByte exam or something is quite high. Overfitting & memorization for the sake of the test is extremely common. But it’s much, much harder to fake competence when needing to dynamically and verbally explain technical details in a conversational interview about past work experience.
- joshuamorton 8y agoI can, with quite a high level of competence, speak about projects I had no part in implementing or that don't yet exist. It's far, far easier to fake expertise when you have more context than the person asking questions. Technical interview questions make sure that the question giver has more context than the recipient, ignoring pathological cases.
- mlthoughts2018 8y agoI’m sorry but you cannot do what you are claiming. It has nothing to do with whether the candidate has more context or not. In fact, conversational interviewing like this has very little to do with any of the domain specifics of the project. The point is to recursively keep probing for deeper technical specifics, so they have to explain at finer and finer technical levels what were the tradeoffs, why exactly were certain decisions made or how were certain problems overcome. It is precisely the situation when someone did not have to dig into the technical weeds of a project for themselves that they will not be able to fake or fast talk their way through this type of interview. That is the number one, defining characteristic of this way of interviewing.
- warp_factor 8y agoThis is why this whole interview thing is so absurd. The amount of days lost by engineers to relearn obscure algorithms and training on leetcode while we could be coding for things that are actually useful.
- gameswithgo 8y agoobscure algorithms are useful. it isn't a perfect system but its better than what most people propose as alternatives, which is to just have an ad hoc conversation. testing whether someone is willing to prepare for a thing is a relevant work skill test too.
- pmiller2 8y agoThere’s a vast difference between, say, preparing for a school exam and preparing for a job interview. In the former, you know in advance what material will be tested. Job interviews are more like PhD comprehensive exams, or professional licensing exams. I know a lot of working professionals who are good at their jobs, yet admit they wouldn’t be able to pass the license exam today.
- 1000units 8y agoThe elephant in the room is that it's a surrogate for an IQ test, since those are illegal.
- thedufer 8y agoIt is not illegal to use IQ tests as part of a job screening (in the US). It is illegal to screen in a way that is both discriminatory and not proven to correlate with job performance, but that applies equally to both IQ tests and algorithms questions.
- 1000units 8y agoIQ is proven to correlate with performance in virtually everything, so I'm not sure where you're going with that. If I require all prospective engineering hires to prove explicitly that they have an IQ of at least 135, I will get sued. Do you think this is false?
- daenz 8y agoThis resonates strongly with me. I know a few engineers who are bad to mediocre software developers, but excellent interviewees. That skill alone lands them offers at any place they want to work. They can whiteboard algorithms like there is no tomorrow, but they can't manage software complexity.
- vp8989 8y agoA false dichotomy. Managing complexity is a valuable skill that should also be screened for at interview. At most top companies you are there for at least 4-5 hours so there should be plenty of time to evaluate that skill. I think whiteboard questions are good, I want to know that this person is capable of writing difficult code if we need them to. I also think we probably ask too many of them. I have been on the hiring side and my experience so far has been that almost always the feedback is close to identical across multiple whiteboard questions. The questions are also so abstract that asking multiple to "prevent bias" seems ineffectual. What bias could there be, you either solve the problem or you don't. Bias is more likely to come in on the behavioral interviews. There should be multiple of those for sure. Generally someone is either a good enough coder or not and they will display that consistently across all the interviews. You will see the same stuff throughout (good or bad variable naming, good or bad communication etc) thus asking > 1 coding question by default is a waste of everyone's time.
- daenz 8y ago>A false dichotomy It's not a false dichotomy because I am not suggesting that both skills are mutually exclusive. I'm highlighting some personal experiences where I've seen one skill is vastly overvalued compared to another. >Managing complexity is a valuable skill that should also be screened for at interview I've never been part of an interview, on either side, where I've seen testing for managing software complexity. Good interfaces, function design, side effects, state management, etc, are all second class citizens to finding the appropriate algorithm to solve the interview question. I've seen it over and over. The only time I've been close to a complexity management question was on a systems design question, but even then, it was only a very high-level systems discussion. I don't think most places know how to screen for it.
- alfalfasprout 8y agoI've interviewed tons of engineers that ace the interview and you have no choice but to pass but you see later on writing abysmal code. The problem is that design, quality, and maintainability are not valued. As a result, you end up with extremely mediocre "hacky" engineers at larger companies that can spit out tons of valid code but lead to a tangled mess shortly thereafter. Worse, there's this huge emphasis on "big O" with zero focus on clearly egregious bad practices (tons of copies, outrageous memory usage, casting between strings and numbers all the time). I've rarely seen clearly bad algorithms be deployed but I have seen plenty of unperformant code go out.
- brownbat 8y agoDoes anyone just give you someone else's code and have you write tests and documentation for it?
- delphinius81 8y agoI had a coding test once where I was given someone else's code with an introduced bug, and I had to fix the bug. To do so, you were basically documenting the code along the way as you traced your way through possible trouble spots. It felt far more meaningful than the typical "implement some list traversal algorithm that you won't actually ever use at this job."
- ball_of_lint 8y agoI've had a similar interview and although I did not solve the bug, I think the interview was much more effective than most algorithm based interviews. Not only did my interviewers get to see how I navigate a codebase and use my IDE/other tools, they also saw how I approached known unknowns and discovered information.
- tekkk 8y agoI myself too have witnessed a similar thing but with not-so-algorithmic-people. I think it all comes down to the company culture and the person actually being able to let go of their ego and improve their programming skills. It is similar to a senior developer who never learned to properly program and because of hir position is incapable of seeing faults in their code. Once you've gotten too accustomed to shitty code, it's hard to change your style which is understandable. Probably biggest influence on this I think is the culture, if nobody tells you that your code is shit (in a kind way) you'll never learn better. But then again, some people are so hard-headed and full of themselves that they get defensive and never actually admit their faults. Though giving and receiving feedback is not easy, can give you an identity crisis once you realize you've been doing something wrong for years. And then you have a bunch of Ivy League graduates who have spent years learning algorithms and are burning to use them but there's no actual problems that really need them.
- crazygringo 8y agoNote that one often-cited counterargument to its seeming "absurdity" is that it evens the playing field in a fairer, more meritocratic way. No matter your background, what school you went to, or what randomized experience you got in previous jobs, every person has equal opportunity to study and practice the same algorithms on their own (as opposed to being lucky enough to be able to afford a top-tier $$$ CS education, or to being lucky enough to have the connections or chance to get certain previous jobs). And thus, when applying to jobs, it becomes something more akin to a raw-ability IQ test, which you can argue is "fairer", especially when management realistically knows developers might be shuffled around all the time, and that the extensive SQL experience they were hired for will mean nothing when project requirements switch to a basic key-value store. On the other hand, if you are interviewing for a highly specialized position that is fairly certain not to undergo change, then it makes sense that specialized experience could rightly count for far more than any kind of generalized intelligence or ability.
- zimpenfish 8y ago> every person has equal opportunity to study and practice the same algorithms on their own Well, that's just not the cause - there are many groups of people who lack the opportunity to study and practice. Couple of examples: people with kids, people working 12 hour shifts, people without access to teaching materials, people without a sufficiently advanced machine to run dev environments, etc.
- oarabbus_ 8y agoIt's "fairer" if you're a recent college grad, probably single, definitely no kids or other family obligations, fresh out of school, and without much to lose if you spend all your free time studying for a "fair, meritocratic" test.
- freewilly1040 8y agoInterviewing is a skill regardless of what field you are in. I agree that algorithm are not optimal for testing engineering skills, but there's a whiff of entitlement when engineers get indignant about having to spend time preparing for an interview. Objective evaluation methods for evaluating candidates are hard to come by, and I don't see obviously better alternatives.
- abhishekjha 8y agoHi. Where are you learning DP problems from? I am very bad at those and need a few good references so that it sticks in my memory.
- ball_of_lint 8y agoI'd suggest kattis and CodeForces. I use kattis mostly, but know a number of people who like codeforces better. Here's a few for you to try. Some of these are pretty hard, but you should be able to find solution sketches online if you google the contests they are from. https://open.kattis.com/problems/increasingsubsequence https://open.kattis.com/problems/increasingsubsequence https://open.kattis.com/problems/maximumsubarrays https://open.kattis.com/problems/maximumsubarrays https://open.kattis.com/problems/tray https://open.kattis.com/problems/tray https://open.kattis.com/problems/dinnerbet https://open.kattis.com/problems/dinnerbet https://open.kattis.com/problems/hyperpyramids https://open.kattis.com/problems/hyperpyramids I've solved all of these as well, so if you get really stuck feel free to reply here and I'll try to guide you through them.
- abhishekjha 8y agoThank you. I will definitely be coming back. I guess I have difficulty formulating a DP problem properly.
- ball_of_lint 8y agoI found another recently that has DP on a tree: https://open.kattis.com/problems/theescape https://open.kattis.com/problems/theescape