4 ms·
The conversations involved me asking them to talk through the details of their interview process and decision-making. I think there were good incentives for com
by ammon 8y ago
The conversations involved me asking them to talk through the details of their interview process and decision-making. I think there were good incentives for companies be honest (given the context of us matching engineers with them). I did the classification into types of screening after, based on my notes.
- mlthoughts2018 8y agoIt’s still hard to know what this means. For example, all the senior engineers I currently work with are great at telling a story about how they look to hire based on talent, self-awareness, critical thinking, and many soft skills, and that the technical particulars are only incidental guideposts. Then they proceed to ask candidates to derive a card shuffling algorithm on a whiteboard in 30 minutes and fail them from the interview if the running time complexity would be too high or if they can’t mathematically prove the result would be a uniform draw from the space of permutations of the cards. Whatever story they tell you, it’s not about whether they are lying or not, it’s about the extreme myopia in tech where these people actually believe they are sleuthing out the inner talents and dispositions of candidates when they are obviously doing nothing but berating candidates with parochial, uninformative trivia.
- DoofusOfDeath 8y ago> For example, all the senior engineers I may be wrong, but it sounds like you're using hyperbole in two ways here: (a) you make a statement about all the senior engineers you know, and (b) that statement makes a rather extreme claim about how they evaluate candidates. I think using hyperbole is a mistake in this conversation because we're interested specifically in how common and how intense these phenomena are. (I don't mean to single you out. This thought has also occurred to me when reading other online discussions lately.)
- mlthoughts2018 8y agoIt is sincerely not hyperbole. My company has 12 principal engineers including me, and in the meeting where we discuss interviewing and hiring, the anecdote I described above is literally the standard of discourse. I can’t be certain that the same would have applied to all senior engineers in other companies where I previously worked. But I did interact with dozens of other senior engineers over the years and it’s a remarkably constant phenomenon. It’s not surprising either. We all like to tell ourselves stories about how we embody the best ideals that a broader community espouses, even when the reality of our day to day behavior is different. That is why I chose the term myopia. I think it’s a symptom of the tech world wishing to be associated with generally progressive human values, but that where the rubber meets the road, the implied values of tech orgs are no better or no more exemplary of positive human values than any other field of business.
- stcredzero 8y agoIt’s not surprising either. We all like to tell ourselves stories about how we embody the best ideals that a broader community espouses, even when the reality of our day to day behavior is different. That sometimes starts with a smaller community that takes such ideals seriously. It almost always ends with a much larger group that spouts those ideals but acts differently. the implied values of tech orgs are no better or no more exemplary of positive human values than any other field of business It's long been said that the practice of "Software Engineering" is more a technology heavy application of business and less like engineering.
- poulsbohemian 8y agoI like your choice of the word myopia, because I think you've accurately captured one of the central problems in hiring. Rather than finding ways to accurately assess whether a person can do the job, grow in their career to benefit the future needs of the team and company, we instead look to more or less trick them using technical games and puzzles that generally have nothing to do with the work they will be doing. > I think it’s a symptom of the tech world wishing to be associated with generally progressive human values I'm having trouble parsing this part of your statement, but let me say that I think it is more a function of the personality types that get into software development and technology more broadly. Many of us are INTJ types (self included and yes I know that Myers-Briggs is bunk to many of you), and many of us have what was formerly called Aspbergers. In short, there are particular personality types that go into these fields, and those personality types fixate on details. So it isn't surprising that's how many then interview and expect their fellow team members to exhibit similar traits. Without going too far off tangent, I think this is often why this field is seen as combative towards women and non-white people, IE: it has less to do with a deliberate desire to exclude and more to do with the quirks of the people who enter this field.
- hueving 8y agoIt's definitely not hyperbole, that's literally how companies like Google hire. Do an algorithm dance and get rejected/accepted based on that.
- stcredzero 8y agoThen they proceed to ask candidates to derive a card shuffling algorithm on a whiteboard in 30 minutes and fail them from the interview if the running time complexity would be too high or if they can’t mathematically prove the result would be a uniform draw from the space of permutations of the cards. For a company that runs an online game server, let's say, this really isn't that high a bar. I know off the top of my head that there's some edge case that can keep you from getting an even distribution, but otherwise 1st year probability and 1st year algorithms knowledge should be enough for that. The proof is a slow-ball and the algorithmic complexity is a slow-ball in your example. it’s about the extreme myopia in tech where these people actually believe they are sleuthing out the inner talents and dispositions of candidates when they are obviously doing nothing but berating candidates with parochial, uninformative trivia. Or, it could be about weeding out students who got by with nothing more than gluing libraries together and really only thought of degree work as a formality while they were busy networking.
- dsfyu404ed 8y agoOr it's weeding out all the people who promptly forgot all the stuff they could just google because they didn't regularly use it in their last job.
- stcredzero 8y agoIf someone is going to be so prompt and complete at forgetting everything, then they may not have a tickling awareness that something might be up when the occasion to apply 1st principles knowledge does arise. Seriously, if the algorithmic complexity of a shuffling algorithm is going to be a challenge, why even have a degree!? If someone is so good with the forgetting that they can't even apply "n choose m," just what are people paying tens of thousands of dollars a year to learn in college? The stuff you use all the time in your job is largely arbitrary trivia. However, the knowledge referred to in the example given above are first principles. So your standards fall below the level of being able to apply first principles? I can see why people would want to weed people like that out.
- 8y ago
- tzs 8y ago> Then they proceed to ask candidates to derive a card shuffling algorithm on a whiteboard in 30 minutes and fail them from the interview if the running time complexity would be too high or if they can’t mathematically prove the result would be a uniform draw from the space of permutations of the cards. I'd actually expect a surprisingly large fraction of programmers to be able to do reasonably OK on that particular problem--and I don't mean just those with CS degrees. I'm including the ones that are entirely self taught. In fact, especially those. That's because so many of us, even those with CS degrees or other common degrees that programmers get instead of CS [1], started out trying to write games or other things that needed to shuffle, were sure that the obvious approach we took was right, and then found out it wasn't and why. It was our first personal encounter with the idea that you can analyze and reason about algorithms and their correctness. In other words, shuffling was one of the first algorithmic "aha!" moments for many of us, and you don't really forget those. [1] Mine is math, not CS, for example. Partly that's because when I got my degree, in the early '80s at Caltech, Caltech did not have an undergraduate CS degree. The CS department only offered graduate degrees. They had all the necessary undergraduate coursework available--they just had not yet put together a formal degree program.
- SamReidHughes 8y agoYep. I encountered the problem of shuffling while writing QBASIC code as a teenager. I couldn't prove that random swapping wasn't uniform, in those days, but was able to come up with the uniform algorithm everybody uses now and feel comfortable with its correctness. Granted, the interview question is pretty bad if it's just a test of if you've seen the problem already.
- nicoburns 8y agoIt possibly depends when you started programming. When I was making those kind of games and such things my environment had a built in shuffle call that worked fine...
- tzs 8y agoFor those who haven't seen it, here is how you can show with a counting and divisibility argument that a common algorithm many come up with to shuffle is not a fair shuffle. Here's the algorithm, in pseudo code (yes, with 1-based arrays!): let a = [1, 2, 3, ...., N] # the items to shuffle for i = 1 to N j = random_in(1, N) swap(a[i], a[j]) Imagine that random_in() makes a log of all its return values. In this program every time it is called it returns an integer >= 1 and <= N. It is called N times. Thus, the log consists of N integers with N possible values for each integer. In what follows we shall call such a log a trace of the program (because log could be confused for logarithm). (Trace has a meaning in linear algebra, but that should not cause a problem here). That means that there are N^N distinct possible traces. Each of these traces is equally likely. We can associate with each of the traces a shuffle, namely the shuffle that results from the run of the program that produced that trace. This gives us a list of N^N shuffles. This list will contain duplicates, because there are only N! distinct shuffles, and N! < N^N. The shuffle is fair if and only if each possible shuffle occurs the same number of times in the list of N^N shuffles. For it to be even possible for that to happen, we must have N! divides N^N. But if N > 2, that cannot happen. To show this note that if N! divides N^N, then every divisor of N! must divide N^N. Pick a prime P such that (1) p < N and (2) P does not divide N. Then p is a divisor of N! but is not a divisor of N^N, which shows that N! does not divide N^N, and so the shuffle is not fair. Can we really always pick such a prime? Yes. If N is divisible by every prime p < N, then N-1 must be prime, but then N-1 is a prime < N that does not divide N. Note that you cannot save this class of algorithm by doing more passes. Those just change the size of the trace from N^N to N^(kN) for some integer N. Nor can you save it by changing it to pick both indices at random for the swap instead of picking only one at random. That just changes N^N to (N^2)^N = N^(2N). As long as the random number generator is always asked for a number in {1, 2, ..., N} and it is called the same number of times every time the program is run, the trace size is going to be a power of N, and cannot be divide evenly by N! Now we can see why Fisher-Yates might work. It asks for a random number up to N the first iteration, up to N-1 the second iteration, and so on. That means its trace is N! long. There is no problem dividing N! by N!. Since N!/N! = 1, if we can show that each shuffle is included, that will also show that each is included the same number of times, and hence that Fisher-Yates is fair. All we have to do now to see that Fisher-Yates is fair is show that each shuffle can be produced by it. Given a desired shuffle, it is easy to construct the trace that results in it, and we are done.
- WalterSear 8y agoI'm still unclear why you would think that people would openly discuss their prejudicial biases when discussing their interview processes and decision making. The behaviour isn't socially desirable, has potentially serious consequences for disclosure ("The Triplebyte people won't work with us because I told them my interview process begins by throwing out all resumes with funny sounding names."), and assumes that the people involved are aware of their behaviour.
- tyingq 8y agoThere's also a fairly high likelihood that people interviewing are unconsciously bringing in "company culture" bias that they aren't aware of.
- DanBC 8y agoEveryone says they only hire on merit, and then you double-blind their recruitment process and you see how different the sucessful candidates are from the previous process.
- zoomablemind 8y agoAlso a big factor here is a team that would receive the new hire. Hiring managers may not exactly be people readers to knowingly identify a 'culture' or what makes this particular team stable/ performing. Skillset is one thing, yet the team dynamics is another. For example, a stable team needs both extroverts and introverts, the ratio is not exactly fixed. Yet matching an extrovert to dominantly extroverted team may not be the best choice. How much one can tell at the first impression? Are we back to the era of personality tests at the interview?