News for hackers. Stuff that matters.
Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @05:47PM (#18791802)
I've interviewed and been interviewing for over a decade. I have had the displeasure of interviewing many people who have very impressive resumes yet when asked how they would judge their skillset in an area, and being told from them that they would say "expert", being shown exactly the opposite when it came time to answer some questions in that area.

One data point... Senior engineer that founded the local java user group and wrote a published book on the java language. Couldn't code a simple reverse string algorithm, nor explain whether, after with help devising an answer, the method was thread-safe.

Another data point... A self-described expert in SQL with it all over their resume. Couldn't write a simple join, inner outer or other.

Weed-out questions exist because our industry is flooded with people who don't know, nor care to know, their craft. And there are plenty of employers who continue to hire these people, and promote them. I interviewed numerous "architects" (with development experience all over their resume) who couldn't come up with a naive solution, let alone the optimal, to a very simple problem. Want to fix the interview process in our industry? Figure out a way to weed out the liars? I'm all for it. I would rather not have to do basic algorithm questions, but that's the current environment.

Re:Microsoft changed how it interviews software developers by geebee on Sunday December 30, 2018 @08:59PM (#18792559)
Totally reasonable response. However, it seems like we're on an endless loop with this discussion. People talk about how they need technical interviews because someone who looks good on paper can't code reverse string, or write a basic join. But here's the thing, absolutely none of my technical interviews have involved anything remotely this simple. They are "find all matching matching subtrees in a binary search tree", or "find all possible matrices with a negative determinant within an NxM matrix of arbitrary size", and it's supposed to be done in about 45 minutes, at the whiteboard.

Really, it's not fizz buzz or string reversal that causes people to re-study for their algorithms and data structures exam before an interview.

In many ways, I think this is similar to requiring that senior actuaries re-study integration by parts prior to every interview. They don't have to, because they have a proper exam that is widely accepted in their field. We don't. So instead, we are taken through full day whiteboard exams, under conditions of great secrecy, over and over, every time we interview.

Re:Microsoft changed how it interviews software developers by linkregister on Sunday December 30, 2018 @11:34PM (#18793033)
This is an excellent analogy. I've found that ability to complete esoteric algorithms problems has little relation to productivity in specialized subjects, as in network security.
Re:Microsoft changed how it interviews software developers by james_s_tayler on Monday December 31, 2018 @07:44AM (#18794266)
Did anyone stop to think that maybe, just maybe, in the allotted time there simply isn't enough bandwidth to accurately answer the question of whether the candidate can do the job and will be a good fit and that no matter what strategy you try that perhaps this is an optimization problem for which there is no good solution.

Like this is it. As good as it gets.

I actually think all this back and forth, chopping and changing, people arbitrarily weeding companies out, companies arbitrarily weeding people out is providing just the right amount of randomness for everyone to wind up somewhere.

Hiring is mostly random.

Re:Microsoft changed how it interviews software developers by dom96 on Sunday December 30, 2018 @06:38PM (#18792013)
I have very little experience with interviewing candidates, but how can you be certain these people were liars? Maybe they simply were having a bad day, or got too much in their head with stress during the interview. There are many factors at play when it comes to a bad performance and it's not always simply that the engineer doesn't know the answer.
Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @06:45PM (#18792037)
I give them a chance to judge their own skillset. After looking at their resume, I have an idea based on the projects they take credit for, what their experience level should be. If what they state lines up with their resume, and they are unable to answer a simple question, with multiple hints and help, then I absolutely assume they are a liar (edit: or delusional, which is even worse. An expectation I have of seniors and above is to have some idea of knowing what they don't know).

It would be unreasonable for me to pass them through an interview that the other members on the team passed through based on "oh, they had a bad day".

Since you haven't been on the other side of the table, have you had coworkers who obviously were at a position above their skill level? Who allowed the rest of their team to carry them?

I've had periods wherey personal life has affected my productivity. That doesn't preclude my ability to write an algorithm that reverses a string nor write a simple SQL join. I don't ask brain teasers. I ask questions related to what the engineers under me will be expected to solve every day.

Re:Microsoft changed how it interviews software developers by a-dub on Sunday December 30, 2018 @08:12PM (#18792388)
How do you know that you're not just crap at interviewing? Assuming people are lying is both extreme and presumptuous, no?

Also, are your people actually reversing strings by hand every day? I sure hope not!

Re:Microsoft changed how it interviews software developers by solveit on Sunday December 30, 2018 @08:32PM (#18792473)
I mean, people shouldn't be reversing strings by hand, but being unable to do so is also very worrying. Not because manual string reversal is an everyday problem, but because you need to do similarly complicated things all the time. In fact, you need to do them even if you're not a dev, it's just that devs share a common language that makes string reversal a sensible problem to ask in an interview.
Re:Microsoft changed how it interviews software developers by pytester on Sunday December 30, 2018 @09:37PM (#18792687)
>you need to do similarly complicated things all the time

My policy is to ask about those things instead. The ones you'll actually do rather than the ones that are, at best, tangentially related.

Re:Microsoft changed how it interviews software developers by recursive on Sunday December 30, 2018 @09:46PM (#18792713)
It takes a few days to explain the business rules. It's probably better to use a well understood general structure.
Re:Microsoft changed how it interviews software developers by pytester on Sunday December 30, 2018 @10:22PM (#18792814)
It isn't that hard to isolate a block of code that addresses a small cross section of your business rules and ask a candidate to do something meaningful with it.
Re:Microsoft changed how it interviews software developers by nearbuy on Monday December 31, 2018 @12:48AM (#18793248)
That could be an excellent second, more involved, question. The first, super simple 2-minute sanity check question is to reverse a string. It's literally just a reverse for loop.
Re:Microsoft changed how it interviews software developers by tome on Monday December 31, 2018 @05:42AM (#18793982)
Then the complaint will be "they gave me a question about a really specific and hard to understand part of their code. It would have been easy to solve if I had familiarity with the concepts involved. Why didn't they just ask a similarly complicated question about strings instead?"
Re:Microsoft changed how it interviews software developers by pytester on Tuesday January 01, 2019 @11:30AM (#18800784)
That would be the complaint if you didn't isolate the code and explain the task properly.

If you can't do that then you should probably worry about your own skills before testing somebody else's.

Re:Microsoft changed how it interviews software developers by recursive on Tuesday January 01, 2019 @11:33AM (#18800806)
That's not really actionable. Even if my skills aren't up to pytester's standards, we still need to recruit developers now. And for what it's worth I doubt I'll ever be able to explain most of the tasks our business is doing what you refer to as "properly".
Re:Microsoft changed how it interviews software developers by pytester on Tuesday January 01, 2019 @12:21PM (#18801086)
I joined a team two weeks ago that built a fairly complex machine learning pipeline. One week in I was told I needed to help interview a candidate.

I lopped off a block of the code, made it run without the rest of the code base and explained what it was supposed to do. This wasn't that simple, but could still be explained in about a minute to somebody with familiarity in ML (assumed; that's what we're hiring for). I then challenged the candidate to spot any bugs and implement a feature.

This really wasn't that hard. I've done the same thing twice before in two completely different industries.

Why would that be impossible for you?

Re:Microsoft changed how it interviews software developers by recursive on Wednesday January 02, 2019 @04:16PM (#18810285)
Perhaps I just don't understand what you're proposing. If it's general enough to be presentable without any domain specifics, then it seems indistinguishable from a general algorithm like reversing a string. I don't use tasks quite as simple as string reversal but not far from it.

As I read it the main observable difference between your exercise and the kind of exercise you're arguing against is that you are starting with some baseline code that the candidate is supposed to modify. That seems like a pretty good idea, but I haven't used it yet.

Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @08:20PM (#18792420)
Since you're attacking me, do you have any experience screening resumes? Phone screens? In-person interviews? Have you had the experience of a candidate that has apparently "done it all" on their resume, and confirmed their skill level when asked in-person, only to see them struggle with the simplest question in an area they deem themself an "expert" in?

I've interviewed well over 300 people, for positions from junior/entry-level to principal. If you read many of the comments to this article you'll hear other people with experience interviewing who also call out that candidates can and do lie. I don't like it, I'd rather it not be the case. I constrain the majority of my questioning to what a candidate claims to know on their resume. Here's a tip... If you don't know it (and I'm not talking about bullshit trivia questions), then don't put it on your resume.

Re:Microsoft changed how it interviews software developers by a-dub on Sunday December 30, 2018 @09:26PM (#18792651)
Yup... and I don't know, for someone who has "300 people" worth of interview experience, you sure don't seem to be demonstrating in this thread the sort of level headed temperance and soft skills I would expect.

I'm joking. (sorta)

I'm glad to hear that you tailor to the resume, that's actually better than most and my favorite approach.

But if I had a dollar for every time someone walked out of an interview with a braggadocious claim like "they couldn't even do X, they must be lying" but then answer "no" to "did you ask them anything else?". I'd be rich.

Reversing a string is a bad example, it is dead easy. But it seems a lot of people have random substitutions for it of varying obscurity and difficulty.

Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @09:42PM (#18792702)
My interview covers coding, data structures, algorithms, system design and data modeling. I attempt to tailor to the candidate, but there needs to be some level of standardization to be able to justify to the recruiters why a candidate didn't proceed.

Just because a candidate fails or falls short in one area doesn't mean they are cut, but it's a pretty large red flag if a candidate purports to know something, both on their resume and in person, yet can't answer some seemingly basic questions. If you state on your resume that you architected and implemented a system end to end, yet can't whiteboard the result and explain bottlenecks or failure conditions, I absolutely will assume you stretched the truth a bit. And if the candidate feels the need to do that to get the job, what will it be like to work with them? Could you trust their estimates? Would you be able to back them if something they delivered fails and you trusted them as a senior to deliver?

I ask follow-ups. I give hints. Honestly I'm dismayed at the skillset of purported "seniors" and "architects", and that's interviewing for small companies up to one of the FAANGs.

Re:Microsoft changed how it interviews software developers by dave1999x on Monday December 31, 2018 @10:50AM (#18795012)
I've never counted but I must have done way more than 300 interviews. I have interviewed at 3/5 of the FAANG.

Coding: on a whiteboard or with someone watching over you has no correlation with performance on the job.

Data structures: questions usually end up so contrite that they have no bearing to real-world situations. That or based on luck of seeing an remembering the right one. Data structures usually go hand in hand with algorithms.

Algorithms: questions become more like trivia or reinventing something that has likely got research papers on it. Oh, you want me to invent an algorithm I've never heard of on a whiteboard with your clues?

System design and data modelling: the kind of thing you can do in an interview lacks real-world data. No empiricism. It's all about the trade-offs.

Tailoring to the candidate introduces inconsistency and unfairness/luck.

What if these "seniors" and "architects" are frauds?! How else could they hold down a job for 20 years and not be able to answer my questions? They must be really bad!

Lucky my interview process is really great and I always hire the good ones. I track every rejection and I have proof that they never amount to anything!

Re:Microsoft changed how it interviews software developers by indymike on Monday December 31, 2018 @09:11AM (#18794532)
Do you allow candidates to use their normal workflow (which is dependent on access to Google, github and q&a sites) or are we putting people in an idealized workflow where the dev has to know everything? I think many developers and interviewers think using Google and StackOverflow is a sign of weakness. It may or may not be, but it is normal in many developers workflows.

Thoughts?

Re:Microsoft changed how it interviews software developers by kronin on Monday December 31, 2018 @09:29AM (#18794605)
I tell the candidates that I will happily be their Google/stack overflow. Some candidates ask questions along that line, some don't.

I agree that we don't code in a vacuum. What I'm trying to ascertain in the interview is how someone thinks, how they approach a problem and work through the solution. The more they communicate the better, even if part of that communication is "is there a length property on the String class?"

I note, but don't give it too much weight, if there are minor syntax errors. I ask candidates to walk through their code with an example input, especially the ones that have errors. If they catch their errors and fix them, I note that. If they skip over their errors because they assume the code does what they wanted it to, I note that.

Ultimately, can you reason through the problem, come up with a solution, and talk about the tradeoffs you made in your implementation. Any senior should be able to handle that without any preparation.

I worked at a FAANG where in several loop debriefs I was challenged on the complexity of my question. One of the challengers asks a chutes and ladders question (given a random chutes and ladders board, where you can choose between 1-6 for every move, what is the minimum number of moves to get to the end).

It doesn't take a hard technical question to figure out whether someone knows how to think and work through problems.

Re:Microsoft changed how it interviews software developers by travisoneill1 on Sunday December 30, 2018 @08:27PM (#18792457)
If you cant quickly write a function that reverses a string you either don't know the language at all or you can't solve simple problems. So either a liar or a completely incompetent engineer is a safe bet.
Re:Microsoft changed how it interviews software developers by BurningFrog on Sunday December 30, 2018 @11:15PM (#18792975)
If you're crap at interviewing, you're just not going to do well at interviews.

That's unfortunate, but logically inescapable.

Re:Microsoft changed how it interviews software developers by rwmj on Monday December 31, 2018 @06:31AM (#18794097)
Back when I worked in an office and conducted interviews, I made a point of always having the candidate sit in front of a computer and solve some very simple problems. It's amazing the number of candidates with apparently strong CVs who simply did not know how to use a computer. I mean, people claiming Linux experience who didn't know how to type commands at the prompt, not even "ls". How were they expecting to get a Linux developer role?? Unfortunately you have to weed these people out, and this was the only way I found.
Re:Microsoft changed how it interviews software developers by h1d on Sunday December 30, 2018 @08:59PM (#18792556)
Handling their mental stability should be part of their skill. "Having a bad day" on a scheduled day sounds like almost bad management of ones self.
Re:Microsoft changed how it interviews software developers by sgustard on Monday December 31, 2018 @02:53AM (#18793573)
As a hiring manager, I agree 100%. These people are everywhere. I've also given someone the benefit of the doubt -- he wrote a Java book! once we hire him, I'm sure it will work out -- only to find, nope, he can't code on the job either.

Other hand, I'd suggest instead of "lying" that people are just myopic about their skill sets. I'd been writing JavaScript code for years, for example, but on an interview learned about a whole world of "modern" JavaScript that I didn't know existed. Clearly they thought I was a fraud. But I'd just been living on the 3rd floor without ever visiting the basement where all the pipes and boilers were.

Re:Microsoft changed how it interviews software developers by 0x445442 on Sunday December 30, 2018 @06:52PM (#18792060)
> Couldn't code a simple reverse string algorithm

You were interviewing senior engineers with Java experience and they couldn't come up with Assert.assertEquals("radar",StringUtils.reverse("radar"));

I suspect you were actually looking for the implementation of StringUtils.reverse() and if that's the case then you were focused on the wrong skills.

Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @06:58PM (#18792085)
It's the start of the coding interview. It moves on from there. This candidate didn't even ask if he could use Apache commons, and I hadn't yet specified that he couldn't use a 3rd party library. So yes. He failed on many counts.

1) not asking clarifying questions 2) not being familiar with some well-known libraries 3) not being able to implement a basic reverse string 4) not being able to explain whether or not a simple method was thread safe (with multi-threading experience all over his resume)

I expect engineers, senior or otherwise, to be able to write code. If you can't do that, don't put it on your resume.

If you honestly think implementing a reverse string method is "too complicated"...

Edit: sorry, leaving the response as-is, but I recognize you didn't state "too complicated". You stated "focused on the wrong skills". I posit that an engineer that can't reverse a string, as a litmus test, will be likely unable to solve a more complicated problem.

Re:Microsoft changed how it interviews software developers by kstenerud on Sunday December 30, 2018 @11:49PM (#18793074)
Just speaking to points 1 and 2:

In an interview, there is an unspoken assumption that you won't be using third party libraries to implement algorithms, and certainly not a third party library that implements it in one function call. Using that as a red flag will yield a LOT of false positives.

Also, I have over 10 years experience in Java, have used Apache commons extensively, and had no idea that a string reversal method even existed. You can't use that knowledge to judge anything useful.

Re:Microsoft changed how it interviews software developers by kronin on Monday December 31, 2018 @12:23AM (#18793175)
I agree about your unspoken assumption, but many interviewees ask. And the post I was responding to pointed to the Apache commons library, so I hazard to say it's not universally known.

A fail is not a red flag. A senior candidate not asking clarifying questions does not disqualify them (what I would call a red flag) but it is brought up in the debrief as a potential gap. I don't expect them to state this could be implemented using a single call to Apache commons. I call those candidates out in the debrief as being aware of the library, as a bonus. But not saying it isn't a negative.

Re:Microsoft changed how it interviews software developers by 0x445442 on Sunday December 30, 2018 @07:36PM (#18792217)
If you're interviewing for some core, low level algorithm development then fair enough but I suspect if that's the case you could come up with something a little closer to the real life domain.

It's not that I think the question is too complicated, just not the best marker.

In my mind, more relevant questions are ones that demonstrate real life experience in the field. For example, populating a tree of objects in a high level language like Java from a DB where the tree of objects are stored as many to many relationships. You'd be surprised how many times I've run across production code which does this via SQL calls inside nested loops.

This whole infatuation with algorithm questions like you'd find in SICP might be good for new grads but misses the mark for Senior level engineers.

Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @07:43PM (#18792246)
I asked a candidate to implement an algorithm that reverses a string. I don't see that as a complicated problem. It's literally a for loop, and based on how they choose to implement it you can ask about implications of append vs. prepend, etc.

I didn't ask them to implement dijkstra's algorithm, or even something as "hard" as breadth-first or depth-first search (which I feel any senior that deals with trees should be able to do).

It's a marker of this... Can the candidate solve a basic problem? Once they solve it, can they explain their solution? Do they understand the memory/time tradeoffs they chose? Do they know whether the code they wrote is thread-safe? If you don't feel a senior engineer should be able to answer those questions, to a very basic problem, how do you expect them to tackle something more complex?

Re:Microsoft changed how it interviews software developers by dave1999x on Monday December 31, 2018 @10:54AM (#18795036)
Did you know in .Net strings are immutable? Neither did the guy at Google when he asked me to do some "in place" string fiddling algorithm or that guy at Amazon who wanted to reverse the strings in a sentence (yes there's a trick to that one found in some 80s programming book)
Re:Microsoft changed how it interviews software developers by 0x445442 on Sunday December 30, 2018 @09:01PM (#18792564)
What I'm interested in from a senior engineer is how many systems they've designed, implemented, deployed to production and supported in their careers and what their specific roles were in those projects. If I can't get an idea from their resume I wouldn't contact them for an interview.

As for the interview itself, well I've never needed to ask someone to reverse a string to determine if they're going to be of value with the criteria mentioned above.

But to be fair I've never worked on a project where implementing StringUtils.reverse() was required. If I were interviewing someone to work on Apache Commons or the JDK then I suppose that would be a relevant question.

Re:Microsoft changed how it interviews software developers by jodrellblank on Monday December 31, 2018 @02:22AM (#18793499)
Oh come on, argue the strongest part of their argument, would you, instead of nitpicking over string reverse. They've repeatedly, laboriously, explained that reversing a string isn't the relevant part to be focusing on.

What I'm interested in from a senior engineer is how many systems they've designed, implemented, deployed to production and supported in their careers and what their specific roles were in those projects. If I can't get an idea from their resume I wouldn't contact them for an interview.

And when their resume looks good and claims they are an expert, and you call them in and talk to them and they say they are an expert, and you start by opening a warmup question on the most basic levels of their expertise and they totally flunk it on multiple levels - unable to even handle the situation with tact or diplomacy in any way, are you still going to trust what they say about the systems they've "deployed and supported"?

Re:Microsoft changed how it interviews software developers by baursak on Sunday December 30, 2018 @08:16PM (#18792399)
How many times in your job did you have to implement reversing a string without calling a library?
Re:Microsoft changed how it interviews software developers by throwawaymath on Sunday December 30, 2018 @09:11PM (#18792594)
I understand the class of rebuttal you're invoking here, but reversing a string is extremely easy - with or without a library. This is not an academic problem designed to see if a person can study prior to an interview. This is a first pass question designed to see if a person is even acquainted with basic programming. Any such question you could devise would be similarly patronizing or orthogonal to the exact work done on the job.

And yet, despite how easy the question is people still fail it. It's frankly absurd to me that a senior software engineer can fail this question. It's practically a freebie slam dunk for anyone with basic competency. Briefly drop that you can use your language's core function or method to do it. Then declare a new array and iterate through the string backwards, appending each character to the new array. When you're done, collapse the array to a string.

In other words, it's testing if you can write a for loop. How many times in your job do you expect to implement a for loop? I use for loops quite often.

Re:Microsoft changed how it interviews software developers by jen20 on Monday December 31, 2018 @02:54AM (#18793575)
> iterate through the string backwards

What about multi-byte characters?

Re:Microsoft changed how it interviews software developers by zbentley on Monday December 31, 2018 @08:50AM (#18794457)
That would be an excellent question to ask during an interview.

If you were interviewing with me, I'd ask you to do the (usually expected) ASCII/array-of-graphemes version first. If you did that, you'd pass, and get a positive shout-out in the feedback session for asking about multibyte chars.

If you, after solving the array-based form, had some ideas or even working code for how to handle multibyte characters directly, without falling back to the standard library of $language's idea of "what is an iterable character-equivalent unit in a string", and demonstrated similar insight in your other interview problems, I'd give a positive shout-out with the addendum that we might be interviewing you for the wrong (too junior) position.

In my experience, most people don't ask about multibyte chars. That's fine, if they solve the problem. It's not a positive or negative. If an interviewer is building questions with hidden "must-ask" gotchas like that, I think they're doing themselves and their candidates a disservice.

Something interesting does happen occasionally when candidates do ask about byte-width (or equivalent less-common but still very important gotchas like pointer/word size, endianness, etc. in relevant problems): some people ask the question, solve the naïve form of the problem, and then offer some thoughts as to how they'd handle the broader multibyte case. But some other people act as if knowing that gotcha means they won't or shouldn't have to continue solving the problem. I've had candidates tell me that they "figured it out" and wanted to go on to the next challenge at that point, without writing a line of code. I've had candidates tell me flat out that writing non-Unicode aware string processing algorithms was unrealistic and a waste of time, and that they wanted a problem that was more real-world or suited to their level of skill. Those things will also get you a shout-out in the interview review session, but not the good kind.

Re:Microsoft changed how it interviews software developers by kamaal on Monday December 31, 2018 @04:16AM (#18793769)
>>Then declare a new array and iterate through the string backwards, appending each character to the new array. When you're done, collapse the array to a string.

a. You can't iterate a 'String' backwards. You need to know the length first. And that requires traversing the string forwards at least once.

b. Once you reach the end you are wasting the effort of revisiting the elements, since you visited them already once.

c. A better option is build a build a double linked list, as you are traversing the list forward.

d. Once you have the double linked list ready, you have pointers to both start and end, and you traverse the way you like.

e. An even better way would be to design a data structure that contains all this meta data at String creation itself.

    Class CustomString {
        char* headPointer;
        char* tailPointer;
        int length;
        bool isPalindrome;
        char* string;
        /* Add your interview acrobatic things here */
    }
Stuff like this.

Now even though the answer in your comment is correct, they could reject you for not coming up with the answers I gave from point a through e above.

Now imagine some one telling you that, on these grounds, you don't know a semicolon worth programming and are probably a liar.

I hope you understand what's going on here. Every body can be rejected if they don't cut through your cookie cutter.

Re:Microsoft changed how it interviews software developers by zbentley on Monday December 31, 2018 @08:56AM (#18794479)
> a. You can't iterate a 'String' backwards. You need to know the length first. And that requires traversing the string forwards at least once.

That's not at all true in many languages. If a candidate asked "is this string's length known without an O(N) operation on the number of characters in it?" (or knew the answer for the default string constructs in the language they were using for the problem) I'd consider that a positive indicator. If they said what you just said, without consideration for the context, I'd consider that a negative.

This is not a case of someone expecting a given "cookie cutter" solution. Interviewers who do that are doing themselves and their candidates a disservice. This is a case where statements like "I know how strings work because I know how they work in $context" where $context is not what the interview expects you to work in will make a bad impression.

[dead]
Re:Microsoft changed how it interviews software developers by dang on Tuesday January 01, 2019 @02:39PM (#18801814)
Please don't post like this here.

https://news.ycombinator.com/newsguidelines.html

Re:Microsoft changed how it interviews software developers by tome on Monday December 31, 2018 @05:47AM (#18793998)
It was supposed to be in Java.
Re:Microsoft changed how it interviews software developers by akiselev on Sunday December 30, 2018 @08:37PM (#18792490)
I mean, in languages like Python it can be as simple as `foo[::-1]` or some similar method. Anyone who can give a naive answer like that or

    usize len = strlen(foo);
    char* bar = malloc(len);
    for (int i = 0; i < len; i++) {
        bar[i] = foo[len - (i + 1)];
    }
and explain why that won't work for unicode strings, I imagine, would pass that particular fizzbuzz test. Bonus points for pointing out the null byte off by one error.

The only competent programmers I can think of that wouldn't be able to come up with that off the top off my head work in embedded or FPGAs where strings are rarely relevant.

Re:Microsoft changed how it interviews software developers by sgustard on Monday December 31, 2018 @02:59AM (#18793586)
Can you traverse an array? Do you know that a string is an array? Do you know how the end or length of a string is represented in your language of choise? Do you know how each character is represented? Do you understand Unicode? Do you understand memory allocation? Is the string being reversed in place or you allocating a new string? What are the space and performance trade-offs between those approaches? I mean, you can fill a whole interview with just this topic. So yes if your answer is string.reverse() then expect some follow-up questions.
Re:Microsoft changed how it interviews software developers by cwyers on Monday December 31, 2018 @01:52AM (#18793428)
So, I agree you want to see evidence of what's on the resume. But why isn't an actual work project of some sort better than whiteboard coding exercises?
Re:Microsoft changed how it interviews software developers by borgfriend on Sunday December 30, 2018 @07:11PM (#18792136)
Why do you assume that the person is lying? Why do you start your relationship with your new co-worker on distrust? There is a way to weed out the liars - you hire them and then when it does not work out you fire them. You would be astonished how little people lie on their CV.

They may exaggerate claims - yes, that is why you gave them a call in the first place. But then again you exaggerated your claims in the job posting of which skills are required for the job.

The one thing that I noticed is that only the US companies have this awkward parallel reality 'technical-interview' hiring process. In other countries like Germany or France the interview process is mostly focused on the person and the desire to work for the company and the willingness to learn the skills needed for the job. Just because you fail to answer immediately to a random question it does not mean you are unqualified for the job.

When I conduct an interview I try to only ask open questions like: * What is your favorite IDE? - Whatever the person answers, tells a lot about how he works, what tools he uses, and if he is aware of the common tools * What feature of the new Version of <Programming Language> do you like the most? - A) you may learn about some weird feature, b) you can discuss how that feature will improve code * Do you prefer JavaScript or TypeScript (dynamic vs typed language)?

There is no right answer. It is all about how the candidate argues his answer. You learn more about the person and if you can deal with him on a day to day basis (and if he has the brains to think about things).

Re:Microsoft changed how it interviews software developers by kronin on Sunday December 30, 2018 @10:00PM (#18792755)
> There is a way to weed out the liars - you hire them and then when it does not work out you fire them.

In my experience, firing someone takes multiple months. Months in which they are mutating the codebase (with review, but it's a time sink that shouldn't exist for a decent senior), influencing other engineers, etc.

Passing on a good candidate is cheaper in the long run than hiring a bad candidate. Or said another way, false negatives are preferred over false positives.

> You would be astonished how little people lie on their CV.

This has not been my experience. From something as white-lieish as "I designed and implemented" vs. "I was a peer on the team that did it" to flat out fabrications. You learn alot by simply asking "what was your role on the project" and asking follow-ups to dig into their contributions.

Re:Microsoft changed how it interviews software developers by C1sc0cat on Monday December 31, 2018 @07:14AM (#18794184)
I am assuming the you mean the USA I would suspect not months in the case on NCI Non Culpable Incompetence.

Don't most companies have a probation period these days.

Re:Microsoft changed how it interviews software developers by yks on Sunday December 30, 2018 @07:30PM (#18792198)
> Why do you assume that the person is lying?

There was a blog post "Adventure in the Low Status of Software Engineers" by Michael Church (apparently taken down now), basically if you're interviewing for "low status" positions you're assumed to be a fraud but for "high status" positions (VP-level) you're assumed to be a great candidate even if your resumes are almost identical in both cases.

Re:Microsoft changed how it interviews software developers by JaRail on Monday December 31, 2018 @12:33AM (#18793213)
I think you're ignoring that hiring someone onto your team takes a long time and significant effort. Say you're allowed to add one person to your team. You interview 50 people and decide on the best candidate. Then you spend the next 6-months waiting on lawyers, processing visas, moving their them and their family to the US, paying for their initial housing, etc. Might not be an issue for a small company in France that hires locals but it sure is for big companies in the US.
Re:Microsoft changed how it interviews software developers by C1sc0cat on Monday December 31, 2018 @07:16AM (#18794188)
You should have a short list of only two or three you actually interview
Re:Microsoft changed how it interviews software developers by BurningFrog on Sunday December 30, 2018 @11:32PM (#18793025)
> You would be astonished how little people lie on their CV.

That is no doubt your experience, but I assure you it is not universal. I have heard, and in some cases personally seen, some truly shocking things!

> In other countries like Germany or France...

Perhaps the gold digging nature of Silicon Valley entices far more scammers to cook up a SWE resume and roll the dice, but I think it's a very different hiring world here.