Slashdot Mirror


Programmers Are Confessing Their Coding Sins To Protest a Broken Job Interview Process (theoutline.com)

A number of programmers have taken it to Twitter to bring it to everyone's, but particularly recruiter's, attention about the grueling interview process in their field that relies heavily on technical questions. David Heinemeier Hansson, a well-known programmer and the creator of the popular Ruby on Rails coding framework, started it when he tweeted, "Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles." Another coder added, "Hello, my name is Tim. I'm a lead at Google with over 30 years coding experience and I need to look up how to get length of a python string." Another coder chimed in, "Hello my name is Mike, I'm a GDE and lead at NY Times, I don't know what np complete means. Should I?" A feature story on The Outline adds: This interview style, widely used by major tech companies including Google and Amazon, typically pits candidates against a whiteboard without access to reference material -- a scenario working programmers say is demoralizing and an unrealistic test of actual ability. People spend weeks preparing for this process, afraid that the interviewer will quiz them on the one obscure algorithm they haven't studied. "A cottage industry has emerged that reminds us uncomfortably of SAT prep," Karla Monterroso, VP of programs for Code2040, an organization for black and Latino techies, wrote in a critique of the whiteboard interview. [...] This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn't help diversify the field with women, older people, and people of color.

629 of 1,001 comments (clear)

  1. Perhaps a better method... by johnsmithperson123 · · Score: 5, Interesting

    Would be a trial (as in free trial). Throw a fairly standard problem at them, but not one with a simple, common place implementation. Drop them at a computer with internet access, give them a couple hours, and see what they have at the end of it. It's not perfect, but it's probably a better way to evaluate skills.

    1. Re:Perhaps a better method... by Calydor · · Score: 3, Insightful

      And obviously watch HOW they get to their solution, ie. not by connecting to a chatroom where they have a bunch of friends waiting to help out. Looking up snippets, checking parameters and syntax etc. would obviously be fine, that's what you'll be doing in daily work anyway.

      --
      -=This sig has nothing to do with my comment. Move along now=-
    2. Re:Perhaps a better method... by theArtificial · · Score: 1

      Are you mad? What are you trying to do, employ people who have an interest in the job?

      --
      Man blir trött av att gå och göra ingenting.
    3. Re:Perhaps a better method... by Anonymous Coward · · Score: 3, Interesting

      Would be a trial (as in free trial). Throw a fairly standard problem at them, but not one with a simple, common place implementation. Drop them at a computer with internet access, give them a couple hours, and see what they have at the end of it.

      It's not perfect, but it's probably a better way to evaluate skills.

      We give potential applicants a take home programming problem and ask them to send us the result a couple of days later. We then quiz them on their work to make sure they did not get someone else to do it.

    4. Re:Perhaps a better method... by JoeMerchant · · Score: 4, Interesting

      I've seen interviewers (one "remote work" from the Philippines comes to mind in particular) use this technique to get free work: dangle a job offer, present a thorny, nigh intractable, problem as the "interview process," get applicants to submit various solution approaches and even complete solutions - choose the best, use it yourself - never hire anyone.

    5. Re:Perhaps a better method... by JoeMerchant · · Score: 5, Insightful

      If the "friends" are always available and willing to help, then I don't care - use them, get paid.

      There's an incredible resource of programming advice available through Google and the various help boards - being able to effectively leverage that resource is a skill far beyond the value of solving obscure statistical riddles about colored marbles in jars.

    6. Re:Perhaps a better method... by beelsebob · · Score: 4, Informative

      Honestly, I see all of the complaints above as whines by people who don't understand what a whiteboard interview is.

      * If I ask you to write a sorting algorithm on a white board, I am not asking you to by rote copy out a bubble sort - in fact, if you do it by rote, I'm likely to go "oh, well that was uninformative, he didn't solve any problems, he just copied something out" (and that's why I'm unlikely to ask you to sort things, but instead, something more obscure)
      * If you "don't do riddles" then I actively don't want to hire you - the entire purpose of a software engineer (i.e. not a flunky programmer) is to do riddles, all day, every day. If you don't want to do that, you don't want to do the job I'm interviewing you for.
      * If you need to look up how to find the length of a string in python, I don't give any shits. I don't care if you write x.length(), x.size(), x.count, length(x), I'm asking for you to solve a problem, not get the code in the exact shape it'll compile in.
      * If you don't know what NP complete means, I don't care. Of course I'm going to probe a bit into whether you can analyse the performance of your code - that's absolutely part of the job, and something I need to know you can do. But not knowing what one term means is not going to not get you hired.

      Long story short - don't assume that everything in a whiteboard interview should be taken literally. I don't want to find out if you can write exact algorithm x perfectly so that it will compile. I want to know if you can solve a problem, and can talk rationally about your solution, its trade offs, its performance, etc.

    7. Re:Perhaps a better method... by JoeMerchant · · Score: 1

      Would be a trial (as in free trial). Throw a fairly standard problem at them, but not one with a simple, common place implementation. Drop them at a computer with internet access, give them a couple hours, and see what they have at the end of it.

      It's not perfect, but it's probably a better way to evaluate skills.

      We give potential applicants a take home programming problem and ask them to send us the result a couple of days later. We then quiz them on their work to make sure they did not get someone else to do it.

      Nice thought, the quiz for authenticity can be tricky. I've typically used an easy problem as a screener and then those who pass the easy problem remotely can come in and do a live performance solving a harder related problem.

    8. Re:Perhaps a better method... by computational+super · · Score: 1, Interesting

      I'm with you. I've never understood why so many programmers are so offended at being asked relatively straightforward questions. I think that the people who don't do well in those types of interviews would be better off in technical liaison roles like project, project or release management rather than hands-on coding.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    9. Re:Perhaps a better method... by infolation · · Score: 5, Interesting

      USA Airport Immigration has recently started putting programming questions to travellers who claim to be software engineers. In one case they asked the traveller Python questions.

      (Not to be confused with the Monty Python questions the UK immigration authorities ask.)

    10. Re:Perhaps a better method... by OhPlz · · Score: 3, Interesting

      You ask people to do work for your company and don't compensate them for it?

    11. Re:Perhaps a better method... by jordanjay29 · · Score: 4, Insightful

      So make the expectations clear. Isn't that what you would do for an employee on a daily basis? Stacking the deck against the candidate by asking an academic-style question and not expecting an academic-style answer is a poor method for getting a good result. Just be open in the interview by stating up front that you're not looking for A-grade answers or code that necessarily compiles perfectly, but conceptual understanding and to see a candidate's coding process.

      Maybe you already do that, but hopefully others who don't will start so the interview process can become a more useful measure.

    12. Re:Perhaps a better method... by beelsebob · · Score: 2

      Maybe I've been lucky. I've never ever ever been to one of these white board coding interviews where someone has not made it clear that what they're after is seeing how you work, not perfect code written on a whiteboard.

    13. Re:Perhaps a better method... by Qzukk · · Score: 2

      That was my very first job interview out of college. They sat me down with emacs and a screen recorder and asked me to write, compile and test several basic programs while they were talking to the next prospect. Very relaxed process, I liked it, but they decided I wasn't a good fit for the job .

      My next job interview was with a company that asked me to implement a binary tree class. There was no whiteboard, no computer, no paper. I had to recite to them verbally the class with methods for adding, removing and searching. All I could think of is how fucked this was.

      The job I ended up with went the regular whiteboard route and asked some stuff that was basically specified implementation problems like fizzbuzz rather than quizzes over how lempel-ziv or red-black trees work.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    14. Re:Perhaps a better method... by squiggleslash · · Score: 2

      "Hmm, he spent an hour and 55 minutes on Faceplace, then googled for the solution, and this result is apparently cut and pasted from stackoverflow. Well, I guess he's no worse than anyone else we've hired."

      --
      You are not alone. This is not normal. None of this is normal.
    15. Re:Perhaps a better method... by IRGlover · · Score: 1

      Just come back from a visit to the US and wasn't asked anything at immigration in Houston - just completed an onscreen immigration form, fingerprints and photo and then waved through. Don't remember even speaking to anyone, if I did it was just to confirm that I wasn't there on business. Same lack of questioning for the flight home to the UK from JFK.

      A few years ago in San Francisco, I had a nice chat about the relative merits of England and the USA in the World Cup that was about to start, and a couple of years later a more standoffish conversation at Chicago about why I was going to Seattle (he seemed not to have heard about Grunge). It has been standard practice for a long time to ask questions to see if people seem legitimate, it's just that when it is done well it comes across as just having a pleasant conversation.

    16. Re:Perhaps a better method... by jordanjay29 · · Score: 1

      Considering the myriad of tech companies out there, this is entirely possible.

    17. Re:Perhaps a better method... by alvinrod · · Score: 5, Interesting

      If you're basing hiring on whether or not someone gets the correct answer to a statistics problem, you're probably hiring wrong. Instead, if you're using it to evaluate how a person approaches solving a problem, what steps they take, how they go about verifying if their solution is correct, what questions they ask about the problem, etc. then the problem itself really doesn't matter. In fact, it would be better to give them something impossible just so you get the added kicker of seeing how they react to that because management will sure as shit ask for impossible things from time to time.

      Hell, you could even give them a computer to see how they search for information. If I'm really stuck on something, after five minutes I start searching online as a rule because occasionally the solution requires some obscure piece of information only found in the errata or there's a bug that hasn't been patched yet and there's no point banging my head against the wall if someone else has already done that. Someone who has good Google-fu and can quickly find the information they need may well be more valuable than someone who could eventually work through the problem on their own, but only after spending 3 hours on what could have been solved in 3 seconds.

      I'd be a little leery of someone who always needs friends, because if they aren't available they might make new friends at work and then you've got someone who's eating up other developers time and hurting their productivity. However, interview processes shouldn't be about knowing answers to esoteric or eclectic problems, but rather making sure the individual has a healthy approach to solving problems, because that's what you're paying them to do. If the code is really boiler plate, you can probably just get a machine to generate it.

    18. Re:Perhaps a better method... by OhPlz · · Score: 2

      It doesn't matter if it goes into a product or not. You're employing the candidate by having them complete a software project.

    19. Re:Perhaps a better method... by markus · · Score: 3, Informative

      I would vote you up, if I had moderator points today.

      I am in full agreement. Whiteboard tests are very informative and they often are the easiest part of any interview. I usually ask candidates a problem that they can demonstrate with pencil-and-paper or with everyday objects. Yes, this could be a sorting problem, or it could be a simplified subset of long-hand multiplication, or it could be a resource pooling problem, ... . It's things that they intuitively understand how to do in the real world, and I want to see if they can transfer this simple task to something that remotely looks like working code. If they remember the basic tools and concepts of what they learned in their first semester, that certainly helps (and I am worried, if they don't remember that much), but I agree with you that rote memorization doesn't give me any useful insights. And yes, I fully expect that this is a dialog and I'll have to keep dropping hints and answer questions as we go. That's actually another thing I test for. Asking for help is good.

      Same as you, I don't care about correct use of the API or of the language's syntax. Heck, I have accepted pseudo code, and I have accepted code where somebody wrote C and Java simultaneously -- with a little bit of Ruby sprinkled in for good measure.

      I do expect though that candidates have a solid sense of the scale of their problem. They have to be able to explain how many resources they need and how performance goes up when there are millions, billions or even more data sets or users. This might not be needed for every job opening, but in this day and age it is needed for many -- including the ones that I do interviews for. In other words, I expect a high-level understanding of algorithms, of CS theory (e.g. big-O behavior), and of fundamental engineering concepts (e.g. estimate latency of operations, estimate caching performance, ...).

      These are things we actually need for a candidate to be successful in their work. And there are literally thousands of candidates applying for each job. It only makes sense to sort through them and find the candidates who can do the work.

    20. Re:Perhaps a better method... by naubol · · Score: 2

      It doesn't matter if it goes into a product or not. You're employing the candidate by having them complete a software project.

      Oh, please.

      --
      Reality is a slackware box running on a 386 tucked away in god's sock drawer.
    21. Re:Perhaps a better method... by 4wdloop · · Score: 2

      Indeed, out of ~10 companies I interviewed last year (among FitBits, SkyCatch and other) - there was only one that did "open laptop" interview: LeapMotion.

      They asked if I use Windows or Mac or Linux, than offered a laptop with opposite to my answer. They gave me a task opposite to my day experience (using different build system) than asked to create a shareable library project. I could use whatever I want - rip the code out of GitHub, use google etc. 10min later after I solved it they were happy and I was too. It was the most fun to do interview. Great startup!

      --
      4wdloop
    22. Re:Perhaps a better method... by micahraleigh · · Score: 1

      Usually people don't seem to finish these things. They tend to be a lot of work for "maybe" a job offer.

    23. Re:Perhaps a better method... by presidenteloco · · Score: 1

      What you're missing is that that's the smartest way to do it.

      You get a snippet of code (from stackoverflow) which has probably been tested to solve the problem; an assumption probabilistically justified by noting that other commenters on stackoverflow would probably have corrected the answer if it didn't work for them when they tried it, or if they knew it was wrong by inspection or experience. Also, many programmers would be embarrassed to submit an untested snippet to stackoverflow, lest they be called an idiot.

      Contrast that probable reliability of snippet with the crap completely untested piece of coding you just came up with under bizarre amounts of pressure in a whiteboard session in an interview. I'll take the stackoverflow code thanks very much.

      --

      Where are we going and why are we in a handbasket?
    24. Re:Perhaps a better method... by networkBoy · · Score: 1

      My interviews are generally as follows (this is for a testing role where they are expected to understand and be able to code, but not be a rockstar developer):

      * get to know you, see if you would gel with the team (because if the team hates you and you hate the team, we're not going to waste anyone's time)
      * simple coding problem (why doesn't this work):

      use strict;
      print "this is the header of the output\n";
      for (my $i=0;$i>30;$i++){
      print "mod5: " . $i%5 . "\n";
      }
      print "where are the entries?\n";

      It's crazy simple. It's also amazing how many people get tripped up on it.

      * some harder questions about "how would you" and not dumbassed (for our work needs) determine the number of piano tuners in seattle questions, but rather "handle conflicting priorities, that you know are both critical, and you don't have enough time to finish in time."
      "handle a hostile customer in the lab" (and we let their imagination run with what we mean)

      It's all about how they think.

      As to the "implement a bubblesort on the whiteboard" I have had these kinds of interviews and have always passed them with:
      "I'll do it if you want, but I'll certainly make at least one error. In real life I would #include "sortLib" and be done with it, and I know where to look for the answers to nearly all problems in code structure I am likely to face; including asking Sr devs if needed.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    25. Re:Perhaps a better method... by jbolden · · Score: 1

      Yep same page. I hire much the same way.

      1) Questions to determine depth in fields of expertise.
      2) White board. Can the developer think algorithmically?How knowledgeable are they about computer science? And finally how fast are they.

      Does a good job of getting the developers I want. Everyone can google.

    26. Re:Perhaps a better method... by PRMan · · Score: 1

      And there are literally thousands of candidates applying for each job.

      Where? We're lucky to get 2-3 over a span of months...

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    27. Re:Perhaps a better method... by ghoul · · Score: 3, Insightful

      The point of having someone solve it without net resources is that when they are working they will run into problems where the answer is not on Stackoverflow and you need to be able to solve from first principles. Obviously as these are future problems you are going to run into you dont have one ready to use as the screening question in an interview and even if you did have a current problem (say from your current project) most such problems are non trivial and cannot be solved in the 1 hour available for a tech interview plus even if they solve it you dont have a way of knowing if they solved it right.

      The point of going with a well known problem solution is that you are checking their way of solving problems. If they can come up with one of the standard solutions the library designers have already come up with you can have some confidence they will be able to come up with solutions to unknown problems they will face in the future. And by using something as simple as bubblesort you can have the coding exercise done in 10-15 minutes and spend the rest of the hour on other types of questions to check fit and attitude.

      --
      **Life is too short to be serious**
    28. Re:Perhaps a better method... by ghoul · · Score: 1

      If you have friend circle who will help you out in your daily work you will probably be more productive than the guy who aces the interview on his own so I wouldnt even check for help from friends. Much better way is just do a contract to hire. Have them join as a contractor for a 3 month trial period . If they work out hire them as full time employees else move on.

      --
      **Life is too short to be serious**
    29. Re:Perhaps a better method... by Blymie · · Score: 5, Insightful

      I once had a potential employer, ask me to complete a 15 hour long coding project as part of the interview process, over a weekend. Quite frankly, I just didn't have time. I told them so, and never heard from them again. What was I supposed to do, cancel plans I made, going out of town for the weekend?

      Not to mention, I have a full-time job working 60 hours a week. I'm supposed to lose sleep, for a potential job which may never come? It was only the first interview too.

        Ridiculous.

    30. Re:Perhaps a better method... by angel'o'sphere · · Score: 3, Interesting

      Well,

      I had whiteboard interviews where the interviewer had no clue about coding, so every question regarding clarification to the task where unanswered and the interviewer even got a bad impression of my skills.

      On the other hand I get so often questions that I consider silly, and afterwards I get told I was the *only* one who answered that silly question correctly.

      Funny is it, when the interviewer after accepting my answer tells me what the others had answered.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    31. Re:Perhaps a better method... by lgw · · Score: 4, Interesting

      you "don't do riddles" then I actively don't want to hire you

      There was a famous case at Microsoft about the time they stopped doing stupid puzzles. The interviewer asked some stupid puzzle about perfectly rational pirates diving treasure. The interviewee took out his phone, call his 10-year old son, who solved the puzzle on speakerphone, then walked out of the interview.

      You may have enjoyed such puzzles as a kid yourself. Grow out of that in a professional setting. Ask something job-related. Surely you've had an interesting problem ever at your job - ask the candidate how they'd solve it.

      Same for coding problems - ground your coding problem in a scenario that might ever come up at work, and be open to outside-the-box solutions to the real-world problem that dodge the specific coding problem you had in mind.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    32. Re:Perhaps a better method... by HornWumpus · · Score: 1

      Should have said: 'It's a language, like JCL, COBOL, APL, Dataflex and Ada.'

      Compare it to other abominations.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    33. Re:Perhaps a better method... by HornWumpus · · Score: 1

      I've been given whiteboard coding problems by people who obviously couldn't code themselves. I presume they snapped a picture of the board and forwarded it to someone who could make something of it, but I wouldn't be surprised if it was just a 'stress test'.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    34. Re:Perhaps a better method... by doom · · Score: 4, Interesting

      Long story short - don't assume that everything in a whiteboard interview should be taken literally.

      But this is the old "we don't necessarily expect you to know the answer, we just want to see your mental processes as you attack the problem"-- and that's complete garbage. If the interviewer is asking you trivia that they've got memorized, they're not going to be impressed at you flailing around trying to work it out from scratch.

      Myself, I've started refusing to try to answer questions like that-- this won't get me hired, either, but I feel better for not making a fool of myself for the interviewer's amusement.

    35. Re:Perhaps a better method... by Zack63 · · Score: 1

      Hey, I found the bug!  Can I have the job?

    36. Re:Perhaps a better method... by geantvert · · Score: 1

      As far as I can tell, this code is syntactically correct (if executed by a Perl interpreter).

      Unless something goes terribly wrong with Perl, the code behavior is pretty well defined. It shall output the following 2 lines:

      > This is the header of the output
      > where are the entries?

      So the only sensible answer to the question"why doesn't this work" is "it works"

    37. Re:Perhaps a better method... by Darinbob · · Score: 1

      We tried once to have a non-whiteboard method. There are a couple web sites that let you type directly into a window in various language, compile the code and test it, and both sides cans see what happens. The candidate was a disaster though so it was hard to see how effedtive it would have been.

      The reason for the whiteboard is plain though - people exaggerate or outright lie on their resume. People that look great on paper can be completely clueless when it comes to actually programming. We don't have the time to do remedial programming classes for all new hires.

      For example, if someone's resume says they've written device drivers for 15 years and yet they don't even know how to clear a bit in a register then clearly something doesn't add up. Either they didn't really do the work they claim, or they have a different definition of device drivers, or they were merely just a part of a larger team where others did the work (this is extremely common to see on resumes). Seriously anyone bothering to spend an hour the night before cramming on how to program in C would know the answer. This is not a two hour job, this should take less than a minute!

      Programming jobs require two things: ability to program and problem solving. These can be combined by just asking a programming problem. I like to ask things outside the comfort zone and those are invariably disasters. Over time I ask things that are simpler and simpler. And they still fail. The job requires looking at low level details - we do have linked lists and on the job the candidate needs to read and understand code like this, and I still see someone complaining "I would normallly just use a library for that" as a cop-out. Sorry, we have to deal with pointers on the job, we have to deal with debugging someone else's code that uses pointers, so if candidates can't handle a freshman level linked list then I have no reason to believe that they can handle the job. This isn't a couple hour job, it should take less than ten minutes.

      Now I also like tougher questions. I wish I had time to give them, take a candidate out of the comfort zone, away from the questions you can look up online and crammed for already. Like convert from BCD to binary decimal, do a permutation, things like that. I don't need to see the correct answer but I do want to see the candidate have to think. I rarely get this far as they're still drawing diagrams of a what a linked list looks like.

      Sometimes I hand over a piece of paper with some obvious bugs (and some subtle style problems like forgetting to declare "const") and ask the candidate to tell me what's wrong, and even that sometimes doesn't quite pan out.

      As for the article summary:
      - yes, knowing np complete is important. It's not required! But it is a data point. If they know the answer it gives me confidence that they either have a broad background, remembered stuff from school, wasn't the C average student, etc. In some programming jobs knowing this stuff is nearly mandatory. It helps distinguish the generic programmer from the expert designer.
      - I have to look up how to get the length of a Python string myself. But I don't program in Python very often. I Python programming was my daily job or I was applying for a job where it would be my daily job then I *would* know how to do this without looking it up.
      - bubble sort on a white board isn't that hard. Seriously. Or at least getting something that's O(n^2) that sorts even if not strictly bubble sort. May as well call it "dumb sort".

      The realistic test of actual ability is HARDER than doing stuff on the white board. The realistic test is "there's a deadline on friday and you're fired if you can't bring up this buggy board and have it working", or "here are 20,000 lines of code that keeps crashing randomly and you have until the end of day to figure it out, and oh by the way it never fails if run in a debugger". The interview on the other hand has turned into a lot of softball questions.

    38. Re:Perhaps a better method... by x0ra · · Score: 1

      define "works" ?

    39. Re:Perhaps a better method... by DaHat · · Score: 2

      If you can simply rely on code from StackOverflow to get the job done, or just pull down a library or three and write a dozen lines of wrapping code then it's not a very well thought out problem.

      The company I work for has a rather novel way of doing this which we call a 'day of code', where a candidate is given a computer, a write up of the problem and desired solution, and a copy of our code base from a year or two ago. Along the way, the other employees are there to help/advise should things be not clear and to solve issues with the environment (which is a bit odd at first glance).

      We ask that you do frequent commits so we can see what/how you were thinking along the way when trying to get as much of a solution together during the limited time (a full day). At the end of the day you sit down with a couple of senior engineers and show off you solution, including going through each commit to describe why you did this or that, as well as be asked why you did certain things the way you did... even challenged as to if there might be another/better way.

    40. Re:Perhaps a better method... by BarbaraHudson · · Score: 1, Funny

      Yet another subscriber to the "many eyes make all bugs shallow" bullshit. If you need to look up simple stuff like how to make a custom string object or do a sort you aren't there yet. No wonder software developers are going to be replaced by AI within a decade or two - AI can probably be taught to cut and paste quicker than you can do it.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    41. Re:Perhaps a better method... by pr0fessor · · Score: 1

      I'm not a software engineer but I've had some rather poor interviewers. I've had interviews that didn't go past small talk and others that where technical tests long enough to make me think I was in college again. I've never done well on tests that ask obscure questions although tackling problems with no obvious solution is probably my favorite past time.

      if you asked me to show you how to sort something it would look like this since sort is already implemented in the standard libraries of most object oriented languages.

      sort(array);

    42. Re: Perhaps a better method... by presidenteloco · · Score: 1

      If it's all been done before, then why the hell is it being done again??????????

      "Oh yeah, sorry about that. We switched to the language-fashion of the day, so you have to re-code bubble sort".

      --

      Where are we going and why are we in a handbasket?
    43. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      And by using something as simple as bubblesort you can have the coding exercise done in 10-15 minutes

      Judging by all the "I'll just look it up" answers, you'll be there all day if you ask them to implement a bubble sort on their own. All these "cut-n-paste" coders will be replaced by AI within a decade.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    44. Re:Perhaps a better method... by jittles · · Score: 1

      Honestly, I see all of the complaints above as whines by people who don't understand what a whiteboard interview is.

      * If I ask you to write a sorting algorithm on a white board, I am not asking you to by rote copy out a bubble sort - in fact, if you do it by rote, I'm likely to go "oh, well that was uninformative, he didn't solve any problems, he just copied something out" (and that's why I'm unlikely to ask you to sort things, but instead, something more obscure) * If you "don't do riddles" then I actively don't want to hire you - the entire purpose of a software engineer (i.e. not a flunky programmer) is to do riddles, all day, every day. If you don't want to do that, you don't want to do the job I'm interviewing you for. * If you need to look up how to find the length of a string in python, I don't give any shits. I don't care if you write x.length(), x.size(), x.count, length(x), I'm asking for you to solve a problem, not get the code in the exact shape it'll compile in. * If you don't know what NP complete means, I don't care. Of course I'm going to probe a bit into whether you can analyse the performance of your code - that's absolutely part of the job, and something I need to know you can do. But not knowing what one term means is not going to not get you hired.

      Long story short - don't assume that everything in a whiteboard interview should be taken literally. I don't want to find out if you can write exact algorithm x perfectly so that it will compile. I want to know if you can solve a problem, and can talk rationally about your solution, its trade offs, its performance, etc.

      You're the exception and not the rule. I had LinkedIn pursing me for a bit. They gave me, I kid you not, a study guide of things they wanted me to memorize before the interview. It was about 4 pages long and it wasn't full topics but things like "Know O() of different sorting algorithms", etc. I responded back to the HR person at LinkedIn and told them that I have already completed school, that I have a full time job and other responsibilities, and that I had absolutely no time to study things that I can easily look up just to sit through an interview with them. Unless I am sorting millions and millions of objects, I don't give a damn what the O() of a sort is. I spend most of my time writing drivers and am more concerned about bit-wise manipulations of data than sorting large records. I know how to optimize code but I am not going to waste time pre-optimizing code that hasn't already demonstrated a performance problem. These interviews are silly, but so are the people that submit to them. I refused to play LinkedIn's game and eventually turned down an offer from them. Just be upfront about it and, hopefully, the interview culture will change for the better.

    45. Re:Perhaps a better method... by Darinbob · · Score: 1

      Agreed. I like the person who asks about the question such as asking what assumptions can be made. Often though I get excuses instead.

      I don't want to see someone who already knows the answers to esoteric problems, but I want them to know how to get to the answer on their own. For a senior position with high pay I'd rather hire the person who writes the pages that gets looked up on google rather than the person who does the looking up. You can't always get that good person though, there aren't very many of them.

    46. Re:Perhaps a better method... by AtariEric · · Score: 1

      Long story short - don't assume that everything in a whiteboard interview should be taken literally.

      Let me get this straight: You want people who deal with machines that require exacting precision in the statement of command for the machine to work at all to not take the interview literally?

      Are you out of your fscking mind?

      What kind of people do you think get attracted to computer programming in the first place? If these people were so comfortable assuming you're effectively lying during the interview, what makes you think they'd become programmers?

      Get out of the industry. I think you would be more comfortable somewhere else - and you would definitely do less damage to the industry elsewhere.

      --
      Don't trust any concentration of power.
    47. Re:Perhaps a better method... by BarbaraHudson · · Score: 3, Informative

      If it goes into a product and you haven't paid them for it or hired them, you've committed fraud. Why not just go f*ck over yet another batch of starry-eyed gullible interns.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    48. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      If it's a small task, it doesn't test sh*t. If you can't screen out people who wouldn't even pass a small task before they get through the door, fire whoever is in charge. They're doing it wrong. Also, fire the person who hired them.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    49. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      I've seen interviewers (one "remote work" from the Philippines comes to mind in particular) use this technique to get free work: dangle a job offer, present a thorny, nigh intractable, problem as the "interview process," get applicants to submit various solution approaches and even complete solutions - choose the best, use it yourself - never hire anyone.

      And then when that latent bug I left in bites you in the ass?

      Oh, you WILL be hiring me then - at MY rate.

      BWAA HAA HAA

      No - the supply of suckers is well nigh limitless. Look at all the useful fools working unpaid internships.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    50. Re:Perhaps a better method... by shaitand · · Score: 1

      "how a person approaches solving a problem, what steps they take, how they go about verifying if their solution is correct, what questions they ask about the problem, etc. then the problem itself really doesn't matter"

      The bold assumption there is that the way YOU go about this or admire is the way that is superior. The problem should be typical of the work they are being asked to do minus in house stuff and the method they use doesn't matter as long as they achieve results.

      IMHO a big part of the problem is trying to get someone who can "hit the ground running." Sorry contract runners a complex position takes 6mo-2yrs for a fully competent resource to become proficient at in your specific org. This thing where companies expect to know who is good or sucks before hiring is ridiculous and the industry practice of churning sub-ten year turnover is devastating to the industry. If you have to raise pay to get someone new, give everyone on staff a raise.

    51. Re:Perhaps a better method... by Megane · · Score: 3, Interesting

      As to the "implement a bubblesort on the whiteboard" I have had these kinds of interviews and have always passed them with: "I'll do it if you want, but I'll certainly make at least one error.

      The point of that is to see you implement a relatively simple algorithm, not for you to make something perfect. The one I got was "reverse a linked list" (along with "copy a file", which I already knew backwards and upside-down). The first thing I did was immediately assume that it wasn't too hard, and the second thing was to remember all the linked list stuff from Data Structures class in my second year of college. Later, when we finally got enough budget for me to be on the other side of the table, I was shocked at how many then recent CS grads (early 2Ks) failed at both. The EE grads did much better.

      Oh, and not only can I do a bubble sort from memory, but I know it's less inefficient if the inner loop goes downward, and once in a programming contest, I even coded a bubble sort for a singly-linked list. Ask for any more complicated short (shell sort, quick sort, etc.) and yeah, that's "look it up" time. Bubble sort is good for an interview because it's simple enough to do from memory, just two loops, a compare, and a swap, and it shows that you understand the basic concepts of sorting.

      And yeah, "estimate the number of foo" questions are super retarded. If I was asked to do one, I would say "Seriously?" and give them The Look. Because they never weren't stupid, at least for hiring developers. Riddles (like crossing a bridge that only supports so much weight) are another matter, because there's a specific answer that can be determined by elimination if you have the necessary patience.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    52. Re:Perhaps a better method... by BarbaraHudson · · Score: 2

      Arrogant prick, meet arrogant bitch. When you write "the entire purpose of a software engineer (i.e. not a flunky programmer) is to do riddles, all day, every day", you contradict yourself - you've just defined a flunky programmer.

      It's bullsh*t like this that makes me glad I no longer have to deal with asshole bosses who don't know shit, and don't know they don't know shit.

      Think of it - before the Internet, people didn't do "cut-n-paste coding". You actually had to have large quantities of code between your ears and know what you were doing without asking world+dog. Man pages help, but only to describe the functions you're using, not actual implementation, which should always be left as an exercise to the reader, or you never learn.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    53. Re:Perhaps a better method... by shaitand · · Score: 1

      This is also a terrible test. No form of putting an extremely nervous interviewee on the spot gives ANY indication of their proficiency. Simple problems are the worst because you are looking for something challenging. Other than a basic screener like "what is the line terminator in perl" you just have ignore degrees, gauge by past experience and test in the early part of the job by giving real work and comparing to peers at the same time in seat.

    54. Re:Perhaps a better method... by tsstahl · · Score: 5, Insightful

      I have to chime in on this. It comes down to the interviewer's expectations. Many years ago I had a white board interview with one of the 3 letter acronym companies. I wrote my answers to the questions in plain language P-code; I was prepared to defend in C++ and Pascal.

      The interviewer said I 'flunked' because the code wouldn't compile. I asked him to show me his white board compiler as that would be really cool tech. I only knew he was truly serious when he didn't laugh.

      This was one of the moments that guided me out of full time development.

      Back to the point, if the white board is merely a tool to demonstrate knowledge of, and insight into, Foo, then fine; otherwise it is an artificial somewhat nonsensical barrier.

    55. Re:Perhaps a better method... by Megane · · Score: 1

      I had whiteboard interviews where the interviewer had no clue about coding, so every question regarding clarification to the task where unanswered and the interviewer even got a bad impression of my skills.

      The interview isn't just for them to decide if they want you. I wouldn't want to work for a company where the interviewer in a whiteboard interview was clearly clueless, because he probably isn't the only one. And I have had an interview where it was clear that they didn't understand what they were really asking.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    56. Re:Perhaps a better method... by DontBeAMoran · · Score: 4, Funny

      Sorry but we don't hire people who use monospace in their posts.

      --
      #DeleteFacebook
    57. Re:Perhaps a better method... by grahamsz · · Score: 2

      I had an interviewer (i think at Google even) ask me to write code to calculate the value of an index in the fibonacci sequence. I wrote it using a loop that simply cached the two previous values, when they were expecting me to write it using a recursive call. Since apparently it was a test on big-O I had to then think of the less efficient way to write the code so that they could make sure i understood the issues around algorithmic efficiency.

    58. Re:Perhaps a better method... by SuricouRaven · · Score: 1

      Radix sort. It's actually simpler than a bubble sort, and more efficient by far on a randomly-sorted list.

    59. Re:Perhaps a better method... by thegarbz · · Score: 2

      This is what we do in engineering interviews, flat out say that we are more interested in the thought process than the correct answer.

      We have a standard question of drawing a schematic for a linear AC/DC conversion. The last person we employed was also the only one who got the answer wrong. It was a trivial mistake in drawing, but his self checking of the answer is diverting no other candidate attempted.

    60. Re:Perhaps a better method... by HornWumpus · · Score: 1

      They're not riddles, they are puzzles. They are in the analysis much more than the coding. What does this process actually do and how?

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    61. Re: Perhaps a better method... by HornWumpus · · Score: 1

      'Wrote my own framework' people are generally out of control egos and lazy researchers. They lie, but to themselves first, just like all good liars.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    62. Re:Perhaps a better method... by OhPlz · · Score: 1

      Exactly. But it works both ways. You and I are probably better off not working for a company that does things like that, whereas others may enjoy being trampled on in the workplace at all hours, on all days.

    63. Re:Perhaps a better method... by SuricouRaven · · Score: 1

      Perhaps that was the real test - an evaluation of your dedication.

    64. Re:Perhaps a better method... by Spazmania · · Score: 1

      That's an eye chart. Asking someone to catch the greater than sign instead of a less than sign on paper in an interview is a downright nasty question. Of course people get tripped up on it. If it didn't catch my glance, I'd get tripped up on it and I've been programming for 30 years.

      If you want to see how someone thinks through a problem, either give them a computer and watch or instruct them to "tell me what you'd do next to try to figure this out. I'll respond with the result you get each time you try."

      Here's a better softball for computer science grads:

      Your friend writes a program which receives messages. It adds each new message to a sorted array of messages. When a message is retrieved, it does a binary search on the sorted list to find the message.

      What's wrong with this solution?

      The candidate should be able to recognize that his "friend" has reinvented insertion sort and should be able to explain that the algorithm has a "big-oh" running time of O(n^2).

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    65. Re:Perhaps a better method... by Grishnakh · · Score: 4, Interesting

      It's sort of like if someone explains Japanese is a language, you know, like Spanish or Portuguese. Don't use two other mutual-intelligible languages, which happen to be totally different than the one you're talking about, as your examples.

      To be fair, there really aren't *any* languages similar to Japanese. The closest is probably Chinese (Mandarin), but that's only because Japanese borrows a bunch of written characters from it, for one of the three character sets, called Kanji. (So Japanese people can make out a few written words in Chinese, and vice versa, much like English speakers can make out a few words in French which we've borrowed.) The pronunciation, grammar rules, syntax, etc. are all completely different. Japanese isn't even a tonal language like Chinese.

      The only languages similar to Japanese are other "Japonic" languages, which are all used only in Japan, and within Japan are merely considered dialects of Japanese, and almost no one outside of Japan would have heard of these languages anyway as they're endangered, much like other languages spoken only by a small number of people, such as Romansh used in a small part of Switzerland by about 60k people, or the Frisian languages used by about 500k people in Netherlands and Germany.

      https://en.wikipedia.org/wiki/...

      So if you wanted to say "Japanese is a language, you know like...", you'd do best just listing 2 or 3 completely unrelated languages, such as Portuguese, Russian, and Hindi, because there simply aren't any well-known languages that are similar to Japanese.

    66. Re:Perhaps a better method... by iamgnat · · Score: 3, Insightful

      You get a snippet of code (from stackoverflow) which has probably been tested to solve the problem

      No. You get something that answers the question. Often the answer, while technically correct, have other (sometimes serious) errors.

      This is why the state of PHP on the web is such an abomination. People bought into the "anyone can code" BS and do so by following examples SO and other places. In the case of PHP the most popular answers to "how do I query a table based on form data" answer the question, but are massive SQL-I vectors. Those snippets continue to get upvoted because the "answered" the question so people use them due to the high rankings and then upvote it themselves when it "works" for them.

      A hirable programmer needs to know how to go search for answers to questions they don't know, but they also need to know how to evaluate the answers they find to determine if a) it really solves the problem and b) if there is more they need to do.

    67. Re: Perhaps a better method... by Anonymous Coward · · Score: 1

      Omfg, thank you so much for that. Actual Perl code on Slashdot. I've been debating leaving Slashdot for good. Bless you, sir.

    68. Re:Perhaps a better method... by ControversyDaily · · Score: 2

      As far as I can tell, this code is syntactically correct (if executed by a Perl interpreter).

      Unless something goes terribly wrong with Perl, the code behavior is pretty well defined. It shall output the following 2 lines:

      > This is the header of the output > where are the entries?

      So the only sensible answer to the question"why doesn't this work" is "it works"

      The program completes, it does not mean it works. If you put two engines on an airplane facing the opposite direction you can still start the engines and get the "all checks complete" lights - but you'll probably not get where you wanted to go.

    69. Re:Perhaps a better method... by ET3D · · Score: 3, Insightful

      I've been working in software development for about 30 years, and I've never solved a single riddle. I'd bet that 99.99999% (and I'm being generous) of all software developers have never solved a single riddle as part of their work. I solved a lot of problems, developed algorithms, designed, analysed and optimised systems, but never encountered riddles.

      Riddles are questions with simple answers which are deliberately obscure. They are rarely encountered in constructing something that requires rigorous thought and creativity, which is what software development is.

    70. Re:Perhaps a better method... by Dixie_Flatline · · Score: 1

      Here's the thing: those are perfectly reasonable requests, the rules aren't arbitrary, there's some determinism, etc.

      I went to an interview, and I got asked how to write something that calculates the nth Fibonacci number. The naive solution is of course to do it recursively, but I'd recently been reading about it, and I had an iterative solution. So I wrote that down. Turns out the question is multi-part, and the second part is "do it faster". My solution was already pretty optimal, so I didn't have anywhere to go. It was clear that this wasn't okay. I did the work better than expected on the first try, but got docked points for the interviewer's lack of imagination.

      This is what people mean when they say they don't want to solve riddles. I'm not there to be a dancing monkey, we're trying to have a dialogue about why I'm right for your company and to clear a minimum bar for skill. There's this story about fizzbuzz (http://blog.codinghorror.com/why-cant-programmers-program/) where basically the writer concludes that bad programmers are weeded out by really minimally challenging problems, and making things more complicated doesn't give you any better sense of success.

      My questions in interviews are more philosophical. "What do you think about commenting code?" "What's your favourite programming language? Why? What problems does it have? Do those problems have solutions? How do you work around issues like that?" These are questions that programmers think about on their own time and have opinions about, and having an opinion and being able to talk intelligently about it tells me a lot more about how engaged and appropriate someone is for the job than basic BS like 'write a solution for the nth Fibonacci number'. That's not an inherently interesting problem, it tells me very little about what you'd be like to work with or even your problem solving skills, and ultimately bores the both of us.

    71. Re: Perhaps a better method... by Anonymous Coward · · Score: 1

      If you want me to code all day, you better have a check for me at the end.

    72. Re:Perhaps a better method... by JoeMerchant · · Score: 1

      Agreed, it's about communication - problem solving ability, not a checkbox yes or no solved it correctly? That's the right way to do it, in person.

      Then there are the online "pre-screen" interview tests which most assuredly are judging candidates by yes or no solved it correctly?

    73. Re:Perhaps a better method... by networkBoy · · Score: 1

      This was for a testing team though, so this kind of detail is what we needed people to see.

      If they're in testing then while they don't have to be a savant about how the code works, they have to not gloss over the details.

      In nearly 100% of the cases where the person was struggling the following would turn on the light bulb:
      I would suggest they read the code out loud to me.
      They always looked like it felt foolish, but when they got to the loop... !

      How they responded to that light bulb turning on was usually a big make or break for my decision.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    74. Re:Perhaps a better method... by Hognoxious · · Score: 1

      For a senior position with high pay I'd rather hire the person who writes the pages that gets looked up on google

      Would you? I'd rather have someone who does his work, rather than the whole world's - including potential competitors' - and on my dime, most likely.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    75. Re:Perhaps a better method... by Darinbob · · Score: 1

      I agree. CS people in the last decade or so don't seem to have a lot of low level experience and probably don't know C/C++, but EE people do know this. The drawback is that EE people don't really know CS and from what I've seen have a tendency towards the quick and dirty solution.

      I think what scares some people is that they're treating this like a college test where they have to have the right answer. That's not the point of an interview most places. The goal is to find someone who is capable of doing the job, does not need a ton of training every day, and is capable of moving on from early basic tasks to complicated projects. So knowing how to program well is just the first step, but so many people with programming experience on their resume really are terrible at programming and will need a lot of retraining. And solving some sort of problem gives a hint that the person can handle the complicated stuff and isn't just a person who looks stuff up on the net (and becomes confused when the net doesn't have the answer).

    76. Re:Perhaps a better method... by gallen1234 · · Score: 2

      I can't tell if it works or not. The first question you have to ask is, "What's it supposed to do?"

    77. Re:Perhaps a better method... by Fire_Wraith · · Score: 2

      Chinese is actually in an entirely different language family than Japanese. They even have entirely different sentence structure.

      The language closest to Japanese is Korean, partly because they use many of the same Chinese loan words, but also because they have the same sentence structure (Subject, Object, Verb), as well as the use of markers to indicate who the subject is or what the object is. In many cases it's very easy to translate directly from one to the other. They both use Chinese numbering as well as their own, and so on. They even use many of the same loan words, and in the same context (for instance, "Arbeit", the German word for work, is used in both Japanese and Korean as the word for "part time job").

      They're certainly not mutually intelligible though. It's more on the order of comparing Romance languages, like Spanish to French.

    78. Re:Perhaps a better method... by Darinbob · · Score: 1

      Not being nervous is a good interview skill. Or actually, pretending not to be nervous. Seriously, showing confidence will greatly improve your chances of getting the job even if you're just pretending to be confident. This is playing the people game instead of the knowledge game. People who can do the knowledge or skill stuff shouldn't worry because they shouldn't be thrown off by stuff like bubble sort. Anyone decent can give bubble sort a go even if they don't know about sorting, just take how you'd sort by hand and then try to make an algorithm from it, and getting the right answer is not the goal of the interview.

      I ask the simple questions because people with experience on paper get it wrong all the time. Then I work my way up. I even apologize for asking such obviously simple questions but then don't get an suitable answer. Past experience is often a lie. People will list everything their team did on the resume but then are unable to answer questions about what they wrote. It sounds lame but it is so very common (maybe people don't know the fundamental rule that if you put something on your resume then you will be asked about it at some point).

      You know all those goof offs at work that can't really do their job and are carried by everyone else? Well they go out and interview with reallly great looking resumes that gets them past the HR screeners.

    79. Re:Perhaps a better method... by Darinbob · · Score: 1

      And if they complete it satisfactorily then they get hired and thus compensated? If you want the job then you have to work for it. That usually means more of your own free time spent researching the company, boning up on rusty skills, getting a portfolio ready, and so forth. Why is this any different?

      It could potentially be a straight forward problem. Implement merge sort. Use the internet if you want. But when you then come into the office for the interview we are going to ask you pointed and detailed question on every line by assuming that you either wrote it or understood it. Is the documentation correct, is there a set of test cases, and so forth. It's a lot of work and I probably wouldn't go that far for a candidate but it's not unfair. The candidate can always refuse to do the task and seek employment elsewhere.

    80. Re:Perhaps a better method... by RubberDogBone · · Score: 1

      I dunno. Just had an interview and IT company where I went in totally honest about my abilities and experience and so forth, and got past the phone interviews to come in and do a test on a demo system with full access to look stuff up.

      And I failed, because every single bit of the test was stuff I TOLD them I had never done. I don't mind looking up things and trying to learn how to do stuff. But they knew my abilities and didn't test anything I knew OR my ability to solve problems even when I don't know. Nope. It was purely pass tests on stuff I knew nothing about.

      Asshole company. I am kind of glad to not work there.

      --
      Sig for hire.
    81. Re:Perhaps a better method... by Darinbob · · Score: 1

      Such people should consider being contractors or consultants, they are very rarely interviewed in my experience. However if they do a bad job on the job then they're unlikely to get more jobs that way, so treat it as a very long term interview.

    82. Re:Perhaps a better method... by RubberDogBone · · Score: 2

      So what you are really saying is that the sum of your experience and intelligence and education is measured in how efficient you can do a sort?

      What if you used your intelligence and those other traits and abilities to do bigger and better things and just simply looked up how to do a sort? Aren't you yourself wasting your time dealing with trivial tasks of marginal impact, versus other things you could do?

      --
      Sig for hire.
    83. Re:Perhaps a better method... by Hognoxious · · Score: 1

      Half of programming is debugging the spec, and that involves challenging assumptions.

      Here's one for you to start with: all programming jobs are the same as yours.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    84. Re:Perhaps a better method... by sethstorm · · Score: 1

      Pushing AI much, are you?

      --
      Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
    85. Re:Perhaps a better method... by RabidReindeer · · Score: 1

      In my experience, if it's not on StackOverflow, it's not something I can resolve in a 30-minute interview.

      StackOverflow has a sufficiently large inventory these days, that most problems that it can't resolve are going to take me at least 2 days of serious work.

      The downside of that is that there are a lot of people who get by by blindly copy-pasting StackOverflow code without understanding what it means, but I have other resources where I can get background and theory.

    86. Re:Perhaps a better method... by SoftwareArtist · · Score: 2

      Even worse, a lot of candidates don't even know what a bubble sort is, or that there's such a thing as a bubble sort. They don't understand that there's more than one way of sorting a list, or that some ways are more efficient than others. They don't realize that the best method in one case could be different from the best method in another. They don't realize that some methods scale better than others with list size, or that some are faster if the input list is partially sorted, or that some require extra memory and others don't, or that some can be parallelized better than others.

      And these are people who claim to be experienced software engineers.

      I often ask about sorting on interviews, and it's a great way to quickly tell how competent someone is. I don't care if they understand the details of particular algorithms, or if they can write them from memory. I care whether they get the concepts and know what questions to ask.

      At the other extreme, I used to work with someone who started every interview by asking, "Write a complete, working program in any language of your choice that prints 'Hello World' ten times." That was also illuminating, in a horrifying sort of way. You wouldn't believe how many people struggled with that. We usually ended those interviews pretty quickly.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    87. Re:Perhaps a better method... by SharpFang · · Score: 1

      They found out he was the oil reservoir engineer at McDonald's, preparing fries?

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    88. Re:Perhaps a better method... by SharpFang · · Score: 1

      It's NEVER a problem for which no part can be researched online. Unless you start your programming work by taking a shovel to the beach to dig up sand for silicon for the chip that will run your code, partial solutions will always be available on-line. Language specifications. Data sheets. Protocol RFCs. White papers on the algorithm. There may be no solution for this specific problem but there will be tools helping finding it, and guides how to approach it.

      Formulating the correct questions is half the work.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    89. Re:Perhaps a better method... by HornWumpus · · Score: 1

      It's true. I read 'quick and dirty solution' as 'wa wa wah solution'. Can't help myself, I like solutions.

      But I do go back and check assumptions. Is it a solution? Quick is always good. Dirty is a value judgement, just how dirty? Who says and why? e. g. Has this person _ever_ mentioned database normal forms past 3? Smalltalk purist? Lisp guru?

      There's 'quick and dirty' that will run forever, 'quick and dirty' that will run until something better is built and 'quick and dirty' that will require constant nursing forever and ever. Then there is 'quick and dirty' that will run forever, until it explodes with no warning a month after the person who slung it, quits.

      I ask candidates about how many computer languages they've written, their first real computer, the most painful/awful code they've ever had to read or maintain (letting them omit identifying details if they want) and if they have any questions. Open ended questions, let them run on, most answers are pretty short. Leave the quizzing to others. I'm a grumpy old fart and have better things to do.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    90. Re: Perhaps a better method... by SharpFang · · Score: 1

      If the resulting code is worth the check, they do.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    91. Re:Perhaps a better method... by SharpFang · · Score: 1

      Several hours past the point where an AI is capable of looking up the right solution on the net, downloading a snippet, adapting it to the surrounding code and including it into that code, everyone will be replaced by that AI.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    92. Re:Perhaps a better method... by beelsebob · · Score: 1

      No, not at all - I want them to be able to look at an algorithm, and say "given the user doing x, what kind of affect is that going to have on the runtime of the thing you wrote on the board".

      That's not memorisation at all, that's actually understanding how to assess performance of algorithms.

    93. Re:Perhaps a better method... by beelsebob · · Score: 1

      No, that's not an illustration of the problem at all, that's an illustration of how to do white board coding correctly.

      They've found someone who can solve a problem, not someone who has crammed the textbook on a particular language. That's far more valuable. That is, they've found someone who knows how to software engineer, rather than someone who only knows how to program.

    94. Re:Perhaps a better method... by beelsebob · · Score: 1

      If the interviewer is asking you trivia that they've got memorized, they're not going to be impressed at you flailing around trying to work it out from scratch.

      Yup... that's why a good interview involves doing a problem on a whiteboard, not sitting there asking trivia.

    95. Re:Perhaps a better method... by beelsebob · · Score: 1

      1.) Who cares if someone knows bubble sort (or insertion or quick or merge or whatever you please). Particular algorithms are well defined tools that good programmers don't re-invent. Much better to determine if that person knows the right tool to use for a particular job. In other words, a question like "what type of sort would you use with sets of data that are nearly, but not completely in the desired order" or better yet "what different types of sorting are there, and why would you choose to use one over the other"? To put in in other terms, If you were interviewing a plumber, would you ask them how to make a pipe wrench or would you ask them what type of wrench to use to tighten a loose fitting?

      That's rather the point - I'm not trying to hire a programmer - I'm trying to hire a software engineer.

      If I were trying to hire a programmer, sure, your plumbing type questions make sense. But since I'm trying to hire someone who can do the software equivalent of designing pipe wrenches, I'd better ask them questions about that.

    96. Re:Perhaps a better method... by Grishnakh · · Score: 2

      Chinese is actually in an entirely different language family than Japanese. They even have entirely different sentence structure.

      Yeah, I believe I said this before. The only similarity they have is that Japanese borrowed a bunch of words/glyphs from Chinese and then called them "Kanji". It's not that much different than English borrowing words from French or Sanskrit, except that in Japanese, all they borrowed was the glyphs and the meaning of the word, while coming up with their own, different pronunciation.

      The language closest to Japanese is Korean

      According to Wikipedia, the relationship between Japanese and Korean is highly debated, with some linguists saying that it appears the languages are converging, rather than diverging, because of borrowing between the two, which suggests that there is not a common root to the two languages as would be the case with divergent languages. Linguists in Korea and Japan don't think the two languages are related at all. It's not at all like French and Spanish, where the two have a common root language in Latin. There's no evidence of a common root with Japanese and Korean. Your point about loan words (esp. German) just reinforces the notion of them being convergent: they're borrowing from each other in modern times. The evidence points to Japanese (plus its related Japonic languages) being a language isolate.

    97. Re:Perhaps a better method... by Cederic · · Score: 1

      library.fuckingSortThisFast(shit);

      Next question please.

      What, you want me to rebuild the algorithms that have had hundreds of hours of analysis, design, implementation and testing? No.

    98. Re:Perhaps a better method... by Cederic · · Score: 1

      How knowledgeable are they about computer science?

      You want developers or computer scientists?

      The best programmers I've met were physicists. Amongst the worse are computer scientists. Testing for irrelevant shit that gets taught on CS courses eliminates some of the best candidates.

    99. Re:Perhaps a better method... by Cederic · · Score: 1

      yes, knowing np complete is important. It's not required! But it is a data point. If they know the answer it gives me confidence that they either have a broad background, remembered stuff from school

      Really? What if their "school" didn't teach about NP-complete. I did a degree in Accounting and Financial Analysis, it was a tad short on NP fucking complete. In my first job I wrote software, covered for support and managed the company's accounts, and that's given me a nice broad base of experience your NP-complete gurus lack.

      bubble sort on a white board isn't that hard. Seriously.

      I wrote my first bubble sort when I was 12. I still wouldn't fucking write one on a whiteboard. Don't be such a twat.

      I rarely get this far as they're still drawing diagrams of a what a linked list looks like.

      Well, there you are. Stop asking them to do things that are a complete waste of their time and yours, and ask the questions that make a fucking difference.

    100. Re:Perhaps a better method... by youngone · · Score: 1

      Drop them at a computer with internet access, give them a couple hours, and see what they have at the end of it.

      This is exactly what happened to a friend of mine last year, they told him to alow an hour or so, gave him what he said was a pretty run of the mill problem to solve, and some tools to do it.

      He said they were well organised and the whole process was great. They then offered him about 2/3 of what he currently makes, but that's a whole other problem.

    101. Re:Perhaps a better method... by kuzb · · Score: 1

      What other fucking industry does this? None of them. Why are we held to the highest standard?

      --
      BeauHD. Worst editor since kdawson.
    102. Re: Perhaps a better method... by thinkwaitfast · · Score: 1

      Same goes with other endeavors. We've been to the moon before.

    103. Re:Perhaps a better method... by Hognoxious · · Score: 1

      What you're missing is that that's the smartest way to do it.

      That's utter fucking rubbish. Just cutting & posting a code snippet that you don't understand (if you did, you wouldn't need to crib it, would you?) also brings in a lot of assumptions that you aren't even aware of. You're sorting a list - Does it assume there are no duplicates? You're searching two directories for duplicates - what if they're directly or indirectly the same directory?

      Very often the bit of code that does what you want is like a postage stamp. The code that stops it doing what you don't want is the size of the postcard.

      You have no idea what I'm talking about, do you, you hipbook facetard shitcock.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    104. Re: Perhaps a better method... by W.+Justice+Black · · Score: 1

      My fave approach as a hiring manager is to do the reverse on a take-home test for candidates from e.g. a career fair:

      I write code that does something (generally a few different examples in various languages) and don't comment the code at all and have FIXME-type identifiers (function names like FIXME_name_this_function() ). Their job is to figure out what the code does (compile/run it, take it apart, etc) and then comment it and change the identifiers to something useful. They can use any non-human resources they can find (compilers, debuggers, web searches, docs, etc).

      I think this is a better approach because:

      * When you're starting at a new job, you're probably fixing broken code at first anyway, so this is a better simulation of that.

      * I can process many more candidates, since I already know what the code does and don't have to decipher their handwriting on a board, and

      * It shows their ability to get code maintainable, which is much better in the long run.

      So stop having your candidates write crappy code; have them comment your crappy code instead!

      --
      "Time flies like an arrow; fruit flies like a banana." --Groucho Marx
    105. Re:Perhaps a better method... by HornWumpus · · Score: 1

      I hate all realworld HR people too. Whole department should be a few people in charge of admining benes and keeping everything legal. No part in the hiring process.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    106. Re:Perhaps a better method... by thinkwaitfast · · Score: 1
      My experience also. But then I worked with a guy who found the maximum in 140-long list by (bubble) sorting the list first and then picking out the first.element.

      Worked perfectly every time, but a little inefficient.

    107. Re:Perhaps a better method... by _KiTA_ · · Score: 1

      And obviously watch HOW they get to their solution, ie. not by connecting to a chatroom where they have a bunch of friends waiting to help out. Looking up snippets, checking parameters and syntax etc. would obviously be fine, that's what you'll be doing in daily work anyway.

      What do you have against Stack Overflow?

    108. Re:Perhaps a better method... by Xyrus · · Score: 1

      Reminds me of a whiteboard response I wrote to interview question I had a long time ago.

      The guy asked me to write a some binary tree related algorithm (don't remember which one) on the whiteboard. My response:

      http://www.google.com/

        He laughed his ass off. Got an offer the following day but decided to take a different job instead.

      Having been in the industry for a couple of decades now, I don't care where you got your degree, what algorithm you can pull out of your ass, or how many lines of code it takes you to write an octree in C++. None of that tells me if your capable of utilizing available resources effectively to get the job done, how well you work with others, etc.

      I'll take experience over degree credentials any day of the week.

      --
      ~X~
    109. Re: Perhaps a better method... by 31415926535897 · · Score: 1

      I understand what you're saying about the Fibonacci function, but I don't think you're right. First of all, you should have asked what was meant by "faster." If this was a function that was going to be called a lot with large input values, then it might be worth talking about storing the intermediate results in a cache. That would also lead to great conversations about tradeoffs: time vs space, etc.

      Anyway, the real reason you turn out to be wrong is that there's a closed form solution for the Fibonacci sequence. It won't be fastest to use it for all "n" because it will involve floating point math, but there are certainly faster solutions than your iterative one.

    110. Re:Perhaps a better method... by jez9999 · · Score: 1

      Wrong.

      In OOP it would be array.Sort().

    111. Re:Perhaps a better method... by Darinbob · · Score: 1

      The academic questions are asked so that we can judge if the person has an academic background or can at least reason coherently about issues that may be important for an advanced job. If someone doesn't know the answer then say so, but at least try to give a thoughtful answer instead of dismissing it. Sure, if the candidate is behing hired for a grunt level coding job it's not important (though the coding details are relatively more important), but if this is for a leadership or design job then this is important.

    112. Re: Perhaps a better method... by Darinbob · · Score: 1

      No you don't have to write perfect code. People want to see how you think about the problems.

    113. Re:Perhaps a better method... by mysidia · · Score: 1

      * simple coding problem (why doesn't this work):

      Except that only a crusty old Unix geek like me will recognize that language.

      As to the "implement a bubblesort on the whiteboard"

      Hey..... Bubblesort is probably the one sorting algorithm I could potentially do on a Whiteboard.
      If they asked me to write working generic code for Quicksort, Mergesort, Dijkstra, or A* Search in a short whiteboard session; I'd be screwed.

    114. Re: Perhaps a better method... by ghoul · · Score: 1

      You need to pay for my time if its going to be an entire day interview. Doesnt matter if you like the output or not. You do pay your employees even if some days their output is shit.
      If you want me to spend a day you better be a dream company to work for or you are not going to get many qualified applicants and will have to choose from the desperate unemployed.

      --
      **Life is too short to be serious**
    115. Re:Perhaps a better method... by OhPlz · · Score: 1

      I think that was a play on my username. ;)

    116. Re: Perhaps a better method... by ghoul · · Score: 1

      I think you need better reading comprehension. We want you to do something (without help) which has been done before so that we know when you get something which has not been done you will be able to do it. We are not going to ask you to recode bubblesort as part of your day to day job.

      --
      **Life is too short to be serious**
    117. Re:Perhaps a better method... by mysidia · · Score: 1

      The point of having someone solve it without net resources is that when they are working they will run into problems where the answer is not on Stackoverflow and you need to be able to solve from first principles.

      Why don't you ask them to whiteboard one of those, then, instead of Bubblesort?

    118. Re:Perhaps a better method... by OhPlz · · Score: 1

      "you have to work for it."

      That's the problem right there. You cannot demand that people work for your company for free. At a minimum, you're violating minimum wage laws. It doesn't matter how straight forward the exercise is. It takes long enough to get past phone screens and first and second round interviews, we don't need to demand more time from potential hires. They either have a job they're trying to leave or they're busy with a job search. Having them do "homework" says that you don't respect people's time and you're probably the type of outfit that has people working nights and weekends.

    119. Re:Perhaps a better method... by OhPlz · · Score: 1

      "if you're not excited to get to work with someone, why would you hire them?"

      Skill? Creativity? Knowledge? Experience? People can have these traits without humping your leg to get you excited in an interview.

      "Giving this 'homework' allows us to spend less time in the onsite interview asking the candidate to work on the board."

      There it is. You're spending their time instead of your own. Time is money right? That's why I'm saying you need to compensate them. You've just admitted there's a cost involved.

    120. Re: Perhaps a better method... by Spazmania · · Score: 1

      Of course you use a binary search to find the insertion point. Then you move the latter half of the array to make room for the insertion. O(n^2).

      If it's a linked list instead of an array, you get your insertion as a constant time operation but have to search half the list on average to find the insertion point. Still O(n^2).

      Understanding your code's big-oh run time really is important.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    121. Re: Perhaps a better method... by Spazmania · · Score: 1

      Sounds like you are adding to end of array

      Did you enjoy trying to troll me?

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    122. Re:Perhaps a better method... by basicprimitives · · Score: 1

      I was constantly failing on the those white board interviews, so in order to practice I started pure CS project you can google it with "basic primitives organizational diagram", the funny part is that after 4 years of constant research of various algorithms I can see algorithmic solutions for many practical problems, which I could not solve and had no idea how to solve them before, but I still gracefully fail on all technical white board interviews, so all that white-boarding staff is pure profiling to pick up fresh graduates only. I have already over a hundred of clients and many billion dollar corps in the client list, but still have no solution to the interview process.

    123. Re:Perhaps a better method... by SecurityGuy · · Score: 1

      Personally, I really favor giving people an example of a real problem we're working on and asking how they'd solve it. We've made excellent hires of people who didn't come up with solutions, but had a solid approach to getting one. I don't think having someone show me they remember how to code a trivial algorithm I almost certainly will never want them to code is going to tell me anything about them I care to know.

    124. Re:Perhaps a better method... by antdude · · Score: 1

      That is a discrimination (ageism?). :P

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
    125. Re:Perhaps a better method... by cas2000 · · Score: 1

      s/dedication/Servility Quotient/

    126. Re:Perhaps a better method... by DontBeAMoran · · Score: 4, Funny

      Fontism.

      --
      #DeleteFacebook
    127. Re:Perhaps a better method... by Boronx · · Score: 1

      Consultants have to continually sell themselves.

    128. Re:Perhaps a better method... by Darinbob · · Score: 1

      For someone who will be writing code that has algorithms you really do want a candidate that understands algorithms and knows how to figure out the big-O behavior of code that they are looking at. It's not hard and doesn't require memorization and used to be taught as lower division undergrad courses. If the candidate doesn't understand theory then they're probably better suited to jobs not involving algorithms.

      (Though you run into this problem occasionally where the smart self-taught programmer is baffled about why the code is so slow and demands faster processors. I remember a phd physicist baffled why his code that was O(n^3) only took 5 minutes when n==100 but had been running all day long when n==1000.)

    129. Re:Perhaps a better method... by Darinbob · · Score: 1

      Hmm, every single day on the job I have to solve what are essentially puzzles. They just happen to be programming puzzles most of the time, some times they are logistics puzzles, or puzzles about how to get two employees to get along, and so forth. If everything was easy then they could just hire someone with a certificate instead, or outsource the job.

    130. Re: Perhaps a better method... by AaronW · · Score: 1

      It depends on the environment you work in. For example, I know that in one code base that Palo Alto Networks uses that you don't have access to functions like qsort since it is an embedded environment, and ready-made sorting functions are not always ideal if you know something about the data beforehand. These "hand-optimized" generic functions are also just that, generic, and hence there are many cases where a different sorting algorithm may make more sense compared to qsort. I also give a programming problem that one could easily solve with a simple library function because there have been numerous cases where such a function is not available (it's a pretty common function). In addition, by asking the person to write the function I can see how they approach the problem.

      I've dealt with PAN and they certainly do have real critical thinking skills. If I interviewed you and you behaved that way you'd get a quick no-pass from me and my team as well. And yes, I have in the real world dealt with problems where one has had to implement sort routines, including one environment I know PAN uses (though I have never worked for PAN I work on a codebase that they use for an embedded bare-metal environment). Since I work for a vendor who supplies parts to PAN I've been submitted problems by PAN and their engineers typically know what they're talking about.

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    131. Re:Perhaps a better method... by Darinbob · · Score: 1

      The goal here is not to reinvent. The goal is to see if you can understand the problem and figure out how to attempt to solve it. Getting the final answer perfect isn't necessary. Bubble sort is so simple that even if you don't know the details you can basically do it. Instead of saying "bubble sort" which probably freaks out the people who hated college, just say "write some code to sort this array in place".

      Now then the person gets the job. If they're not just a code monkey they may end up fixing an algorithm in a library, or having to choose a new one because the library's sort is too slow. More often I see people whining about having to do problems with linked lists and such and saying they should just use a library.

      However I look at linked lists a lot at work; they show up in the debugger when stepping through the code, the existing code has bugs in it that need fixing, or someone uses the linked list library wrong because they don't understand how they work, and so forth. The goal here isn't for the candidate to come in and rewrite all the linked lists, that would be dumb. But the candidate must be able to deal with low level code on a daily basis. We have no need for a candidate that can't write or debug any code unless there's a library available.

      And I have figured out bugs in code merely by thinking about them. It's a very useful skill when you have a core dump that doesn't have enough information available to pinpoint things, or you're only told the behavior of the bug by a tester. Though I do have a lot of coworkers who are easily stumped by bugs if they can't get the extra evidence from the debugger.

    132. Re: Perhaps a better method... by AaronW · · Score: 1

      It works for quick and dirty on very small data sets though I agree that in general it's not used. I've benchmarked code dealing with a small data set where a linear search on unsorted data was faster than trying to maintain sorted data despite one being O(n) and the other being O(logn)

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    133. Re:Perhaps a better method... by Darinbob · · Score: 1

      Ok, what if I handed you a sorting routine and asked you to debug it because it's causing performance problems at a major customer's site?

    134. Re:Perhaps a better method... by Darinbob · · Score: 1

      Sounds like a recruiter. No one actualy wanting to hire a good candidate would say "please memorize stuff in advance for the questions I'm going to ask you." All you're going to get is someone who can memorize stuff. It's already too hard to distinguish between someone who knows stuff from someone who crammed the night before. However recruiters on the other hand want the commision, so they're going to cheat all the time to make sure the mediocre candidate they found gets the job...

    135. Re: Perhaps a better method... by AaronW · · Score: 1

      That reminds me of having to deal with malloc in VxWorks 5.4. VxWorks kept track of free memory blocks in a sorted linked list from the smallest to the largest block. One of the libraries I dealt with needed to use realloc() a lot to increase data structures as large trees of data were filled in (data for a network processor that did longest prefix match in hardware). The problem with this is that just booting up we'd end up with tens of thousands of tiny free blocks and the bootup time was around an hour because realloc would look for a larger block size and would walk through all those tiny free blocks. The bootup time was around an hour and long term stability was impossible due to heap fragmentation.

      I replaced the VxWorks malloc implementation with Doug Lei's implementation (which glibc is based off of, or at least used to be). Startup time went from an hour to three minutes and the fragmentation issue disappeared entirely. Additionally I added some instrumentation that made it trivial to track down memory leaks at run-time on a system in the field. One command would show how many blocks and how much memory was allocated by each function and task. (VxWorks is a multi-tasking real-time operating system that used a single address space for all tasks).

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    136. Re:Perhaps a better method... by Darinbob · · Score: 2

      I had someone refuse to write anything on the white board. Not even simple one-liners. Passing notes back and forth with the other interviewer we agreed to no go further with the candidate and have other interviewers waste their time. I imagine that the person left thinking he was too good for us. But to be honest he really wasn't really coming across great while talking to him and we were hoping that maybe he could program and redeem himself.

      If someone really is too good for such things then walking out of an interview without answering the questions isn't the way to show it. Instead solve the questions perfectly then walk out. Otherwise we just assume that the ego is not in check with the skills.

    137. Re:Perhaps a better method... by Darinbob · · Score: 1

      Speaking as someone who is 53, the answer is that the resumes often lie or exaggerate. What looks good on paper isn't always good in person. Judging whether or not someone is good enough to handle the job is not at all easy. Just chatting with someone doesn't tell you much. Most of the stuff in the past is already on the resume, we can dig down and ask for details but what does it really tell us? So we'll pick a couple things on the resume to focus on, have you describe one complicated problem you have to solve, maybe ask a few pointed questions to weed out those who fluffed up the resume. But then we need to see if you can program, because we've been burned over and over by people who seemed great but turned out to be duds. I know mediocre programmers in their twenties and I also know mediocre programmers in their fifties, and all ages in between.

    138. Re:Perhaps a better method... by lgw · · Score: 2

      So ask about actual work problem that you find puzzling, not freaking pirates.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    139. Re:Perhaps a better method... by AaronW · · Score: 1

      If you tried to pull that when myself or anyone else on my team were interviewing you your resume would immediately go into the bitbucket. The problem with those ready-made algorithms is that they are not always ideal depending on the data being sorted. Also, it helps weed out the programmers from the engineers. I give a relatively simple programming problem that could easily be done with a common function call. I want to see how the candidate approaches the problem and there are multiple ways to solve it. It works well at weeding out crappy engineers who rely on stackoverflow for everything.

      We also work in environments where you can't just call some sorting function because there's a good chance it doesn't exist. We also expect basic knowledge. That's the difference between a programmer and an engineer.

      For example, there are numerous cases where quicksort is not the best algorithm.

      I've had to implement common data structures from scratch many times because either the generic functions were not available or they were sub-optimal for the task at hand.

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    140. Re:Perhaps a better method... by Darinbob · · Score: 2

      I've tried that, didn't quite work out. First you can't ask anything with code you can't share, so you spend a lot of time stripping out all the proprietary stuff. I show them the paper and ask them to find the bug. They inevitably can't find it because it's way outside their experience or skill level and I'm seriously regretting even asking it because they want to know the answer when I want to move on to the next question. So I have a really really short snippet of code with tons of errors in it and ask them to point them out and see how many they can find (and they still want to know if they found them all or not).

    141. Re:Perhaps a better method... by Darinbob · · Score: 1

      They're not working for the company, they're working for themselves. They have a product they are trying to sell, that product just happens to be themselves. I'm the customer seeing if I want to pay for that product or not. I'm not going to just believe the seller's marketing fluff, I want to see if the product is as good as the label. If they fell it's a waste of their time to sell to me then they can go and try to sell to someone else.

    142. Re:Perhaps a better method... by Darinbob · · Score: 1

      If you have a dregree in accounting and financial analysis, and nowhere on your resume does it say "Computer Science" then maybe I won't ask that question. Though if you are being a professional programmer and took some time to learn something about computer science by reading books in your spare time, then that's bonus points for you. At the very least, try reading "Gödel, Escher, Bach" for the fun of it.

      Doing linked lists is not a waste of time. We have those in our code and they will encounter them while debugging things or writing new code. If they can't figure out something as simple as linked lists then maybe they shouldn't be touching our code (or touching kernel code in bsd or linux while they're at it). If they can't do this then something on their resume is likely wrong as we really only wanted to interview people who said they have experience with low level software.

    143. Re:Perhaps a better method... by silentcoder · · Score: 1

      Sorry but corporate standards require all text editors be configured to code in Comic Sans.

      --
      Unicode killed the ASCII-art *
    144. Re:Perhaps a better method... by mwvdlee · · Score: 1

      I regularly interview interns. Usually simply talking about their own projects is enough. If I ask to explain why they made certain choices and they can give coherent reasons, they usually have a decent idea of what they're doing.

      Obviously an intern isn't quite the same as an employee, but I find that simply asking people to explain something they should by all means understand is a pretty solid method of weeding out the crap. You'd be surprised by the amount of people unable to give a decent reason why they choose framework A over framework B. I would have been happy with "I already knew B and wanted to learn about A".

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    145. Re:Perhaps a better method... by gnasher719 · · Score: 1

      Even worse, a lot of candidates don't even know what a bubble sort is, or that there's such a thing as a bubble sort. They don't understand that there's more than one way of sorting a list, or that some ways are more efficient than others. They don't realize that the best method in one case could be different from the best method in another. They don't realize that some methods scale better than others with list size, or that some are faster if the input list is partially sorted, or that some require extra memory and others don't, or that some can be parallelized better than others.

      A very interesting observation. My observation using Apple supplied frameworks for MacOS X and iOS development is that they just use the fastest possible way to sort an array, and that's it. No need to know the second fastest. There are other things that the developer should worry about. There's nothing wrong with writing

      array.sort(
      BTW. If you try to sort an array with reference counted pointers to objects, with code that you wrote yourself, most of the time will be spent pointlessly adjusting reference counts - a sorting method written at a lower level can know that the result is just a permutation of the original array, so there's no point adjusting any reference counts.

    146. Re:Perhaps a better method... by gnasher719 · · Score: 1

      We give potential applicants a take home programming problem and ask them to send us the result a couple of days later. We then quiz them on their work to make sure they did not get someone else to do it.

      So how much do you pay me for that work?

    147. Re:Perhaps a better method... by gnasher719 · · Score: 2

      Perhaps that was the real test - an evaluation of your dedication.

      My dedication is directly proportional to my pay. Pay me say 400 pound a day, and I'll do all the quizzes that you want me to do for the next year.

    148. Re:Perhaps a better method... by Bongo · · Score: 1

      I'd venture to say that the most important qualities in a worker are not measurable and nor would most people have even heard about these other qualities in a theoretical way.

      As an example of how things might be, in an alternate reality, is to look back to 1890 or something, when there was a proposal that the normal method of training architects, which was by apprenticeship, be replaced by a university qualification. The master builders of the time wrote a manifesto saying that all the key qualities of a good and creative builder architect, were not formally testable. The only way to know was to learn by apprenticeship working in a company which was doing real projects, where the person could demonstrate their aptitude for learning (you could only learn by doing) or quickly show that they lacked the artistic, technical, engineering, financial, service, and humanistic aptitudes needed to become a good architect. But the university "qualification" thing gained supremacy and then you got buildings which looked like concrete brutalist monsters which people were expected to live in whilst the architects were giving themselves awards.

      Besides, most people don't really understand themselves, or how their group works, because humans are largely operating in intuitive unconscious modes, so the thought that you can "test" someone in the space of 15 mins is just self delusion. Yes people come to conclusions but they are largely down to who has the best intuition. But then people may confuse what they did consciously (we asked these clever questions) with what they did unconsciously (we sensed that our team likes more empathy or ambition or tribal values or whatever... and we picked up this person had more empathy or ambition or tribal values or ... (insert other innumerable unknown unconscious qualities)).

      I think the point is, these tests are not really tests, they're just a way to start a conversation. And what people conclude is more about, did the person play along with our silly tests, because we are intuitively looking for compliance and professionalism, or because we are actually looking for people who show some independence, or people who show some intuitive grasp of what unwritten codes to follow regarding which interests are really being served, and so on, plus whatever else.

    149. Re:Perhaps a better method... by TheRaven64 · · Score: 1

      If you answered that, I'd then ask you on what kinds of data set it would be appropriate to use your favourite language's built-in sort and on which it wouldn't as the follow up, and I'd ask you to justify your answer. For example, on a three-element array in a critical path for performance, calling a built-in sort function is almost always wrong (though not necessarily in C++, where the standard library version may be inlined). Other non-toy languages usually document the asymptotic complexity of their built-in algorithms and so even if you don't know what the exact algorithm is, you can find out. If you know that everything in the array is an integer between 1 and 10, for example, then you can perform the sort in linear time, whereas the built-in sort is probably n log(n).

      One of the most important qualities in a programmer is understanding that there is almost never a good one-size-fits-all solution, though in many cases there's a good-enough off-the-shelf solution.

      --
      I am TheRaven on Soylent News
    150. Re:Perhaps a better method... by bytesex · · Score: 3, Informative

      Because you should have used a < instead of a >. Jesus.

      --
      Religion is what happens when nature strikes and groupthink goes wrong.
    151. Re:Perhaps a better method... by Opportunist · · Score: 1

      Doesn't matter. It's an imperative language. What else is there to know?

      In today's environment I am not looking for someone who knows a language, I know someone who knows how to program. That entails that he can adapt to different languages. I'm sorry, but it seems you're not who we're looking for.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    152. Re:Perhaps a better method... by Viol8 · · Score: 1

      Randomly swapping elements until you get the result you want isn't much less efficient than a bubble sort. The latter has no use whatsoever other than as a demonstration of how not to sort.

    153. Re:Perhaps a better method... by Opportunist · · Score: 1

      Definition "works": Does what was obviously the intention.

      Yes, I know there is ancient production code in every project that does nothing sensible because it's been patched and patched and patched until you end up with two branches of an if clause that do exactly the same but nobody has the guts to simply get rid of it and instead maintains both branches, painstakingly putting every change in both branches. Yes, those things exist.

      Assume they don't when you go to a job interview.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    154. Re: Perhaps a better method... by Viol8 · · Score: 1

      A number of sorting functions use different sorts depending on the size of the list because some sorts are much better at shorter lists - eg insertion sort - and others are better at longer ones, eg quick sort because their overheads are too high for short lists. And then you have shell sort which seems averagely good for pretty much anything.

    155. Re: Perhaps a better method... by fisted · · Score: 1

      So O(log n) (finding the insertion point) and then O(n) shifting the remainder of an array combined in your world gives O(n^2)? The fuck?

    156. Re: Perhaps a better method... by Frankzy · · Score: 1

      Where do i sign?

    157. Re: Perhaps a better method... by Hognoxious · · Score: 3, Funny

      It's perl, so there's probably a pragma that reverses the meaning of the signs because one guy had a reason once.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    158. Re:Perhaps a better method... by Hognoxious · · Score: 1

      Because will run into is in the future tense and he doesn't have a time machine.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    159. Re:Perhaps a better method... by Hognoxious · · Score: 1

      I use bash a fair bit and I'm a lazy bastard, so I like tricks and shortcuts. I rarely find anything on SO that works first time without tweaking.

      So I hope nobody's blindly copying and pasting stuff into medical or avionic applications, but I wouldn't be surprised if somebody is.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    160. Re:Perhaps a better method... by jabuzz · · Score: 1

      There is a simple reason for that. Any programming done on a CS course completes in a fraction of second no matter how inefficient it is. Where any programming done on a physics course will generally run for hours and if you give me more computing power I just make my simulation more realistic and it still runs for hours. Consequently I care about efficiency because if I get it wrong my simulation might take days instead of hours. Alternatively my simulation might take days and getting it wrong means it takes months.

      Further the very best will most likely have done a course in numerical analysis. Anyone using Euler's method, Newton-Raphson or Gaussian elimination should be taken out the back and given a good beating with a clue stick before being allowed to code again.

      Put another way if you don't know why a step size of 0.1 is a disaster waiting to happen step away from the keyboard.

    161. Re: Perhaps a better method... by Spazmania · · Score: 1

      O(n) to add one entry. O(n^2) to add n entries.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    162. Re:Perhaps a better method... by AchilleTalon · · Score: 1

      I was once asked in an interview to write on paper a C program to solve sudoku (I even had to check the spelling I wrote soduku) while I just don't know this game and have absolutely no interest in it and the job was for a Perl programmer.

      --
      Achille Talon
      Hop!
    163. Re:Perhaps a better method... by jittles · · Score: 1

      Sounds like a recruiter. No one actualy wanting to hire a good candidate would say "please memorize stuff in advance for the questions I'm going to ask you." All you're going to get is someone who can memorize stuff. It's already too hard to distinguish between someone who knows stuff from someone who crammed the night before. However recruiters on the other hand want the commision, so they're going to cheat all the time to make sure the mediocre candidate they found gets the job...

      That was a LinkedIn Employee in their HR department who sent that email, from a LinkedIn email address. Something they send to all candidates prior to an interview, or at least at that period in time it was.

    164. Re:Perhaps a better method... by AmiMoJo · · Score: 1

      CS grads would just use list.Reverse() and spend their time worrying about the higher level architecture and usability.

      Some people argue that this is bad, that programmers should understand how linked lists work and not just how to use them. But then we would have a lot less software and it would cost a lot more. It might not be the absolute best software it could possibly be, but it is functional and solves a problem.

      I'm an EE, I can reverse a linked list, but I recognize that the CS guys still do a lot of useful work despite this handicap.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    165. Re:Perhaps a better method... by AmiMoJo · · Score: 1

      Wouldn't it be easier for all involved to look at their past work and have them talk you through it?

      You can get a good idea of their thought process from the way they describe it, and if they claim that there were no problems you know they are lying. It's a much better test, you can see how they perform in the real world, solving issues that often involve both technical aspects and business decisions.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    166. Re:Perhaps a better method... by jeremyp · · Score: 1

      Apart from the language mismatch, why do you think that is unfair? Asking people questions so that you understand the problem you are trying to model is a fundamental part of programming. If anything, the question is unfair on people who do know Sudoku because they do not get to demonstrate that part of their skill set to the interviewer.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    167. Re: Perhaps a better method... by jafiwam · · Score: 1

      These interviewing techniques seem to be geared toward the eidetic memory or brute-force memorization crowd common in the H1-B type worker.

      Deliberately designed to make "qualified applicants" rare in the less-apt to take a low salary section of applicants.

      The folks that memorized programming technique books will sail right through these questions.

    168. Re:Perhaps a better method... by jandersen · · Score: 1

      The point of that is to see you implement a relatively simple algorithm, not for you to make something perfect.

      Possibly, but the point people are trying to get at is that designing algorithms is not really what being a good developer is about. Most algorithms and design patterns have already been designed and exist in a standard library or catalogue somewhere; a good engineer (including SW engineer) is somebody who knows enough about the existing tools and techniques to be able to choose the right ones on which to base the structure they are building, whether this happens to be a building, a bridge or a computer program. If all you can think of asking a candidate about is algorithms, then you probably shouldn't be conducting the interview in the first place. A much bette rscenario would be to get them to talk about a project they know well from their background, and see what problems they identified and what they took into consideration in solving them. Or if that isn't an option, give them a problem you know well, and talk about how they would go about solving it - but it has to be something that looks and feels like a real-world problem. Asking people about technical minutiae is at best hit and miss; you may or may not know what "Dense Linear Algebra" or "Backtrack Branch and Bound" is off the top of your head (I don't - I just picked them at random from http://parlab.eecs.berkeley.ed...), but you can certainly look them up and learn to use them quickly enough.

    169. Re:Perhaps a better method... by mysidia · · Score: 1

      Because will run into is in the future tense and he doesn't have a time machine.

      No.... The suggestion is a technical interviewer, if they're expecting to make a test -- Should present such a problem and ask the Engineer to solve that. Give them an hour, let them try to use network resources and fail, rather than deny the use of network resources. It's actually more likely to be interesting, what progress a candidate makes.

      By the way: If it is a Problem with no solution on Stack overflow, And it is not obvious and solvable just by knowing the basics of the programming language at hand, Then the Architect or senior Designers (Who should know the language capabilities and have more of a CS background than the coders or software engineers) have failed to do an important part of their job, so the SE could rightly contact the Designer and get a clarification/update regarding, "When you say this function needs to do X.... what basic algorithm steps are to be used to accomplish X ? .

      If you're unable to find a meaningful problem whose answer is Not on the net; then that makes it a hypothetical theory that such thing exists, And a fairly unrealistic one at that. These are the kinds of problems engineers need a reasonable timeframe and all tools at their disposal to attack; Net resources ARE still useful, and pertinent, even if you would not find the answer to the exact question. The reality is that there is no such thing as "First principals" complicated problems can be broken down, or the engineer will remember a problem similar to a sub-problem of what is at hand and look the similar one up, then use that as a starting point to facilitate efficiently and effectively solving the problem at hand.

      It's not a good test of an engineer's abilities to cramp their creative style and artificially limit what tools they can use to "The tools limited by what some other engineer or academic's personal opinion is about how the thought process should work like or by what some unqualified third party thinks the engineer should need", And if things are so elaborate there's nothing remotely similar to the whole problem on Stackoverflow.... then it's not something you solve in 10 minutes on a whiteboard.

      In fact, Whiteboards are too limiting and mainly for creative folks, and many engineers find a Whiteboard not an effective place to solve a technical problem; A fat notebook with plenty of paper to jot down all pertinent facts works much better.

      If the problem is so unique, that makes Network resources and Team collaboration even More critical in developing a good solution.

    170. Re:Perhaps a better method... by Chelloveck · · Score: 1

      The point of that is to see you implement a relatively simple algorithm, not for you to make something perfect.

      Exactly this. We ask candidates to code a simple function. It's not to see if they know some trivia or if they can place all the semicolons correctly, it's to see if they understand basic programming concepts. Once they get the basic code down, then the interview can start. What's the algorithmic complexity? How does it handle edge cases? How does it handle malformed input? Does it scale? How would you test it?

      Yeah, we know you're never going to actually code a toy problem like this on the job. But we only have an hour or two to explain the problem, have you code it, and discuss your solution. We don't have time to have you code anything non-trivial.

      Later, when we finally got enough budget for me to be on the other side of the table, I was shocked at how many then recent CS grads (early 2Ks) failed at both.

      Tell me about it. I've been to on-campus career fairs where by the end of the day I just want to say, "Pick a language. Write Hello, World." Because I've talked to graduating seniors who couldn't do it! Literally, they could not code Hello, World in the language of their choice. WTF, people? What have you been doing for the past four years?

      I've been in the industry for just over 25 years. I've worked for start-ups and I've worked for mega-corps. My current gig has by far the best group of programmers I've ever worked with. I attribute this to our interview process, including the coding portion. No apologies for it. When done right it really works.

      --
      Chelloveck
      I give up on debugging. From now on, SIGSEGV is a feature.
    171. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      And yet my point remains - "cut-n-paste via google" coders probably have huge gaps in their knowledge, so they will be the first to be replaced by AI, within the next decade. They're also time wasters. And they probably can't figure out 3 different ways to do the same thing, and then pick the optimal one for the situation (because the first solution is rarely the best).

      They won't actually know why something does what it does, just that "I found it on the net and it works." Good luck modifying it.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    172. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      Pushing AI much, are you?

      You must have missed this a week ago. Also, this. Cut-n-paste coders with no real insight will be the first against the wall, along with their bosses, and the hr droids. They will not be missed.

      One consequence will be removing the bullsh*t "hour of code" for school kids - something that most of us here recognize as stupid. Another will be killing off the SJWs who are platforming on the evils of the tech world, which in reality are no worse than anywhere else (it's a mess everywhere - and you can be damn sure SJWs aren't going to fix it*).

      *For those who believe otherwise, wake up and look at the facts.

      Training is the most popular initiative to increase workplace diversity, according to a study of 829 tech and non-tech private companies over 31 years. Four in 10 companies offered bias training in 2002. Yet training had “no positive effects in the average workplace,” the study found.

      The numbers of women in computing have taken a nose dive for over two decades. Data from the American Association for University Women (2015) and WebCASPAR (2015).

      Diversity efforts have been especially futile in the tech sector. The percentage of women among US tech workers has steadily declined over the past two decades, for instance, now standing at 26%.

      The field is toxic for both sexes - it's become more and more of a dead end where you'd better have a backup plan when you're perceived as "too old to code", or you're hosed. It's easier for women to leave because the sexism and gender bias give an additional incentive not to "tough it out" - it's one more straw on the proverbial camel's back - but men are also getting their lives turned to sh*t by the crappy bosses who think that "beatings will continue until creativity improves" actually works.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    173. Re:Perhaps a better method... by asylumx · · Score: 1

      Candidates are welcome to decline that work if they don't think the terms are reasonable.

    174. Re:Perhaps a better method... by ath1901 · · Score: 1

      Yes! The point of the test should be to see an example of problem solving. Not to check for static knowledge like "yes, I have heard that name before and memorised the meaning.".

      For example:
      You: Write an algorithm to sort a list of names.
      [Candidate writes down some simple sort or uses std::sort]
      You: Well done. The list of names has now grown a lot and your sort algorithm is a bottleneck. Can you make it faster? Discuss.

      The first questions shows they know at least a bare minimum of programming, The second question shows if they can solve a simple "realistic" problem by taking the given constraints into consideration.

      Also, a candidate who writes a recursive bucket sort after the first question fails by overcomplicating things.

    175. Re:Perhaps a better method... by BarbaraHudson · · Score: 1
      And it's not like companies will actually even need to keep such capability in-house - they'll be able to rent it, same as IBM is renting Watson to replace office workers in Japan

      A future in which human workers are replaced by machines is about to become a reality at an insurance firm in Japan, where more than 30 employees are being laid off and replaced with an artificial intelligence system that can calculate payouts to policyholders.

      Fukoku Mutual Life Insurance believes it will increase productivity by 30% and see a return on its investment in less than two years. The firm said it would save about 140m yen (£1m) a year after the 200m yen (£1.4m) AI system is installed this month. Maintaining it will cost about 15m yen (£100k) a year.

      The move is unlikely to be welcomed, however, by 34 employees who will be made redundant by the end of March.

      So, once the initial cost is covered (in 2 years), it will only cost $300 a month per employee replaced. That's like having wage slaves working for $1.50 an hour. There's no way for humans to compete with that.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    176. Re:Perhaps a better method... by adosch · · Score: 1

      Wow, there is someone I can relate to on /. for a change without being troll-raped and keyboard-outwitted.

      I couldn't agree more with getting the first two points out of the way in an interview. Regardless of intellect, exposure, industry or experience, who wants to work with someone you're to all hate on a team? Team mental health far outweighs having that on your team any day IMHO.

      Secondly, I had a similar experience in a job interview where I was asked to write out map reduce in pure python program structure (yes, that means including __name__ == '__main__' with full passable arguments, on a white board). I said almost as similar to you, "I can do it, but I'm sure to flub a few things here that my brains relies on with my IDE, not to mention, I'd just use the built-ins map() and reduce() vs. re-inventing the wheel and sacrificing efficiency in my algorithm."

      I wasn't really offended or turned-off by the idea, sometimes I just think it's if you can talk-the-talk, can I figure out that you can even sort-of walk-the-walk and not just buzz-phrase repeating and 2 months into the job, you can't do it? But I think most of these people fall into that hard-on egotistical I-know-more-than-you shit and do me, that's like seeing who's dad could win in a fight in 3rd grade. I'm past it in a professional environment when everyone can bring shit to the table.

    177. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      Problem is, HR people work for the company, not the employee, so it's not in their best interest to be fair in administering benefits, and their idea of "keeping everything legal" is covering the company's ass from lawsuits brought by wronged employees. A union can be a great equalizer.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    178. Re:Perhaps a better method... by i_ate_god · · Score: 1

      the problem with your code example is formatting. If the code was well formatted, then you would realise what the actual error(s) are.

      --
      I'm god, but it's a bit of a drag really...
    179. Re:Perhaps a better method... by asylumx · · Score: 1

      The colored marbles question I know is very simple and is not statistical. "You have a jar with three colors of marbles. You can't see the marbles until you take them out of the jar. How many do you have to pull out of the jar to guarantee you have at least two of the same color?"

      The question is to help me understand if you know how to look at the worst case scenario. There are three colors of marbles. The worst case is that you pick one of each color as the first 3, therefore the 4th must be the same as one of the first 3. I've gotten answers ranging from 2 to 27 to this question, and some who said it can't be solved because you don't know how many total marbles there are.

      I'm not certain this is the question you're referring to, but if it is and you're approaching it as a statistical problem rather than logical, that's exactly the problem I'm trying to uncover by asking the question.

      YMMV -- other interviewers may actually care about the answer and not how you got there (which I think is dumb), or you may be thinking of a different colored marbles in a jar question -- but the above is my experience on both sides of the table. Also, I sure hope this isn't the only question they ask in the interview. I have a whole list of questions that test various thought processes and for most of them, it's not the answer that matters, it's how you approached the problem and how easily you gave up (or not) that matters.

    180. Re: Perhaps a better method... by BarbaraHudson · · Score: 2

      But won't shill trolls be replaced by AI even sooner?

      They already have. The most prolific one on slashdot goes by the nym "Anonymous Coward." There are ongoing bot wars on twitter, facebook, and even wikipedia.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    181. Re:Perhaps a better method... by Cederic · · Score: 1

      I have too, but I'm still going to tell someone at interview that I'm going to re-use the existing proven code and not build them a whole new system from the firmware up.

      Unless the job is writing the firmware.

    182. Re:Perhaps a better method... by number6x · · Score: 1

      There’s no obfuscated Perl contest because it’s pointless. —Jeff Polk

      Are you sure you are supposed to use a < instead of a >?

      What if the specifications say

      • " Print the line: "this is the header of the output" on the first line.
      • " Execute a for loop that doesn't produce any output.
      • " Print the line: "where are the entries?" on the last line.

      If that is what is wanted, then the code works perfectly.

      It is perl after all. Just because there is a lot of extraneous code that seems to do nothing, or seems to function unexpectedly, does not it doesn't work. I mean if you write perl that is plain and obvious to understate you are not following the style guide.

    183. Re:Perhaps a better method... by Megane · · Score: 1

      Seriously? Aside from the two basic problems (not everyone knows what sudoku is, and asking for C code in an interview for a Perl job), the biggest one is, what the fuck, I've spent much time trying to make a sudoku solver and it's not something you can do in the time of an interview, or the space of a handwritten page, unless, I suppose, they expect you to do the lame exhaustive search version because they don't care about inefficient code -- and people here are complaining about bubble sort? (I was trying to do the pattern recognition style, which can get really involved.)

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    184. Re:Perhaps a better method... by Megane · · Score: 1

      If all you can think of asking a candidate about is algorithms

      Did you even read my comment? It's not about the fucking algorithm, it's how they write the code, especially under the pressure of half a dozen people (the potential future co-workers) watching them. (which is why you're having them do it on a whiteboard, so everyone can watch) Bubble sort is trivial enough that even if you don't remember it, you should be able to stumble on it with hints, which the interviewer should be giving.

      A much bette rscenario would be to get them to talk about a project they know well from their background

      And yet you still wouldn't know if they could code their way out of a wet paper bag. Having been involved in a few of these interviews as one of the "future co-workers", it is scary how pathetic some of these people are at coding.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    185. Re:Perhaps a better method... by JoeMerchant · · Score: 1

      I mean, Jesus, I use container classes that come with sort methods - choose the appropriate container for the dataset and use case, and who-the-f-cares how the efficient sort for that is actually implemented. I also use open source libraries, so if I really cared, I could dig in and see it, but in 15 years of using these libraries, I never have cared that much.

      I've done plenty of algorithm optimizations, I've made PhDs look and feel stupid (which, by the way kiddies, is funny when you're their boss, tragic when they are your boss) by optimizing their algorithms that used to take all night to run on massive multicore server racks and making them run in 15 minutes on a dual core laptop. And, I've never, ever dug into the libraries to even see what kind of sorts they use on their container classes.

      I trust the geeks who provide that level of the system for me, just as they trust the compiler/optimizer layer, which in-turn trusts the chipset pipelining and caching layer. It's good to have a general idea of how these various layers work - optimizing for cache misses was a key component in that 1000x speedup trick, but could I spout out an implementation of any of these lower layers from memory on a whiteboard? Not even if I had to in an Immigration interrogation.

    186. Re:Perhaps a better method... by Actually,+I+do+RTFA · · Score: 1

      If the "friends" are always available and willing to help, then I don't care

      The friends are likely to be actual friends, who already have jobs, and who answer the questions so their friend seems competent.

      --
      Your ad here. Ask me how!
    187. Re:Perhaps a better method... by pr0fessor · · Score: 1

      I'm not a software engineer... however posing a problem and asking for possible solutions is exactly what an interviewer should be doing as apposed to asking for a specific implementation of one of many existing solutions which you may or may not be familiar with.

    188. Re:Perhaps a better method... by dave420 · · Score: 1

      Relying on what is "obviously intended" is a recipe for disaster :) There are many ways to make that code work with just a tweak or two here and there, producing all kinds of output. Any single one of those (or even none of them) might be the intended functionality - it's up to the person who is requesting this work to define what they mean by "work".

    189. Re:Perhaps a better method... by Opportunist · · Score: 1

      We are talking about an effin' interview example. If you start splitting hairs here, I don't want to hire you based on this.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    190. Re:Perhaps a better method... by h4ck7h3p14n37 · · Score: 1

      And these are people who claim to be experienced software engineers.

      I'm curious, what was the educational background of these candidates? Were they self-taught, or did they just attend poor schools? From what I remember of college (mid to late 90's), basic data structures, sorting algorithms and complexity were handled in the second C.S. course.

    191. Re:Perhaps a better method... by phorm · · Score: 1

      Even their DNA confirms they are related.

      Might also have something to do with Japan invading Korea, raping a bunch of Korean women and keeping sex slaves etc.

      But I'm not sure what DNA has to do with language in this case...?

    192. Re:Perhaps a better method... by phorm · · Score: 1

      I had something similar but it was basically a contract job. I got paid for the contract work and then it became a full time position afterwards.

    193. Re:Perhaps a better method... by OhPlz · · Score: 1

      You assigned the work, not the candidate. If they want to bring a portfolio of work in with them, they can. A waste of time is phone screens, multi-round interviews, and now work that you don't think is work. You are not an effective interviewer.

    194. Re:Perhaps a better method... by OhPlz · · Score: 1

      And if it wasn't mentioned up front, you've now wasted their time and yours.

    195. Re:Perhaps a better method... by SoftwareArtist · · Score: 1

      You just demonstrated my point. There's no such thing as "the fastest possible way". Is your data uniformly distributed over a fixed range? If so, you can use a bucket sort to process it in O(n) time. But if the distribution is non-uniform, a bucket sort can be very slow. Maybe your input data is partially sorted. If so, some algorithms will take advantage of that to sort it faster and others won't. Did you ever think to wonder whether the sort function is multithreaded? Probably not, because if you're already using multiple threads at a higher level, that would just slow things down. But if you aren't, that could speed things up a lot.

      This is a great example of the law of leaky abstractions. In most cases, just calling the framework's sort function is the best thing to do. Except that every now and then, it isn't. A good software engineer understands that. They know the framework provides an abstraction, and that abstraction sometimes breaks down, and they can deal with it when it does. Even if they don't know all the low level details, they know enough to know what questions to ask.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    196. Re:Perhaps a better method... by AK+Marc · · Score: 1

      I've not used Radix, but looking at it, it looks to be an implementation of a selection sort. It's just slightly more efficient because it's tuned to the way computers count. You don't need to look at the whole number to know that 1xx is larger than 1. It's longer, so it must be larger, even without actually knowing the number.

    197. Re:Perhaps a better method... by tibit · · Score: 1

      Yes, but only if the spec is for it to output the entries. Perhaps it shouldn't. Assuming the "obvious" can be pretty wrong.

      --
      A successful API design takes a mixture of software design and pedagogy.
    198. Re:Perhaps a better method... by AK+Marc · · Score: 1

      "When would you select a recursive sort over an iterative one?"

      Does that cover most of your questions, without really touching on the sorts themselves?

    199. Re:Perhaps a better method... by HornWumpus · · Score: 1

      Most cut and paste code jobs could be done by an old school 'code wizard'. But their aren't enough good programmers to write the wizards. Also having too many of those and it turns into a problem of knowing which one to apply.

      I'm not worried about AI. After it fails to produce a working automatic car expectations will return to earth. People will stop calling CAS tools AI.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    200. Re:Perhaps a better method... by tibit · · Score: 1

      I think it's a particular state of mind where you expect to be able to forget the basics. I personally don't find this state of mind to be all that appealing. It's like if a concert pianist forgot all of their music theory, because for performance you don't really care about it. But then it kinda sucks if you're a great concert pianist who superbly plays very technically demanding music, yet is unable to harmonize a simple melody during a show-and-tell with some kids. Yes, it's great that you can put design and implement a scalable architecture for a big system of some sort, but it kinda sucks if you can't do the basics. It's as if an electrical engineer forgot an inductor's constitutive equation, having an excuse that they deal with fancy control systems all the time and haven't used any inductors in ages. It smells of functional illiteracy to me. Or at least I try to keep my basics refreshed to some extent, as a conscious effort where I spend an hour or two every week re-reading the fundamentals just to keep them fresh.

      --
      A successful API design takes a mixture of software design and pedagogy.
    201. Re:Perhaps a better method... by AK+Marc · · Score: 1

      Yeah, I believe I said this before. The only similarity they have is that Japanese borrowed a bunch of words/glyphs from Chinese and then called them "Kanji". It's not that much different than English borrowing words from French or Sanskrit, except that in Japanese, all they borrowed was the glyphs and the meaning of the word, while coming up with their own, different pronunciation.

      The implication that they used the kanji as they came up with the sounds is the opposite of how all languages work. Spoken precedes the writen. So japanese would have had a spoken word for "sky". Then would have stolen the Chinese word for "sky" for writing it down. Or, would have had thousands of spoken words, and no written language, then, when coming up with a language, would have borrowed the "alphabet" from neighbors.

    202. Re:Perhaps a better method... by tibit · · Score: 1

      Write a complete, working program in any language of your choice that prints 'Hello World' ten times." That was also illuminating, in a horrifying sort of way. You wouldn't believe how many people struggled with that. We usually ended those interviews pretty quickly.

      Would you hire a pianist that can't point to a middle C on a standard piano keyboard? Because that's the equivalent of what's asked in the interview you speak of. At that point you don't really care if perhaps they can play all the scales very well - you can't trust the completeness of the internal framework of knowledge they use. People who don't truly understand what they're doing tend to divide and compartmentalize various areas of their knowledge instead of synthesizing a unified and interconnected body of knowledge. They learn all sorts of recipes to do various things, but have no idea how all of those things are interconnected, and what sort of mental framework unify them. It's as if a baker didn't realize that the yeast flatbread dough they deal with shares some common properties with the yeast-raised sheet fruitcake.

      --
      A successful API design takes a mixture of software design and pedagogy.
    203. Re:Perhaps a better method... by tibit · · Score: 1

      Yep - there must be some screening, you can't pretend to be a software developer who can't write some trivial code correctly in any of the languages they purport to know. Hello World is a good first step - if you can't do that, you have no place pretending to be a developer.

      --
      A successful API design takes a mixture of software design and pedagogy.
    204. Re:Perhaps a better method... by tibit · · Score: 1

      Yeah: Is it really so much to ask an experienced developer to prove that they can do code reviews? And if someone can't review code without an IDE, they're handicapped. The question remains whether their other qualities make such a handicap worthwhile. Perhaps, as a means of self-development, everyone should spend some time on StackOverflow and Code Review and learn to spot mistakes in what others do - iff they don't do code reviews in their current job.

      --
      A successful API design takes a mixture of software design and pedagogy.
    205. Re:Perhaps a better method... by tibit · · Score: 1

      Whereas in real life you'll often have to do things like this where first principles do matter and where you have to understand not only what the standard library is doing, but what are the side effects of the way it's doing it.

      --
      A successful API design takes a mixture of software design and pedagogy.
    206. Re:Perhaps a better method... by tibit · · Score: 1

      Leap Motion's C++ API is exemplary. They must do something right to produce code that good.

      --
      A successful API design takes a mixture of software design and pedagogy.
    207. Re:Perhaps a better method... by ghoul · · Score: 1

      I think you are creating a strawman. I am not advocating giving a problem which is not on Stackoverflow in an interview. In fact I am advocating against it as 1 hour is too little to attack anything non trivial.
      At the same time if I am giving something trivial I want to see the thought process rather than googling skills.
      Hence bubblesort and no net resources.
      I do not expect the person to remember bubblesort but its simple enough that it can be deduced from basic logic.
      And I am not looking for syntax. Heck everyone uses the IDE for that nowadays. Back in the day when we had multi hour builds run remotely it was critical not to have syntax errors. Now when you can compile in seconds at the click of a button syntax is not important, semantics still count btw

      --
      **Life is too short to be serious**
    208. Re:Perhaps a better method... by Shatrat · · Score: 1

      The definition of fraud requires deception. If you tell them up front, it's not fraud, it's just shitty. However, not any more shitty than unpaid internships.
      https://www.merriam-webster.co...

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    209. Re:Perhaps a better method... by jeffb+(2.718) · · Score: 1

      I solved a lot of problems, developed algorithms, designed, analysed and optimised systems, but never encountered riddles.

      Riddles are questions with simple answers which are deliberately obscure.

      I see that you don't work in Perl.

    210. Re:Perhaps a better method... by SoftwareArtist · · Score: 1

      They varied, but a lot were recent CS graduates.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    211. Re:Perhaps a better method... by suutar · · Score: 1

      That's garbage if the interviewer isn't actually wanting to see your mental processes. If they do want to, and aren't trying to see if you've memorized the same trivia, what's wrong with it?

    212. Re:Perhaps a better method... by Hognoxious · · Score: 1

      Why do you think a comma should be followed by a capital letter?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    213. Re:Perhaps a better method... by brantondaveperson · · Score: 1

      You wouldn't hire a cashier to have to look up how to do multiplication.

      Most places seem to, though.

    214. Re:Perhaps a better method... by mysidia · · Score: 1

      Why do you think a comma should be followed by a capital letter?

      Because I already have my degree, And I can follow WhAtEvEr CaPitAliZatIoN StYlE MoSt PLEASES mE.

    215. Re:Perhaps a better method... by Darinbob · · Score: 1

      I have considered that in the past, having part of the interview basically be a mock code review.

    216. Re:Perhaps a better method... by Darinbob · · Score: 1

      That's just goofy. Though I have worked places where the in-houe recruiters were contractors and they'd also do goofy things to get people past the interview, passing along resumes that clearly weren't a fit for the jobs, and so forth. In every way they'd act like they were paid on commision.

    217. Re:Perhaps a better method... by SuricouRaven · · Score: 1

      It can also be seen as a quicksort with a very inflexible choice of pivot, but it has certain very useful advantages. It sorts in place, and it's a stable sort.

    218. Re:Perhaps a better method... by doom · · Score: 1

      > The people we hire get bright lights in their eyes and get consumed by the moment, trying to understand. Got it, in addition to the CS cram courses I need acting lessons.

    219. Re:Perhaps a better method... by AK+Marc · · Score: 1

      I know how to optimize code but I am not going to waste time pre-optimizing code that hasn't already demonstrated a performance problem.

      So you are the reason that Windows 10 on a modern computer is slower than DOS on a 30 year old computer. So long as you are only looking at your small part of code, performance is irrelevant.

      I'd not hire you. I want someone who would consider efficiency with every task (as well as documentation and supportability, and all that). But ask someone in an interview direct questions where the applicant can guess what you want to hear, and you'll never get an honest answer.

    220. Re:Perhaps a better method... by AK+Marc · · Score: 1
      Software Engineers solve riddles all the time. Flunky programmers translate clear ideas into code.

      Think of it - before the Internet, people didn't do "cut-n-paste coding". You actually had to have large quantities of code between your ears and know what you were doing without asking world+dog. Man pages help, but only to describe the functions you're using, not actual implementation, which should always be left as an exercise to the reader, or you never learn.

      Yeah, it's not like there'd be standard I/O functions programmed in included libraries. And "man" in C was always quite useful. /sarcasm

      Pre Internet C programmers would build their own libraries (I know I had made and tuned search libraries for myself, saving time and increasing efficiency). You'd even share them, over the non-Internet networks, or sneakernet. Include your pre-built library, and use your favorite functions whenever you want.

    221. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      It's fraud if you have absolutely no intention of hiring them after, while they're under the impression it might lead to a job offer.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    222. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      If you used their answer in your app, then you damn well had better pay them. There are plenty of crappy online businesses that don't have anyone who can actually code, and use these "interviews" to fix their f*cked up products.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    223. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      Programmers have always built their own libraries - even in assembler, like I did. So what's your point? Mine is that nowadays most so-called programmers can't build proper libraries, they just grab code off the net and hope there's no edge cases.

      The man pages weren't designed for people who are "cut-n-paste" coders. So be sarcastic all you want - it shows that you don't understand their proper use and limitations.

      And no, if you're just "solving riddles", you're still just a flunky following orders. Because that's what flunkies do. Follow orders.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    224. Re:Perhaps a better method... by jittles · · Score: 1

      I know how to optimize code but I am not going to waste time pre-optimizing code that hasn't already demonstrated a performance problem.

      So you are the reason that Windows 10 on a modern computer is slower than DOS on a 30 year old computer. So long as you are only looking at your small part of code, performance is irrelevant. I'd not hire you. I want someone who would consider efficiency with every task (as well as documentation and supportability, and all that). But ask someone in an interview direct questions where the applicant can guess what you want to hear, and you'll never get an honest answer.

      So you want me to spend time working out the most efficient way to implement every single algorithm? Even an algorithm that only gets called once in a blue moon and runs for only a fraction of a second? Please. That's a waste of time. Do you have your guys go rewrite everything in assembler because you have one section of code that isn't performant? I worked on a problem once where a single library was causing the CPU usage to spike to 100% when the machine was at 1/4 of the load we expected it to handle. What did the manager decide to do? Rewrite that entire library in assembler. Two weeks after the assembly project was started, I spent an hour running the application through Vtune and found the exact bottleneck and fixed the performance problem in three hours. That included validating that the change I made did not cause any unforeseen problems (such as unexpected behavior or a security issue). The issue? A single function that was doing complex calculations thousands of times per second. Just optimizing that single function allowed the machine to handle twice the load we originally anticipated.

      If that's the kind of person you are, I would not hire you! Write a clean and simple function. Make sure it behaves as it expects and the entire system integrates the way you want it to. Then you can focus on efficiency, if necessary.

      The only kinds of pre-optimizations that are worth doing are those that you know certain operations are going to be expensive. I once worked on a project where I had to be able to do some basic geometry and trigonometry on the fly. The windows developers were calculating the sine and cosine of known angles every time they needed to perform a transformation. Obviously those kinds values never change and follow known patterns. I calculated the known angles and used constants and had far better performance with a single core PPC405 than our Windows team had with a Pentium Core 2 Duo.

    225. Re:Perhaps a better method... by AK+Marc · · Score: 1

      A shit programmer turns an idea into spaghetti code that works.
      A better programmer makes code that's clean.
      A better programmer makes code that's well documented (discussion into whether code can be "self documenting).
      A better programmer makes code that's efficient.

      A great programmer does all three at the same time, without slowing down. You have admitted that you aren't a great programmer, that's fine. Most aren't. But you don't have to be a defensive prick about it.

    226. Re:Perhaps a better method... by AK+Marc · · Score: 1
      "before the Internet, people didn't do "cut-n-paste coding".
      Programmers have always built their own libraries

      Then cut-and-pasted their own code base. Same as before, but you had to build a personal Wiki.

      And no, if you're just "solving riddles", you're still just a flunky following orders.

      "We need a new order system." [goes off and solves the riddle of what they want and how it'll integrate with the existing 100 systems]

      You are a fucking idiot. Solving "riddles" is the real work. A flunky just follows orders. CEOs follow orders from the Board of Directors. All CEOs are flunkies. You are a fucking idiot.

      The sarcasm you missed because you don't know what "man" is. Man is an OS command that holds no information on programming languages. Or did you not know that either?

    227. Re:Perhaps a better method... by jittles · · Score: 1

      A great programmer does all three at the same time, without slowing down. You have admitted that you aren't a great programmer, that's fine. Most aren't. But you don't have to be a defensive prick about it.

      I never claimed to be a superstar programmer. But I don't believe that you can write optimized code that is clean, and well documented without slowing down. You may use experience to know what things need to be optimized in advance but it takes careful planning to write perfectly optimized code 100% of the time. Careful planning is time consuming. The guys who have worked on software for NASA over the generations write a lot less code than people working on less critical projects. Anyone who knows proper design processes knows that kind of careful work is time consuming. It slows them down. Are you going to claim that all of the programmers at NASA are nothing like the superstars that you and your colleagues apparently are? I don't believe that I am the one being a prick.

    228. Re:Perhaps a better method... by BarbaraHudson · · Score: 1

      The sarcasm you missed because you don't know what "man" is. Man is an OS command that holds no information on programming languages. Or did you not know that either?

      Obviously you never used >man or programmed in c under any *nix."

      man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.

      Man 2 is for system calls. Man 3 is for library functions, lots of c stuff in both. And there are whole sections on other programming languages. Try man perl to see what comes up. LOTS of information for programming in perl. There's also interesting and informative sections on programming with bash, sed, awk, etc. With enough background, you don't need the internet - the man pages and source code should be enough, even for multi-threaded programming in c.

      As an example, the opening man page for perl. The man page for perl regular expressions.

      The man 2 intro page:

      Name

      intro - introduction to system calls

      Description

      Section 2 of the manual describes the Linux system calls. A system call is an entry point into the Linux kernel. Usually, system calls are not invoked directly: instead, most system calls have corresponding C library wrapper functions which perform the steps required (e.g., trapping to kernel mode) in order to invoke the system call. Thus, making a system call looks the same as invoking a normal library function.

      For a list of the Linux system calls, see syscalls(2).

      Return Value

      On error, most system calls return a negative error number (i.e., the negated value of one of the constants described in errno(3)). The C library wrapper hides this detail from the caller: when a system call returns a negative value, the wrapper copies the absolute value into the errno variable, and returns -1 as the return value of the wrapper.

      The value returned by a successful system call depends on the call. Many system calls return 0 on success, but some can return nonzero values from a successful call. The details are described in the individual manual pages.

      In some cases, the programmer must define a feature test macro in order to obtain the declaration of a system call from the header file specified in the man page SYNOPSIS section. (Where required, these feature test macros must be defined before including any header files.) In such cases, the required macro is described in the man page. For further information on feature test macros, see feature_test_macros(7).

      Conforming To

      Certain terms and abbreviations are used to indicate UNIX variants and standards to which calls in this section conform. See standards(7).

      Notes

      Calling directly

      In most cases, it is unnecessary to invoke a system call directly, but there are times when the Standard C library does not implement a nice wrapper function for you. In this case, the programmer must manually invoke the system call using syscall(2). Historically, this was also possible using one of the _syscall macros described in _syscall(2).

      Authors and copyright conditions

      Look at the header of the manual page source for the author(s) and copyright conditions. Note that these can be different from page to page! See Also

      _syscall(2), syscall(2), syscalls(2), errno(3), intro(3), capabilities(7), credentials(7), feature_test_macros(7), mq_overview(7), path_resolution(7), pipe(7), pty(7), sem_overview(7), shm_overview(7), signal(7), socket(7), standards(7), svipc(7), symlink(7), time(7)

      Referenced By

      hylafax-log(5),

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    229. Re:Perhaps a better method... by Stud+McPeckChest · · Score: 1

      If you "don't do riddles" then I actively don't want to hire you

      I love to program. I program during the day and go home in the evenings to program for fun in my preferred environment. While I don't trust myself to give a fair rating to my ability, several companies have entrusted me to interview developers, mentor new developers, perform code reviews, designs and write coding standards and best practices documents, I seem to have at least some competency at programming. Either that or several employers are in on a dark joke I am just not getting.

      While I adore solving programming problems, I loathe riddles. I have no patience whatsoever for riddles.

      I view riddles as a complete waste of time. I should add that that is my view of them. I know some people that love them. Awesome. I hate them with a passion because I view them as a complete waste of time. More often than not, the purpose of riddles I have seen is not to determine how clever or smart I am, but rather to show how clever and smart the person asking the riddle is.

      Programming problems (real-life ones that is -- I also hate unrealistically simplistic problems) are gorgeous things. When I solve a programming problem I am extremely proud of it because I accomplished something. I can hold it up and immediately see the fruits of my effort. I started at A, broke through a barrier and ended up at B. With riddles you end up exactly where you started, you just wasted some time. Even when I solve one my reaction is more akin to "Well, I am glad that's over with. Now I want to do something productive."

      I don't see riddles as a good measure of a person's ability to do anything other than memorize riddles. If I were in an interview I would much rather be given a practical development problem and asked to sketch out a solution. That can show how I think, what I know and the depth of my experience. Throw some people in there to discuss it with me and let me demonstrate how I handle interacting with people. That seems a far, far better judgment of my abilities as a programmer than riddles.

      If I met Gollum I would be so dead so fast.

      This isn't to say you are wrong -- if this works for you then that is great. I pose this as an opposite viewpoint to yours. Perhaps you may be missing out on some good developers.

    230. Re:Perhaps a better method... by Coren22 · · Score: 1

      You are setting $I to 0 in every iteration?

      I'm not a programmer, just curious about the answer.

      --
      APK likes to ask for responses to the same things over and over. Maybe he just likes the responses?
  2. I could not agree more by Anonymous Coward · · Score: 5, Insightful

    I have interviewed many people and I don't believe in trick questions. Programmers are not supposed to memorize every algorithm. They should understand how to attack and solve a problem. I was always more interested in their thought process rather than if they get the right answer. How they look at the problem is more important

    1. Re:I could not agree more by glenebob · · Score: 5, Insightful

      Isn't bubble sort a trick question?

      "Please implement bubble sort."
      "No. That would be stupid."
      "Good answer."

    2. Re:I could not agree more by CaptainDork · · Score: 5, Insightful

      Mod +1, Insightful

      --
      It little behooves the best of us to comment on the rest of us.
    3. Re:I could not agree more by vivian · · Score: 1

      This is also exactly what I look for when interviewing people. In an interview, if I ask someone about an algorithm, I want to know if they have a basic understanding of the principles or concepts behind it - not for them to write it out by hand. I do like to know what kinds of algorithms a candidate has some passing familiarity with, because it lets me know if they are aware of some of the many already discovered ways to solve certain classes of problems efficiently, instead of reinventing it from scratch.
        Likewise with maths. I don't need someone to write out code to convert eulers to quaternions - I just want to know if the candidate has a basic understanding of what they are and how they relate to 3d graphics, so they aren't completely in the deep end when they start looking at a bunch of code that uses them.
      The best use of the white board test is not to get someone to write lines of code - its to see how well they can communicate an idea or design concept to others in the team.

    4. Re:I could not agree more by SharpFang · · Score: 3, Insightful

      No, BubbleSort has perfectly valid application!

      if (x.length() < 4)
      {
            if(x[0]>x[1]) swap(x[0],x[1]);
            if(x[1]>x[2]) swap(x[1],x[2]);
            if(x[0]>x[1]) swap(x[0],x[1]);
      }
      else throw( wrongSortAlgorithmChoiceException );

      (yep, BubbleSort is about the fastest sort algorithm for tiny sets of data.)

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    5. Re:I could not agree more by Anonymous Coward · · Score: 5, Informative

      Bubble sort is also good for almost sorted datasets (pretty much n in this case). It's used for very fast broad phase collision detection where overlaps are detected during swaps. Since the sort happens every timestep, the endpoints stay pretty much sorted and the broad phase collection detection runs in near n time.

    6. Re:I could not agree more by markus · · Score: 5, Insightful

      I am not sure why you got downvoted.

      You are absolutely correct. There are cases where bubble sort is entirely applicable and in fact preferable. I don't require a candidate to have memorized the exact implementation of bubble sort (why would they; that is in fact something you can look up). But if a candidate can meaningfully discuss performance characteristics and explain why a certain algorithm would do better or worse in a specific situation, then that's exactly what I am looking for.

      It demonstrates a better understanding of how computers actually work. For some tasks, it is perfectly acceptable to treat a computer as a black box and to fully rely on very abstract high-level APIs. And there are in fact advantages to this approach. But there are plenty of problems where this results in horrible scalability problems that can never be fixed afterwards. And in this day and age, we need to know how to scale to millions or hundreds of millions of users. A software engineer who doesn't understand these concepts is not a good fit for the openings that I am looking to fill.

    7. Re:I could not agree more by markus · · Score: 1

      You left out a crucial bit of information though. If you actually did well in those two years and gained real-life experience, would you actually fail any of these parts? I honestly have no idea, but you should have included this detail.

      As is, your statement is similar to "spent four years in high-school, advancing every year; in the final exam, they test whether you can read, write, and multiply numbers; fail any of these three and you failed all of high-school." Yeah, duh, that would do it. It's a fundamental skill that anybody who actually performed as expected in the past few years would not even consider a challenge. It also is a basic requirement to do future tasks.

      Who knows, maybe CPA exams are different. Maybe they are all full of brain teasers and of rote memorization. But you didn't say either way.

    8. Re:I could not agree more by Tyler+Durden · · Score: 2

      But bubble sort is a horrendous sorting algorithm with no practical applications. You do not, under any circumstances, need to know it. Seriously, a first-timer making up their own sorting algorithm tends to rediscover selection sort, and that's better than bubble sort.

      --
      Happy people make bad consumers.
    9. Re:I could not agree more by AmiMoJo · · Score: 1

      Kinda depends. If you only have a small number of items to sort, if time/energy isn't an issue... Bubble sort is simple and easy, so why waste time doing anything more complex?

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    10. Re:I could not agree more by doom · · Score: 1

      There are cases where bubble sort is entirely applicable and in fact preferable.

      And if you spend even a minute thinking about whether you application fits one of those cases, the odds are good you've just wasted a minute, because the standard sort routine you have available is bound to perform well enough even if it's not "preferable". Premature optimization, you know?

      And you know, that code has *subroutine calls* to a "Swap" routine. That tosses aside any hypothetical performance advantage-- which you were crazy to worry about in the first place.

    11. Re:I could not agree more by lgw · · Score: 3, Insightful

      Bubble sort is also good for almost sorted datasets (pretty much n in this case). It's used for very fast broad phase collision detection where overlaps are detected during swaps. Since the sort happens every timestep, the endpoints stay pretty much sorted and the broad phase collection detection runs in near n time.

      This. I've used bubble sort before professionally. Need a hand-coded-in-assembly sort for a small, nearly-sorted data set? Bubble sort is the answer. You're trying to solve the problem at hand, not show off.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    12. Re:I could not agree more by gatkinso · · Score: 3, Insightful

      A thermostat displaying the last 30 days by high temp, bubble sort is fine, and is easily fit into a few bytes in firmware.

      --
      I am very small, utmostly microscopic.
    13. Re:I could not agree more by lgw · · Score: 1

      I often ask candidates to walk me through "any sorting mechanism"

      List<Integer> sortSomeNumbers(List<Integer> unsorted) {
          return new ArrayList(unsorted).sort(Comparator.naturalOrder());
      }

      There you go, a stable, finely optimized, and well-tested sort, as would be used in any professional setting.

      If you want a more interesting answer, ask a more interesting question.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    14. Re:I could not agree more by gosand · · Score: 2

      Trick questions are great - not to get a right answer, but to just see how they answer the question.
      I have interviewed many people in my career as a manager, from developers to QA to project managers.

      One thing I always try to do is gauge their responses. I ask candidates to tell me about a time they failed, that they really screwed up.
      It is surprising how many people give some non-answer because they think you want to hear that they don't screw up. I love when people tell me a really good one, all the better if they seem to enjoy telling it. I am not hiring robots or infallible people. When getting interviewers together after the interview, one of the worst things to hear is "I couldn't get any real answers out of them." I would rather hear from candidates "I don't know, I'd probably Google that" than someone trying to bullshit me.

      I love it when people say they have experience on Unix. "Vi or emacs?" I had one guy say "vi" with zero hesitation. If they look at me with a blank stare, I explain what vi and emacs are, and then their real level of experience comes out.

      --

      My beliefs do not require that you agree with them.

    15. Re:I could not agree more by jedidiah · · Score: 1

      Bubble sort is something that should stick in your head like mental debris simply because you should have been exposed to it as a computer science student. It's like any number of other things from the standard curriculum that "smart people" seem to be ignorant of.

      It's more along the lines of did you go to school for this? Did you attend class? Did you actually pay attention?

      If you've forgotten everything you've ever been taught in the life just what value do you think you bring to any team?

      --
      A Pirate and a Puritan look the same on a balance sheet.
    16. Re:I could not agree more by PRMan · · Score: 1

      At my current job, the reviewer asked me how I would implement a Graphics Fill algorithm. I said, "I wouldn't. I would call the Windows API because that's already written and tested and would get done in hardware."

      He was actually surprised that Fill is in hardware. Anyway, I still wrote the algorithm anyway, but I think he was really pleased with the answer because it showed how I thought about the problem.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    17. Re:I could not agree more by glenebob · · Score: 1

      Bubble sort and linked lists are not in the same category.

      You need to know about bubble sort in the sense that you need to know it exists and should never be written. It's a bit like syphilis.

      Linked lists actually have practical uses.

    18. Re:I could not agree more by x0ra · · Score: 1

      Then I fire up Google and search for a lib implementing the functionality. Can we please stop re-inventing the wheel ? You'll not be paying be $75 an hour to re-do the obvious. If you still insist... fuck you. I don't want to waste my time here. Been there done that, goodbye.

    19. Re:I could not agree more by x0ra · · Score: 1

      Which is BS. 6 months ago, I was full time on a NAT implementation, now, I can barely remember how it works.

    20. Re:I could not agree more by SharpFang · · Score: 2

      That subroutine will be implemented at inline. And the compiler will reduce it to a single CPU instruction.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    21. Re:I could not agree more by dwpro · · Score: 1

      Unless there's a long interview process, it's important to try and find out as much about an individual as fast as possible. Thus, within a small battery of questions one needs to find out: how do they think about problems, how do they handle pressure, what do they do when they don't know the answer. I know it sucks to be in such an interview, but I can see the merits of it. I think we as programmers often take it personally when we don't know all the answers.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    22. Re:I could not agree more by Austerity+Empowers · · Score: 1

      I've been asked to implement bubblesort, by a processor design team, in verilog. I haven't done bubblesort since HS while learning examples of slow sorts.

      I passed the interview, not because I had memorized this algorithm (which is certainly irrelevant to my career and the job I was applying for), because I reinvented bubblesort on the fly in pseudocode. The interviewer was willing to entertain my speculation about what bubblesort meant, he just wanted to watch me flail around.

      I'm fairly certain he couldn't care less about bubblesort, he wanted to give me a problem and watch me solve it, what kind of questions I asked and what mistakes I made. Then he wanted to critique my solution and see how I handled his critique.

      It's very hard to interview technical people, different people have different philosophies. Plenty of people will point to the exhaustive list of experience on their resume, which is meaningless since you can spend a lot of years doing absolutely nothing. Others will point to their degrees, which is meaningless since even a degree from an accredited university only means you took some required courses and the professor gave you a passing grade. Fundamentally we are there to solve problems though, so you should be trying to find a way to gauge problem solving.

      My objections to bubblesort is that it's a well defined algorithm and people may get stuck on implementing it in some canonical way. Reversing a linked list is a better question, if you're going to go that route (although well trod and certainly H1B prep schools teach it by now). The question should take common knowledge from your field and basic problem solving. You should not be asking problems that require real brainpower, the interviewee is nervous and under-pressure in bad ways and not likely going to respond optimally.

      The real problem with these tough interviews is that mostly they're being used to justify the lack of qualified people in the country. Turn down enough natives and HR starts suppling well coached shills from abroad, who once you get them turn out not to be very good, but knew quite well what they were to be asked.

    23. Re:I could not agree more by Zmobie · · Score: 1

      Everyone should also remember that Bubble sort is actually one of the best sorts if you need limited spatial complexity. Embedded system will still use this assuming the dataset won't get too large.

    24. Re:I could not agree more by Tyler+Durden · · Score: 1

      Sorting something that has been sorted previously and is most likely still sorted? Best choice.

      Errrr... no. Insertion sort would kill it in this case. The only case I've heard of where bubble sort is preferrable would be when random access to sorting elements is an issue.

      --
      Happy people make bad consumers.
    25. Re:I could not agree more by BarbaraHudson · · Score: 1

      Slashdot does not allow the less than greater than on the (int).

      You mean like this: (<int>)?

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    26. Re:I could not agree more by SuricouRaven · · Score: 1

      Almost no. There is one tiny, tiny niche in which bubble sort might be a good choice: If the data is very close to being sorted already. Especially if memory is tight. I've never actually encountered that situation, but it could happen.

    27. Re:I could not agree more by Tyler+Durden · · Score: 1

      Sorry, but I still don't see how this would be faster than insertion sort in this case. With bubble sort you first go through all n elements to bubble up the largest of them. If it's sorted you go through them all and nothing is moved. Then do the same for n-1 elements, then n-2, etc. until you're done.

      With insertion sort you insert the 2nd element into a list of 1. It's already sorted, so nothing happens. Move to the 3rd element to insert into the list of 2. 2nd element is already less than 3 so, again, nothing to do. And so on until you do nothing starting at the nth element. Bubble sort version has n^2 steps (times some constant) when it's already sorted. Insertion has just n times constant.

      --
      Happy people make bad consumers.
    28. Re:I could not agree more by SharpFang · · Score: 1

      yup, me bad

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    29. Re:I could not agree more by serviscope_minor · · Score: 4, Interesting

      But bubble sort is a horrendous sorting algorithm with no practical applications.

      I heard this one once. You have a bunch of straight lines that go from x=0 to x=1 and start and finish at various points on the y axis. Naturally some lines cross. Start with the lines ordered by their y coordinates at x=0. Then replace the y coordinates with the value at x=1. If you then bubble sort them to get them in the correct order, every exchange corresponds to an intersection of the lines.

      So, if you want to find the intersections, I don't believe there is a more efficient way of doing it (proof needed!). Bubble sort has a particularly large number of exchanges even for an O(N^2) sorting algorithm, but you can't escape that cost in this case since that many intersections exist.

      Fun fact.

      So, if you're doing something with line intersections then there is a use for bubble sort.

      So, there is like ONE practical use for bubble sort in some obscure use cases. Taa-daa!

      --
      SJW n. One who posts facts.
    30. Re:I could not agree more by Pentium100 · · Score: 1

      "Vi or emacs?"

      Would "nano" be an acceptable answer?

    31. Re:I could not agree more by alexo · · Score: 1

      Slashdot does not allow the less than greater than on the (int).

      Like this?

      [C++] std::list<int> iList;
      [Java] List<Integer> iList = new ArrayList<>();

      Use &lt; for the opening angle brackets.

    32. Re:I could not agree more by Actually,+I+do+RTFA · · Score: 1

      No, it has fewer instructions, but this algorithm fucks the cache right up. First you copy the four values to registers, then do the sort on the register values and one CPU, then output them. Otherwise, the compiler will flush your data back with each swap in case another CPU needs it.

      (Only applies to multiprocessor systems)

      --
      Your ad here. Ask me how!
    33. Re:I could not agree more by gosand · · Score: 1

      Yes - it would show they knew what the hell I was talking about at least. :)

      I used to ask "what shell do you prefer?" (bash/ksh/csh/sh) but I think bash has pretty much taken over.
      If they have Linux on there I can usually ask a few basic questions and know right away how much they used it. Lately it's just been some introductory course in school or they used it to run sql queries or something like that.

      --

      My beliefs do not require that you agree with them.

    34. Re:I could not agree more by Tyler+Durden · · Score: 1

      No moves in memory happen with either bubble or insertion sort. The difference is the number of comparisons, which also count towards N. With bubble sort on a sorted list the numbers of comparisons, and thus steps, are O(N^2). With insertion sort for the same list the comparisons (also without moves) are O(N).

      --
      Happy people make bad consumers.
    35. Re:I could not agree more by Tyler+Durden · · Score: 1

      My bad. Unlike what I said earlier the running time for bubble sort is O(N) for an already sorted list. However, I was correct that insertion sort is still better in the case of sorting such a list. See here.

      --
      Happy people make bad consumers.
    36. Re:I could not agree more by Tyler+Durden · · Score: 1

      Not inserting - insertion sort. Reading more about this insertion sort and bubble sort would perform exactly the same on an already sorted list; they'd basically be doing the exact same thing. On a list that is nearly sorted, insertion sort tends to do better as well. See the Performance section on the Wikipedia entry to bubble sort for details.

      --
      Happy people make bad consumers.
    37. Re:I could not agree more by CaptainDork · · Score: 1

      Back when Moby Dick was a minnow (ca. 1980) there was an article in 80 Microcomputing magazine about bubble sort.

      I wrote it in BASIC and the project was extremely useful, amazing, and fun, for a hobbyist working to grok the programming idea.

      --
      It little behooves the best of us to comment on the rest of us.
    38. Re:I could not agree more by Darinbob · · Score: 1

      Please sort this array of N numbers using any method you like except by calling a library routine. Not a trick question. Want to see if you can swap numbers in an aray, or if you're deathly afraid of writing code, unfamiliar with how actual coding works, can you think about the problem in a coherent way, and when you're doing we'll ask you about some lines.

      On the job you will likely do something somewhat similar; not a sort maybe but you will have to write code without falling back on a library, or have to debug the library itself when it has bugs, or have to think about something you haven't done before and figure out how to do it.

    39. Re:I could not agree more by Darinbob · · Score: 1

      The purpose of the question is not about having someone join the team so that they can implement bubblesort. Granted, it's odd to ask about a specific sorting method as opposed to implementing any sort that's reasonable for a small set of numbers. Now the advanced question is how to sort a million numbers when you only have enough RAM to hold 100 numbers at a time. Is that a trick question? It's similar to some problems that actually come up on the job and eventually there is something that needs to be solved that isn't already on google.

    40. Re:I could not agree more by Darinbob · · Score: 1

      People who taboo against premature optimization tend to never optimize, ever. But optimization inevitably ends up as something that's required just for scalability issues. Ok, so don't write bubble sort now, but maybe it's good to use it sometime and somewhere when you discover that the library's sort is a piece of crap and people are using it inside of nesting loops and the customers are bitching about how the software is slow. I have often seen cases where projects screech to a halt and they have to figure out how to improve performance. I've been on multiple projects where power up time takes too long and this has risen to a priority problem to solve. People need to stop treating optimization like anathema.

    41. Re:I could not agree more by Darinbob · · Score: 1

      You probably still should have gone to college. For one, it increases your pay over time. Maybe not for the early jobs but eventually those without a degree hit a ceiling, not just for promotions but for pay increases. I've been at places where the upper pay tiers can only go to those with degrees or advanced degrees. I had one early boss who was pushed out the door eventually for not having the degree.

    42. Re:I could not agree more by AaronW · · Score: 1

      Now try that in C in an embedded environment without the qsort function.

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    43. Re:I could not agree more by AaronW · · Score: 1

      The problem I've run into as an interviewer is that a lot of candidates lie or pad their resumes. I have also seen names on patents that don't belong there (and one case where my name should have been on there). As an interviewee I've never been afraid to say when I don't know something. It's far better than trying to BS your way through an interview.

      I wouldn't hire you either if you answered like that. If something is on your resume I'm going to ask about it.

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    44. Re:I could not agree more by Ihlosi · · Score: 1
      Isn't bubble sort a trick question?

      What if you only want to sort five or seven values and want an algorithm that's understandable even for non-programmer folks?

    45. Re:I could not agree more by Yaztromo · · Score: 1

      And if you spend even a minute thinking about whether you application fits one of those cases, the odds are good you've just wasted a minute, because the standard sort routine you have available is bound to perform well enough even if it's not "preferable". Premature optimization, you know?

      It's hardly premature optimization if you're working in a memory-constrained embedded environment. Libraries are often not practical in such environments.

      And you know, that code has *subroutine calls* to a "Swap" routine. That tosses aside any hypothetical performance advantage-- which you were crazy to worry about in the first place.

      "swap" could be a macro, such as a C function-like macro which gets converted to inline code. Or the swap procedure could be flagged as "inline". I'd hardly be making criticisms if you don't know this.

      Yaz

    46. Re:I could not agree more by gnasher719 · · Score: 1

      But bubble sort is a horrendous sorting algorithm with no practical applications. You do not, under any circumstances, need to know it. Seriously, a first-timer making up their own sorting algorithm tends to rediscover selection sort, and that's better than bubble sort.

      Actually, Bubblesort can be the best sorting algorithm, if you have an array that was sorted, but the sort key has changed _slightly_ so everything is _near_ its correct place. Let's say you have 1000 shares sorted by yesterday's share price, and you want to sort them by today's share price.

    47. Re:I could not agree more by gnasher719 · · Score: 1

      Sorry, but I still don't see how this would be faster than insertion sort in this case. With bubble sort you first go through all n elements to bubble up the largest of them. If it's sorted you go through them all and nothing is moved. Then do the same for n-1 elements, then n-2, etc. until you're done.

      I think I might the implicit assumption that you wouldn't implement it like a complete idiot, but that you would stop once it's sorted. Seems that assumption was wrong.

    48. Re:I could not agree more by Ihlosi · · Score: 1
      Actually, Bubblesort can be the best sorting algorithm,

      It can also be competitive if the number of elements to be sorted is small (say, three), or if you're not interested in a completely sorted list, but in the median value.

    49. Re:I could not agree more by TheRaven64 · · Score: 1

      It probably won't be done in hardware on a modern GPU. It's been over a decade since that kind of thing has been accelerated with custom hardware. It might be implemented as a pixel shader program that the driver will run, but it's often faster to do it on the CPU than the GPU because you do a lot more than a single fill when drawing a 2D scene and the overhead of copying the data back for the step that you're not offloading to the GPU is more than the overhead of doing everything on the CPU and shipping the final result to the GPU. On-die GPUs are starting to change this, however, and so my answer will also be wrong in a couple of years.

      --
      I am TheRaven on Soylent News
    50. Re:I could not agree more by Ihlosi · · Score: 1
      That saves one swap operation compared to bubble sort, but has a more complex control flow in step 1 since there are three possible outcomes when finding the smallest of 3 items.

      Depending on the architecture (features like register count, conditional execution and the cost of branching influence this), it may be faster than bubble sort:

      1. If item1 < item2, swap them.
      2. if item2 < item3, swap them.
      3. if item1 < item2, swap them.

    51. Re:I could not agree more by Ihlosi · · Score: 1
      Might look a bit weird, but having only two conditional instructions after each if statement allows the use of the ITT instruction on ARMv7m instead of having to use a branch and the associated pipeline refill.

      void BubbleSortThree(u_32 *p_in)
      {
      u_32 tmp1, tmp2, tmp3;
      u_32 swap;

      tmp1 = p_in[0];
      tmp2 = p_in[1];
      tmp3 = p_in[2];

      swap = tmp1;
      if(tmp1 < tmp2)
      {
      tmp1 = tmp2;
      tmp2 = swap;
      }

      swap = tmp2;
      if(tmp2 < tmp3)
      {
      tmp2 = tmp3;
      tmp3 = swap;
      }

      swap = tmp1;
      if(tmp1 < tmp2)
      {
      tmp1 = tmp2;
      tmp2 = swap;
      }

      p_in[0] = tmp1;
      p_in[1] = tmp2;
      p_in[2] = tmp3;
      }

    52. Re:I could not agree more by Yunzil · · Score: 1

      But bubble sort is a horrendous sorting algorithm with no practical applications.
      For homework, do some research and then tell us why your post was wrong.

      (Hint: Big-O doesn't tell the whole story)

    53. Re:I could not agree more by lgw · · Score: 1

      Bubble sort FTW!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    54. Re:I could not agree more by tibit · · Score: 1

      It all depends. I know that if you call any of the GDI's filled polygon/filled shape APIs, it's all at the very least tessellated in software, and then perhaps if the hardware is quick enough to render a bunch of triangles as an instantaneous sort of a thing, it will pass it on, but I doubt that this has been done for any recent hardware. It requires very low overhead in starting a "job" on the hardware and is mostly suited for old style of graphics hardware that can fill a list of triangles without invoking the entire 3D pipeline (if it has any). It used to be a thing in the late 90s and early 00s. For 99%+ of common display architectures out there now, GDI is not really accelerated outside of blitting stuff.

      If you use any graphics library that doesn't depend on GDI, you can probably do better even in software rasterization since you have enough knowledge to split the job and parallelize it. Or you simply pass it as a draw list to DirectX and let that do it orders of magnitude faster - but again, GDI doesn't do it since its stateful architecture is really a poor fit to modern asynchronous rendering pipelines.

      --
      A successful API design takes a mixture of software design and pedagogy.
    55. Re:I could not agree more by tibit · · Score: 1

      You ask them to play something that's easily gamed, you get good game players :/ Garbage in - garbage out.

      --
      A successful API design takes a mixture of software design and pedagogy.
    56. Re:I could not agree more by serviscope_minor · · Score: 1

      There are sweepline algorithms that do intersection testing in n log n time. Thdey are a pit tricky to get right.

      There are at most O(N^2) intersections though, so you can't beat quadratic worst cases.

      --
      SJW n. One who posts facts.
    57. Re:I could not agree more by houghi · · Score: 1

      That does not only work for IT. I have interviewed people and I wanted to see how they would react in a certain situation. I told them what they could expect. I told them also that I was not interested in correct procedures,

      Most people started with "I do not know the procedures" and I explained again that I was not interested in the procedures. Just to give me an answer how they THOUGHT it COULD go.

      --
      Don't fight for your country, if your country does not fight for you.
    58. Re:I could not agree more by doom · · Score: 1

      "swap" could be a macro, such as a C function-like macro which gets converted to inline code. Or the swap procedure could be flagged as "inline".

      Sure, the point is taken. (It's been a few decades since I've needed to program in C).

      I'd hardly be making criticisms if you don't know this.

      But this point is emphatically rejected. The question at hand is whether the CS curriculum is somehow fundamental, or a repository of knowledge concerning sub-specialties that most of us don't need to know.

      I certainly don't know every wrinkle of this sub-specialty, since the cases where it's actually of use are actually rather tightly constrained.

    59. Re:I could not agree more by AK+Marc · · Score: 1
      O(1) best case and fixed (zero) memory use make it one of the best. That you can't think of any reason to use it doesn't mean it has no use.

      selection sort, and that's better than bubble sort.

      Doesn't selection sort use the same number of comparisions as bubble sort, but just saves swaps? A selection sort, sorting from top down, will, at the end of pass one, have the largest value in the last spot, and a bubble sort will have the same. They both then have an "unsorted" list, aside from a single fixed value. Repeat, with the same results. What measure has selection sort as "better"? Is it simply from fewer swaps? The worst case of selection sort is the same as the best case, so it'd predictable. Is that the advantage? Because Bubble Sort's worst case is the same as Selection's best case, and the BS best case is better than SS.

    60. Re:I could not agree more by lordmage · · Score: 1

      Try something else to get your answer. Consider that a good developer can write a bubble sort decently enough, a Great developer leverages Industry Standard Coding and finishes faster with code from someone else that is free. Simply put, A great developer will have long since forgotten how to do a Bubble sort because the developer will use something like "sorted()" in python or other things. If need be, a great developer will resurrect the knowledge by leveraging the great books of knowledge (Google, Man, stackexchange, friends, etc). Computer Science half-life knowledge was at one time 18 months. A bubble sort is probably last used in CS 101, meaning even a 4 year CS grad should have better techniques to get a "sort" out. qsort() was always my favorite.

      Asking basic coding library functions now is like asking the following:

      if (x == 2) y = 3;
      How does the if actually work? Show me the assembly code to do so.

      Better question is: "You develop in Linux, according to your resume, how do you find out what commands can assist you in profiling your new code?"
      Learn how they solve before you toss them for not knowing a useless bit of coding.. you are TRYING to get someone who can do your JOB, not show they did go to CS 101 years ago.

      --
      I can program myself out of a Hello World Contest!!
  3. Of course they have to play the diversity card by fiver-hoo · · Score: 1, Insightful

    It's not just enough to state that this is a poor interviewing technique and not a fantastic metric to determine job performance. They have to make it about minorities and diversity.

    1. Re:Of course they have to play the diversity card by computational+super · · Score: 1

      Unfortunately, that's the only sort of thing that gets taken seriously in 2017.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    2. Re:Of course they have to play the diversity card by SharpFang · · Score: 1

      More accurately, hijack a news item and twist it to fit their cause.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    3. Re:Of course they have to play the diversity card by ruir · · Score: 1

      Tim Cook, is that you?

    4. Re:Of course they have to play the diversity card by Megane · · Score: 1

      Diversity? Yes, you need more Omega Mu questions in that interview.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  4. Google string length by Anonymous Coward · · Score: 1

    I work with so many programming languages and technologies that I often google simple things as well. I was feeling guilty for it, but after seeing this article I feel a little better.
    Thankfully, I haven't been in any "gimmicky" interviews where they look for such trivial knowledge. The way I sell myself is that I can solve problems for you and make you more successful. If the interviewer would rather hire someone who's good at answering language trivia and solving already-solved problems like bubble sort then by all means do so, and good luck!
    As for the word problems type interview questions, I really cannot be bothered. I can't say I've ever received a word problem like how do you get a fox and a sheep across a river in a real work setting. Again, you want someone who's good at that then hire them because I don't want to work somewhere with such misplaced values and/or poor interviewing skills. It shows me they don't know what's important to their company.

    1. Re:Google string length by markus · · Score: 1

      I can't say I've ever received a word problem like how do you get a fox and a sheep across a river in a real work setting.

      Funny you would say that :-) Yes, the actually brain teaser is pretty pointless. But this exact question happens to be the one that taught me how to learn about different graph traversal algorithms. Wow, that takes me back now. That was sometime in the 1980s.

      What it lacks for as a brain teaser, it can make up by being a wonderful introductory question to a more in-depth discussion about graph traversal, heuristics, big-O behavior, pathological worst-case scenarios, and overall engineering decisions that are made when designing complex data-driven applications. Of course, nobody should be talking about foxes and sheep after the first 60 seconds. It's an ice breaker; nothing more.

  5. SubjectsSuck by aardvarkjoe · · Score: 5, Insightful

    in other words, it doesn't help diversify the field with women, older people, and people of color.

    While there are some good reasons to dislike "code on a whiteboard" interviews, this is not one of them.

    --

    How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
    1. Re:SubjectsSuck by GuB-42 · · Score: 5, Funny

      It is always about whiteboards. Blackboards are never given a chance.
      There is no way such an environment could help diversity.

    2. Re:SubjectsSuck by computational+super · · Score: 1

      They should be coding on a "people of color" board.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    3. Re:SubjectsSuck by SuiteSisterMary · · Score: 1

      Let alone that poor, innocent, pure, virginal whiteboard, unsullied and untarnished, before a bunch of brutes come with their long, cylindrical, phallic markers, touching the whiteboard all over, leaving their marks, all over the poor thing, and finally, once they've used the whiteboard all they wanted, and left it there, marked up like some sort of property, what do they do? Brutally erase it all and leave it, naked and exposed, for the next time.

      Something something patriarchy.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
    4. Re:SubjectsSuck by thegarbz · · Score: 1

      I went through school at a time where blackboards were actively discriminated against. They replaced them all with white boards, white washing the school. They even replaced our learning management system Blackboard with something else.

      #blackboardsmatter

    5. Re:SubjectsSuck by NoSalt · · Score: 1

      While there are some good reasons to dislike "code on a whiteboard" interviews, this is not one of them.

      As a programmer who is not getting any younger, I wholeheartedly disagree with you.

    6. Re:SubjectsSuck by BarbaraHudson · · Score: 2

      Look at who is saying it, and it's easy to spot the stupidity

      Karla Monterroso, VP of programs for Code2040, an organization for black and Latino techies

      Created less than a year ago. "Oh, look, let's create jobs for ourselves by exploiting minorities in the name of diversity." By 2040, there won't be any techies, not in coding, not in networking, not in much of anything.

      Also, it recycles outdated content from 2015

      Our Entrepreneurs in Residence (EIRs) will spend a year launching a company as well as connecting communities of color to their local entrepreneurial ecosystem. This program will be piloted in three cities in 2015: Austin, Chicago, and Durham with partners Capitol Factory, 1871, and American Underground, respectively.

      Guess that didn't work out too well or they'd be bragging about it. And what a "diverse" bunch of minorities they cater to - young black women and young latino women. That's it. Men, older women, native American women, Asian women, Arab women, Inuit women, and their descendants are being openly discriminated by this group.

      So, "let's encourage diversity by creating another ghetto where people can't mix with others who aren't like them, and collect money doing it (see the "donate" button)."

      The CEO's latest tweet doesn't inspire confidence:

      this morning i accidentally put half a bagel that was hidden under cheese inside an english muffin and ate it for breakfast, a bread sando

      But I guess this is the latest business model for those who can't actually do tech but want to make money off it.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    7. Re:SubjectsSuck by BarbaraHudson · · Score: 1

      Don't forget the green boards - for the aliens. Undocumented Martians deserve some attention.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    8. Re:SubjectsSuck by Anonymous Coward · · Score: 1

      Are you trying to imply that sometimes it's the [whiner category]'s fault they didn't get the job and that there were better candidates who are not [whiner category]s ?!

      That maybe the [whiner category] should have studied taken more Computer Science courses and less [Whiner Category] Studies courses ?!

      That they should hang around with nerds fixing device drivers instead of going on [Whiner Category] against [Something] marches ?

      That makes you a disgusting [whiner category]-ist pig !

      NO PLATFORM !

    9. Re:SubjectsSuck by fluffernutter · · Score: 1

      I'll bet it was black markers. It's always black markers.

      --
      Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  6. I understand this is tough on older programmers... by glenebob · · Score: 1

    What does this have to do with women and people of color?

  7. Same by darkain · · Score: 5, Informative

    Hi, my name is Vince. I interviewed for Amazon, specifically for their PHP API for AWS development team. Despite an entire background of 10+ years of developing front-facing PHP APIs for other businesses, plus having a major part of my code available for public review on GitHub, I failed their interview process because they wanted me to write a specific type of searching and sorting algorithm, by hand, on white-board. This type of code would never have been used on the job, ever. Yet this is what they interview on. The job was to build a PHP API so PHP developers can call basic PHP functions, and the library would translate them over to HHTPS calls to AWS. All of the complex computing/searching/sorting is handled by the existing AWS services.

    1. Re:Same by xxxJonBoyxxx · · Score: 1

      >> background of 10+ years

      This worked against you. Experience means higher salary expectations, and coders whose brains still remember the NP and P bullshit from college are likelier to be cheaper. HR loves youth-leaning questions like these because they effectively screen out protected classes (old people in this case) with something that would look legit in discovery ("um...like...ANYONE in software should like totally know what NP and P sets are, your honor").

    2. Re:Same by NotARealUser · · Score: 2

      Hi, my name is Vince. I interviewed for Amazon, specifically for their PHP API for AWS development team. Despite an entire background of 10+ years of developing front-facing PHP APIs for other businesses, plus having a major part of my code available for public review on GitHub, I failed their interview process because they wanted me to write a specific type of searching and sorting algorithm, by hand, on white-board. This type of code would never have been used on the job, ever. Yet this is what they interview on. The job was to build a PHP API so PHP developers can call basic PHP functions, and the library would translate them over to HHTPS calls to AWS. All of the complex computing/searching/sorting is handled by the existing AWS services.

      Amazon did you a favor by not hiring you. Ending up there would have stressed you out beyond belief with lower pay and a toxic environment. I've not worked there myself, but known many who have, and you are better off without them.

    3. Re:Same by Registered+Coward+v2 · · Score: 4, Insightful

      Hi, my name is Vince. I interviewed for Amazon, specifically for their PHP API for AWS development team. Despite an entire background of 10+ years of developing front-facing PHP APIs for other businesses, plus having a major part of my code available for public review on GitHub, I failed their interview process because they wanted me to write a specific type of searching and sorting algorithm, by hand, on white-board. This type of code would never have been used on the job, ever. Yet this is what they interview on. The job was to build a PHP API so PHP developers can call basic PHP functions, and the library would translate them over to HHTPS calls to AWS. All of the complex computing/searching/sorting is handled by the existing AWS services.

      It's not just the coding side that is broken, most interviews are; at lest what I've seen from both sides. From my experience, what really counts is being able to answer yes to the question "Would I want to spend 8 hours sitting next to this person on an airplane seat?" I can read a resume and assume most of it is true or at least not overly hyped, verify it with a question or two and ask a question out of left field simply to see if you can think on your feet; but that doesn't really tell me if you can do the job, nor would 8 hours of grilling. If I think I can get along with you then I can help you learn the job assuming your resume is reasonably accurate in regards to your skill set; if you are an insufferable jerk than I really don't care how good you are, go make someone else's life miserable; life's too short and work hours too long to deal with you.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    4. Re:Same by doom · · Score: 1

      "... a question or two and ask a question out of left field ... " It doesn't have to be out of left field. I found in interviewing people who said they knew perl, most were obvious beginners. If I asked them to deal with a complex data-structure ("here's an array of hrefs, total up the fields called 'amount'") they would have trouble.

    5. Re:Same by doom · · Score: 1

      I can't tell you about Amazon, but I think this is all just noise, it's screening on affinity (ah, you know the same trivia I do!) rather than on competence. If it was at all useful for us to know low-level "algos" in any detail, we would all know them-- consequently, the only people who do know them have a background in Computer Science (which is dominated by a bunch of mathematicians who couldn't care less about "science", and rarely do much with computers).

      It's an article of faith that coding sorting algorithms from scratch is good for your soul (or something) but no one ever bothers to establish things like that (you'd need social scientists for that, not mathematicians). I'm not even sure that being able to deal with big-O notation matters all that much, in practice you notice your code doesn't scale because it's grindingly slow when you test it out.

    6. Re:Same by darkain · · Score: 3, Informative

      Its worse for me, because I did electronics BEFORE programming. I see a bunch of P's and N's and think they're talking transistors, not algorithms

    7. Re:Same by darkain · · Score: 1

      Oh trust me, this has exactly been my thought process too! My interview was right before the big public scandal about their toxic work environments. Considering the entire interview process (not just the one example posted), looking at it in retrospect, it was actually quite obvious how toxic their entire system is internally. I'm quite happy to not be apart of that team.

    8. Re:Same by AmiMoJo · · Score: 1

      I guess you were just not the kind of shitty memorize-everything-because-creative-thought-is-hard code monkey they were looking for. Luckily you dodged that bullet.

      I've heard enough horror stories about Amazon's interview process to know that it must be an awful place to work.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    9. Re:Same by jbolden · · Score: 1

      They were testing your computer science knowledge. Its not that they wanted you to write specific algorithms but they want you to know those specific algorithms and the differences between them.

    10. Re:Same by bad-badtz-maru · · Score: 1

      Good to know. I do a fair amount of API work with Fortune 100 companies. I recently received an email from an Amazon recruiter concerning a position in one of their API teams. I can't remember anything and have to look up my first name when people ask, so I'll skip this interview.

    11. Re:Same by micahraleigh · · Score: 1

      My buddy at MicroSoft said the same thing about it being more about avoiding false positives and pruning too many people out.

    12. Re:Same by PRMan · · Score: 1

      I was asked how I would make a linked list with pointers in C# by a bank I was interviewing for. I was like, "I wouldn't. I would use a generic List or Dictionary or Hashtable." He then said, "Well, what if you absolutely needed to?" I said, "Well, then I would use the built-in LinkedList and Queue and Stack." "They have those in C#?" "Yes, yes they do." I knew then instantly that while they still wanted me, I didn't want to work for a guy stuck in the 1980s.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    13. Re:Same by Anonymous Coward · · Score: 1

      Its worse for me, because I did electronics BEFORE programming. I see a bunch of P's and N's and think they're talking transistors, not algorithms

      The doping level is high in this one...

    14. Re:Same by BarbaraHudson · · Score: 1

      If it was at all useful for us to know low-level "algos" in any detail, we would all know them

      Which is what separates web monkeys and cut-n-paste poseurs from the real McCoy.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    15. Re:Same by Tablizer · · Score: 1

      not just the coding side...what really counts is being able to answer yes to the question "Would I want to spend 8 hours sitting next to this person on an airplane seat?"

      Indeed! Those who have hired me also tend to be similar to me. The downside of working with a clone is that I'm an asshole.

    16. Re:Same by dcooper_db9 · · Score: 1

      what really counts is being able to answer yes to the question "Would I want to spend 8 hours sitting next to this person on an airplane seat?"

      That's not at the top of my requirements. They have to be professional but they don't have to be friendly. I don't need to personally like someone to work with them.

      --
      I do not block ads. I do block third party scripts.
    17. Re:Same by tender-matser · · Score: 1

      in practice you notice your code doesn't scale because it's grindingly slow when you test it out.

      Do you test it for all possible inputs?

      There are a lot of things that run fine most of the time and then go into an exponential trip when confronted with some "unexpected" input. Take for instance the regexp implementation in perl, javascript and anything pcre-based -- absolutely horrible depth first implementation, easy to dos, unusable in any public facing setting. Or most hashtable implementations -- very easy to trick into putting all the stuff into the same bucket and degenerate into a linked list.

      The people who wrote that weren't necessarily idiots; they probably did a quick hack, found it useful and were happy with it, and by the time they noticed that it doesn't scale it was already too late

    18. Re:Same by Registered+Coward+v2 · · Score: 1

      what really counts is being able to answer yes to the question "Would I want to spend 8 hours sitting next to this person on an airplane seat?"

      That's not at the top of my requirements. They have to be professional but they don't have to be friendly. I don't need to personally like someone to work with them.

      It has nothing to do with liking them and everything to do with them not being a jerk and disrupting my team, causing me to spend inordinate amounts of time dealing with them. I'm not looking for a drinking buddy, I want someone who adds value to my team by bringing in new ideas, a different perspective and will work well with them. You can have differing viewpoints and disagree in a professional manner that helps solve or avoid problems; I actually want people who are willing to express their opinion and contribute ideas because that results in better outcomes. However, some people seem to have to be jerks and create hostile environments as a result. No matter how smart they are if they cause problems they are not worth it. I've dealt with too many people who think they are so good they can get away with being a jerk to bring such a person onboard.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    19. Re:Same by tibit · · Score: 1

      It's so dope :)

      --
      A successful API design takes a mixture of software design and pedagogy.
  8. I'll answer this one. by fahrbot-bot · · Score: 2, Insightful

    "Hello my name is Mike, I'm a GDE and lead at NY Times, I don't know what np complete means. Should I?"

    Hey Mike, I once worked for the NY Times Shared Services Center. And, generally, no.

    --
    It must have been something you assimilated. . . .
    1. Re:I'll answer this one. by RoscoeChicken · · Score: 1

      It epends. If you have a Masters degree in Computer Science, and you can't explain NP Complete, IMHO you have wasted a lot of time and money.

      Undergraduate degree? Its a cr*p shoot. Some programs require learning about P vs. NP, and some don't.

    2. Re:I'll answer this one. by luis_a_espinal · · Score: 1

      It epends. If you have a Masters degree in Computer Science, and you can't explain NP Complete, IMHO you have wasted a lot of time and money.

      Undergraduate degree? Its a cr*p shoot. Some programs require learning about P vs. NP, and some don't.

      ^^^ This. Similarly, I wouldn't recall how to implement a red/black tree or tarjan's algorithm.

      OTH, I would expect anyone with a CS background to implement bubble sort, quicksort, a bi-directional linked list, and a hash table without significant problems.

    3. Re:I'll answer this one. by luis_a_espinal · · Score: 1
      I'll add the following:

      David Heinemeier Hansson, a well-known programmer and the creator of the popular Ruby on Rails coding framework, started it when he tweeted, "Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles."

      I call bullshit on this. His background claims to have a BS in CS. There is no fucking way *not* to know bubble sort after getting a CS degree (unless in Denmark a CS degree is more like an IT or MIS degree, which is fair and understandable then.)

    4. Re:I'll answer this one. by markus · · Score: 1

      That's honestly a little sad to hear. I would consider an introduction to computability to be part of any first-semester curriculum in computer science. Now, if you only ever learned how to write code, but not how to understand algorithms, then that's a different skillset and a different education program. You wouldn't have learned about P vs. NP, but you also would not necessarily be a great fit for the positions that I try to fill. The CS programs that I am familiar with generally don't even offer classes on programming languages. That's something they expect students to pick up on their own. So, yes, computability is probably the very first thing you learn.

      No, I don't expect candidates to remember the intricate details of finite state vs. Turing machines, even if they technically learned that in their first month at school. And I don't need you to rigorously state what P vs. NP means and how to proof any of these assertions. Nobody needs this level of detail after having graduated. And if you are curious, you can always look up the Wikipedia page.

      But I want you to be familiar with the high-level concept. That actually does help on the job. And if you speak the same language (i.e. you actually have heard the word NP before and know how to use it in a conversation), that'll make it so much easier to talk to your future co-workers.

    5. Re:I'll answer this one. by avandesande · · Score: 1

      I vaguely remember having this in school around 1995 and would fail the question too.

      --
      love is just extroverted narcissism
    6. Re:I'll answer this one. by angel'o'sphere · · Score: 1

      Dude,

      I had CS too. 20 Years ago. And no, I can not write a bubble sort "out of my mind" on a whiteboard.
      However, I still remember "what bubble sort is" and can of course "reinvent one", but would need a bit more time, especially as doing it in a Debugger with a real language is so much faster.

      But, while was typing, this I slowly remember how it should look :D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:I'll answer this one. by lgw · · Score: 4, Insightful

      I probably learned about the difference between NP-complete and NP-hard 25 years ago. It hasn't come up since. Much is the academic stuff can be fun to study, it's useless in most jobs. The only algorithmic question that ever comes up in practice is "is it better then O(n^2)". In-memory efficiency so rarely matters.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    8. Re:I'll answer this one. by TheRaven64 · · Score: 1

      Asymptotic complexity comes up a lot if your code is taking untrusted input, because if an attacker can make your average-case-linear algorithm exhibit its worst case n^2 behaviour then you've created a DoS vulnerability.

      --
      I am TheRaven on Soylent News
    9. Re:I'll answer this one. by avandesande · · Score: 1

      I could probably figure it out too but doing it under pressure in interview with the expectation that you 'know' the algorithm is unrealistic.

      --
      love is just extroverted narcissism
  9. Methinks by Anonymous Coward · · Score: 2, Insightful

    Any "confession" along the lines that "hey, when I need to get the syntax of some specific function or language feature that I'm supposed to be proficient in, I have to google for it, look up the Open Group POSIX help page, check StackOverflow etc" is not really a confession. That's the way most of us work these days.

    1. Re:Methinks by sl149q · · Score: 1

      Agreed 100%. I work with C, C++, Objective C, Perl, Python, PHP on a regular basis. Far better to look something up to make sure I have the syntax right for today's coding language / problem.

    2. Re:Methinks by x0ra · · Score: 1

      but interviewers still expect you to know all API by heart, if not down to being able to know dark stuff introduced in a minor release.

  10. Sick of the trick questions on interviews by Anonymous Coward · · Score: 5, Insightful

    There's always that one guy on the interview team that would rather stroke his own ego by asking a "trick question". 100% of the time it will be either on an obscure function or feature of a language that may be used once in a career, or it will be so poorly worded as to be unrecognizable. I really don't believe that any other profession runs into this problem. With 40 years experience, an extensive resume, 100's of successful projects, I'm still treated like I graduated yesterday and am "tested" on what I know. It's insulting and companies need to stop. I'm at the point in my career that when the "trick question" person hits the white board, I ignore them and redirect the conversation back to the people asking real questions. If you are an interviewer you'll do yourself and the potential hire a much greater service by either presenting them with a challenge you've recently overcome or asking them to narrate one they've recently overcome.

    IOW - trick question guy, knock the shit off, you're annoying the rest of us. It is much more important to determine the prospects problem solving methods and skills than their fluency in the programming flavor of the month.

    1. Re:Sick of the trick questions on interviews by Hodr · · Score: 2

      With 40 years experience, an extensive resume, 100's of successful projects, I'm still treated like I graduated yesterday and am "tested" on what I know. It's insulting and companies need to stop.

      Funny, I have literally half that resume (20 years of successful projects) and I never get "tested" for interviews. Every interview I have is along the lines of "So Hodr, we heard about you from X who said you were a key player in the success of project Y. Let me tell you about all the wonderful benefits of working for us here at Z Corp."

    2. Re:Sick of the trick questions on interviews by AmiMoJo · · Score: 1

      If trick question guy is going to be your boss, it's best to leave at that point. Interviews are as much about figuring out if the company, your prospective boss and the people you will work with are suitable for you.

      If for some reason you still want to work there and you don't know the answer, you can always just say that and point out that given time you solved similar problems before.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    3. Re:Sick of the trick questions on interviews by lgw · · Score: 1

      With 40 years experience, an extensive resume, 100's of successful projects, I'm still treated like I graduated yesterday and am "tested" on what I know.

      Sorry, bub. I've interviewed too many people like you who could not write a line of code. I stopped looking at resumes 15 years ago - some shit you wrote about what you've done before, even on the remote chance it's honest, doesn't mean you can code.

      There are plenty of bad ways to do coding interviews, and as an industry we need to stop that shit. But there are good ways too, and they are necessary.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    4. Re:Sick of the trick questions on interviews by HornWumpus · · Score: 1

      Do enough interviews and they get a lot less stressful. It's a good reason to never stop interviewing. Sure you are wasting their time, but so what? You need the practice.

      Don't go muddying the waters in places you will actually want to work though, unless you might actually take the offer.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    5. Re:Sick of the trick questions on interviews by dargaud · · Score: 1

      As an embedded developer I've been asked to sit on interviews a few times. I usually ask one 'trick question': "what is a volatile in C". If they don't know, then I'm pretty sure they have never read a hardware register. And none ever answered. Obviously we ended up hiring the asshole with fascist and complotist views... Sigh...

      --
      Non-Linux Penguins ?
  11. The best interview coding question by Jeremi · · Score: 5, Insightful

    "Show me an example of a program that you wrote and are proud of"

    (and then go over the program with them to make sure they understand how it works and why they wrote it the way they did)

    The proof is in the pudding.

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
    1. Re:The best interview coding question by Infiniti2000 · · Score: 2

      Rebuttal: Only for stuff they owned or is now available as open source. The stuff I am most proud of is owned by a medical company and I can't show it to you. However, I would certainly be willing to talk you through it without showing you the code.

    2. Re:The best interview coding question by HornWumpus · · Score: 1

      Zip code isn't right either. Getting total sales tax rate is a tricky problem. Punt, use a web API and full address.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    3. Re:The best interview coding question by backwardsposter · · Score: 1

      I like the thought behind this. However, I haven't owned a piece of code I've written since college. Not something I'd be proud of, anyway.

    4. Re:The best interview coding question by Nothing2Chere · · Score: 1

      "Show me an example of a program that you wrote and are proud of"

      (and then go over the program with them to make sure they understand how it works and why they wrote it the way they did)

      This is how I got my last contracting gig at MS. They pointed to a couple of projects on my resume and listened as I explained the problem being solved, the analysis I did to decide on the solution, and the techniques I used to implement the solution. It was a small close-knit team, and the interview-questions games wasn't any part of it.

      n2ch

  12. Tech Coding Interview is more an audition by Anonymous Coward · · Score: 1

    I mentioned a failed interview to a musician friend. She smiled and said she understands completely. "An audition is very different from actually sitting in an orchestra pit and playing along with everyone else, even on opening night."

    I've taken that to heart whenever I get asked to write a script on the board during an interview. I get syntax wrong or forget something. But that's how I code scripts. Very rarely does something spring from my brain into a text editor at first sitting. I forget that obscure syntax of bash that will remove a string from a variable when you assign it using % or #. I'll forget the bones of getopts and go back to version I wrote a month ago.

    The good interviewers are looking for "how does he think?" The ones that are correcting my syntax or telling me "you could have done this with sort. There's an option for that." tend to be places where I'm probably not a fit. Especially when I point out that gnu coreutils' sort doesn't have that feature.

  13. Missing the Point of those Tests by Greyfox · · Score: 2, Insightful

    I did some interviews for a company I worked for a few years back, and my goal for those things wasn't so much to see if they could complete the problem successfully. My goal was to see if I thought the guy I was interviewing would work well with the team. I kept lowering the bar on the programming problem until it was a string reverse, which is just ridiculously simple. Even more so, I allowed the person to do it in the language they felt strongest in. For a couple of the OO scripting languages, that could be as easy as string.reverse(), and I would allowed it if anyone had ever said that. Even so, I was deliberately ambiguous about some things -- did I want the string reversed in place? Were there any error conditions I wanted returned, and should those be exceptions or return values? I had answers prepared, if any of them had ever asked me. I also had a very nice whiteboard, which they would almost to a person go up to and start crapping code onto, immediately. If they'd interacted with me and the whiteboard a bit before doing that, I would have actually stopped them before they'd written a single line of code.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  14. Not very effective, anyway by mcrbids · · Score: 2, Interesting

    I'm an employer. I've interviewed nearly everybody we employ at my company. And treating a hiring interview like a rote memory exam is a terrible way to qualify a potential developer hire!

    What do programmers actually do? Try testing that!

    We do "whiteboard style" for part of our interviews, but only to cover basic comprehension of algorithms. More than anything, we look for basic familiarity with logic structure, and the demonstrated ability to solve problems. Our coding section of our interview process is in the subject's language of choice, including pseudo code, and is "open book" - we want to see what happens when the dev runs into a problem they don't already know! (Critical test: can they come up with a working, supportable algorithm for a problem they don't yet already know an answer for?)

    After 20 years of programming experience, I STILL routinely look up the order of arguments for function calls via Google. Who cares to remember when Google has the answer in 0.10 seconds?

    Test what the devs will actually DO in an anticipated normal work day and make your decisions based on that.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:Not very effective, anyway by ooloorie · · Score: 1

      After 20 years of programming experience, I STILL routinely look up the order of arguments for function calls via Google. Who cares to remember when Google has the answer in 0.10 seconds?

      People aren't testing knowledge, they are testing familiarity. Let's say I want to hire a sales rep for Portland.

      Interviewer: "So you say you're from Portland?"

      Interviewee: "Lived in Old China Town for 10 years until last year."

      Interviewer: "Oh, isn't Rocking Frog Cafe near there?"

      Interviewee: "No, you're probably thinking Stumptown Coffee Roasters. Rocking Frog is on the other side of the river."

      Interviewer: "Thanks, you pass."

      I don't care about coffee shops in Portland, I'm trying to see whether you are actually from around there as you claim. And if you can't answer that question, I'm going to try some others. If you can't answer any of them, I might start having my doubts about your claim that you're from Portland.

    2. Re:Not very effective, anyway by phantomfive · · Score: 1

      What do programmers actually do? Try testing that!

      Once you get basic programming skill out of the way (which you seem to have done well), then in my experience it's more important to figure out if the programmer can self-manage. Are they going to get things done on time? Are they going to come at you with a bunch of excuses, or figure out a solution? Are they going to spend all their time surfing the net, like a kid? Most importantly, are they able to get things done, or do they need me to watch over them to ensure progress?

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Not very effective, anyway by erice · · Score: 1

      People aren't testing knowledge, they are testing familiarity. Let's say I want to hire a sales rep for Portland.

      Interviewer: "So you say you're from Portland?"

      Interviewee: "Lived in Old China Town for 10 years until last year."

      Interviewer: "Oh, isn't Rocking Frog Cafe near there?"

      Interviewee: "No, you're probably thinking Stumptown Coffee Roasters. Rocking Frog is on the other side of the river."

      Interviewer: "Thanks, you pass."

      I don't care about coffee shops in Portland, I'm trying to see whether you are actually from around there as you claim. And if you can't answer that question, I'm going to try some others. If you can't answer any of them, I might start having my doubts about your claim that you're from Portland.

      And what if the interviewee answered with: "Maybe? I don't drink coffee so I don't keep track of coffee shops" ?

      A lot of interviewers think they are testing for general familiarity but they are really testing against their own biases.

    4. Re:Not very effective, anyway by Greyfox · · Score: 1
      Yeah, we solve problems. Really they don't even need to be programming problems. I was watching a game reviewer play a puzzle game called "IO" on youtube a while back and watched him throwing himself at the wrong path for about 10 minutes before realizing that it wasn't working and trying something else. I realized that I'd actually learned quite a bit about how he solves problems by watching him, probably as much as I ever did from the programming assignment interview test.

      A lot of people say they google for API parameter order and such, and I do as well. But I really feel like we're using Google as a crutch -- you'd be surprised at how much you can remember when you don't have access to the internet. No matter how fast google is, your immediate memory cache is a good bit faster. I've found that if I work on a language for any length of time, I'll start remembering stuff like that for the classes and languages that I use the most, and can recall them instantly. That usually goes away within a couple months of not actively using those languages.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    5. Re:Not very effective, anyway by twebb72 · · Score: 1

      The more they talk about loving Voodoo Donuts, the more doubts I have about the claim that you're from Portland too

    6. Re:Not very effective, anyway by ooloorie · · Score: 1

      And what if the interviewee answered with: "Maybe? I don't drink coffee so I don't keep track of coffee shops" ?

      I explained why they asked you those questions. I didn't defend it as the best interview strategy.

      A lot of interviewers think they are testing for general familiarity but they are really testing against their own biases.

      Hiring and firing have become costly, so companies err on the side of caution.

  15. Really???? by ericm76903 · · Score: 1

    Look, as someone who acts as the interviewer, this sound whinny to me. If you cannot handle a simple logic flow for a problem, using pseudo code, then I would not recommend you to be hired. Pretty simple.

  16. Re:My sin by SharpFang · · Score: 2

    Sins, not fetishes.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  17. Re:CS Fundamentals are important by darkain · · Score: 4, Insightful

    Quick cheat sheets are important. Not everyone can memorize every single library function in every single language they use on a daily basis, even simple functions.

    Is it:
    strlen(string)
    len(string)
    length(string)
    count(string)
    string.len
    string.len()
    string.length
    string.length()
    or any number of other variations.

    As a developer, I'm sure most everyone knows the task they're trying to do (get the length of a string), but there are so many variations of the same function between libraries and languages, that it is often quicker and easier just to search which one is appropriate for the given language, than to simply type each one out and test the code to see which one doesn't bail on execution.

  18. I lived this another way ... by CaptainDork · · Score: 2

    ... I was interviewing a lady for a clerk job at Mobil Oil, where she'd be doing data entry.

    I was looking for:

    1.) Dedication to accuracy and detail
    2.) Willingness to work overtime
    3.) Ability to get along with others

    She was a single mom who was hungry to work; liked people; her children were almost grown, so she had the time.

    SHE FLUNKED THE GODDAM TYPEWRITER TEST!

    Typewriter? I told HR I didn't have a goddam typewriter -- test her keyboard skills.

    Nope.

    That was in the mid-Dilbert years at Corporation.

    --
    It little behooves the best of us to comment on the rest of us.
    1. Re:I lived this another way ... by Registered+Coward+v2 · · Score: 2, Funny

      ... I was interviewing a lady for a clerk job at Mobil Oil, where she'd be doing data entry.

      I was looking for:

      1.) Dedication to accuracy and detail 2.) Willingness to work overtime 3.) Ability to get along with others

      She was a single mom who was hungry to work; liked people; her children were almost grown, so she had the time.

      SHE FLUNKED THE GODDAM TYPEWRITER TEST!

      Typewriter? I told HR I didn't have a goddam typewriter -- test her keyboard skills.

      Nope.

      That was in the mid-Dilbert years at Corporation.

      You gotta love it when HR decides who you can hire. I once was asked to apply for a job at a company I was currently doing work for as a consultant. They had to post the job and HR decided I wasn't qualified enough, even though I was currently doing it, to forward my resume so the hiring manager couldn't offer me the job. As a result, I stayed on as a contractor at 1.5x the pay and they didn't hire anyone.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    2. Re:I lived this another way ... by RevDisk · · Score: 2

      Every time I've been in charge of hiring people, I firmly tell HR not to screen the resumes. If I really distrust HR, this is the first candidate I'm hiring at that company or randomly sampling, I set up a one-off email address and send in a barely qualified resume. If I get it, HR is following instructions. If I don't, I ask the VP of HR why his or her department is not following directions. They can schedule people, handle directions, do all the other grunt work.

      Initial screening bad resumes takes me seconds. Minutes if there's a huge stack. Sometimes completely 'unqualified' people catch my eye, sometimes not. It is my job and part of my responsibility to do the screening, because HR cannot know what I'm looking for. I'm virtually never look for a set list. I'm looking for the best fit for the position. Someone might have abilities or skills in areas I want, but don't have a budget for a full time position. Or a product we want to explore. Or a thousand other circumstances.

    3. Re:I lived this another way ... by thegarbz · · Score: 1

      At my engineering job we had HR provide us with Adobe questions to use at the interview. It was uni textbook question. It was very fun spending a day with qualifier engineers in our department arguing how the hell to do it or what the correct answer even was. Needless to say we told HR to stuff their questions and wroteour own.

    4. Re:I lived this another way ... by PJ6 · · Score: 1

      You gotta love it when HR decides who you can hire. I once was asked to apply for a job at a company I was currently doing work for as a consultant. They had to post the job and HR decided I wasn't qualified enough, even though I was currently doing it, to forward my resume so the hiring manager couldn't offer me the job. As a result, I stayed on as a contractor at 1.5x the pay and they didn't hire anyone.

      The reason sounds stupid but the overhead multiplier for a full-time employee is about 2.5 for skilled/tech work.

    5. Re:I lived this another way ... by Rande · · Score: 1

      Distressingly common for people to be told they aren't qualified to do the job that they've been doing for the past 2 years.

    6. Re:I lived this another way ... by Rande · · Score: 1

      Or they use the 'nice to have' skills as an absolute filter so that if an application doesn't have the exact set of TLAs, it gets filtered out and all you get are liars who have tailored their application to fit exactly.

    7. Re:I lived this another way ... by Registered+Coward+v2 · · Score: 1

      Distressingly common for people to be told they aren't qualified to do the job that they've been doing for the past 2 years.

      Yup, although my client wanted to hire me but HR turned out to be a roadblock.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    8. Re:I lived this another way ... by Registered+Coward+v2 · · Score: 1

      You gotta love it when HR decides who you can hire. I once was asked to apply for a job at a company I was currently doing work for as a consultant. They had to post the job and HR decided I wasn't qualified enough, even though I was currently doing it, to forward my resume so the hiring manager couldn't offer me the job. As a result, I stayed on as a contractor at 1.5x the pay and they didn't hire anyone.

      The reason sounds stupid but the overhead multiplier for a full-time employee is about 2.5 for skilled/tech work.

      I am not sure where yo get that multiplier, it seems a bit high. I've seen 50% to maybe 75% as the additional overhead. How did you come to 2.5? At any rate, once you tacked on the overhead cost my contracting company charged they were at about 2x.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    9. Re:I lived this another way ... by 91degrees · · Score: 1

      Surely there's still a multiplier for a contractor though, even if it is lower. They still need a desk and equipment.

    10. Re:I lived this another way ... by PJ6 · · Score: 1

      I am not sure where yo get that multiplier, it seems a bit high. I've seen 50% to maybe 75% as the additional overhead. How did you come to 2.5? At any rate, once you tacked on the overhead cost my contracting company charged they were at about 2x.

      Well that was for engineers, but that was a while ago. Maybe it's quite a bit lower now because everyone's cutting cost - like benefits, healthcare, and pensions.

      Yeah, I know... "pensions"... what are those.

  19. Hello, my name is Donald by TeknoHog · · Score: 5, Funny

    and I don't know what "truth" means. I look up things like "democracy" and "separation of powers". I don't do riddles.

    --
    Escher was the first MC and Giger invented the HR department.
    1. Re:Hello, my name is Donald by Anonymous Coward · · Score: 1

      and I don't know what "truth" means. I look up things like "democracy" and "separation of powers". I don't do riddles.

      The truth is, riddles are hard. Really, really hard. And who could have known how hard they were? Nobody! There's not one person who could have known how hard riddles are!

  20. What's so Special about an Algorithms Class by bartle · · Score: 3, Insightful

    These technical interview approaches aren't very good, in my opinion, because they basically assume that the beginning and end of all software development training happened in a second year algorithms class. Algorithms are very cool, I understand why people want to talk about them, but they represent a minority programming challenge in today's world.

    Speaking only for myself, in a given month of coding I may only have to consider which algorithms I should use once or twice. The rest of my time is spent on GUI design, communicating with coworkers, working on documentation, and switching between projects. Putting aside the value of algorithms in an interview, how can the interviewer ascertain all of my other software development skills if we spend 2 hours mapping trees on a white board? I would argue that they can't, and by asking technical questions about algorithms or brainteasers, they really aren't properly evaluating the skills of a professional software developer.

    1. Re:What's so Special about an Algorithms Class by HornWumpus · · Score: 1

      Remember, the quote is: 'Premature optimization is the root of all evil', not 'early', 'premature'.

      If you know something is computationally challenging, start by thinking it through and writing it somewhat efficiently, but readably. Don't just slop up everything, even the low tight parts.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    2. Re:What's so Special about an Algorithms Class by Cederic · · Score: 1

      Are you shitting me? On modern computers? Fuck no, a shitty bubble sort will happily churn through a few million randomised entries faster than a binary sort could handle 3000 back when I start programming professionally.

      The time gets lost on database lookups, on network calls, on marshalling/unmarshalling, on making unnecessary hits to storage because someone doesn't know how to cache.

      Algorithms? Sure, if you're dealing with terabytes of data. But seriously, just fucking write the code, put whatever the fuck you want inside the sort() function and come back and optimise it if you think it'll help later.

  21. No Notes by Jfetjunky · · Score: 3, Insightful

    This reminds me of one the anecdotes I picked up from one of my college engineering professors in regards to his philosophies on tests:

    "Would you fly in an airplane forcibly designed in one hour with no notes?"




    And before someone starts busting my balls, yes students should learn the underlying fundamental mechanics of the subject matter. It's more of a protest of the unnecessary aspect of memorizing the details that have no bearing on someone's understanding.

    1. Re:No Notes by doom · · Score: 1

      ... yes students should learn the underlying fundamental mechanics of the subject matter ...

      Well okay. It's too bad no one knows what those are.

      Software engineering: a collaborative social process engaged in by anti-social people.

    2. Re:No Notes by NoSalt · · Score: 1

      "Would you fly in an airplane forcibly designed in one hour with no notes?"

      I'm going to have to steal this, if you don't mind.

    3. Re:No Notes by Fire_Wraith · · Score: 1

      I had basically the same experience in college. "You're not here to memorize things, you're here to learn how to look them up as needed, and what to do with them when you find them."

      Rote memorization may have had more of a place in the past, where looking up information took significant amounts of time, because you'd have to go to reference books to find it, that you may or may not have on hand.

      Today things are vastly different, as I have the bulk of human knowledge and information moments away with a quick series of clicks. I do not need to memorize information, so much as I need to be able to know how/where to find it, and what to do with it when I do.

  22. Re:Do you have a better metric for Hiring? by darkain · · Score: 1

    "successful"? no. That's the job of marketing, not the quality of the developer.
    "functional"? yes. It should accomplish the task at hand given the parameters required.

    GitHub or other online repositories should be one of the highest value markers for any developer. There are other repos out there, but I also like GitHub because it tracks contributions other than just code, such as bug ports and general communication about development projects. It shows how well a person can document and address issues.

  23. Now hi-tech are companies the "old grognards" by Anonymous Coward · · Score: 5, Funny

    As a CS professor, I find the use of these kind of review processes kind of contradictory.

    In education, we often based pass/fail on two hours long exams where the student has no access to outside information. Then companies say that's not how the real world works. CS evaluation sucks!

    We change to continuous evaluation or project based learning, where student has longer time (well, certainly not 2 hours in a closed room) and can access external resources. You know, like the real world. And now it's companies the ones evaluating candidates the old fashioned way!

    Let's go back further in time and go for corporal punishments...

    1. Re:Now hi-tech are companies the "old grognards" by VorpalRodent · · Score: 1

      I cannot help but appreciate the logic of a professor who says, "Pass/fail wasn't acceptable. Letter grades weren't acceptable. The obvious next step is beating underperformers."

      --
      Take it to the limit, everybody to the limit, come on, everybody fhqwhgads.
    2. Re:Now hi-tech are companies the "old grognards" by jbolden · · Score: 1

      The companies have to respond to what you aren't testing. Project based testing does a good job of testing things like collaboration skills and research skills that individual tests don't. Individual testing with no access to outside information tests depth of knowledge on hand.

    3. Re:Now hi-tech are companies the "old grognards" by Megane · · Score: 1

      Have you been in on a whiteboard interview with recent CS grads? That's "grads" as in they already received their degree. I did a few times a dozen or so years ago, and it was scary. "Reverse a linked list" was particularly fun to watch, because Data Structures is a fundamental class in a CS degree. The ones that tried to write in Java were probably the worst, because they had no concept of pointers. The EE grads consistently knew more than the CS grads.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  24. Re:I understand this is tough on older programmers by Anonymous Coward · · Score: 1, Interesting

    Nothing of course. But this is what passes for journalism in the 21st century.

    It's infected just about everything including science fiction. Pointless to argue with them since they are full of ideological fervor for their activism. My relatives emigrated from the former Soviet Union and told of similar stories where you repeated the Communist Party line no matter how ridiculous it sounded.

  25. Recent Experience by slide-rule · · Score: 1

    Was cold-called by someone from Google, so I entertained the invite to interview, partially on a whim. I agreed I would not discuss specifics of interview process or questions, which I'll abide by, by suffice to the theoretical "design a system that..." questions and "how would you..." questions I did fairly well on and felt rather confident about. The detail coding component ended up drawing a question I wasn't all that prepped for (not being something that for me has ever come up in long years of working). So feedback was that due to the coding question performance, it was a no-offer. Which was fine -- after finally seeing SV area in comparison to where I'm happy with in fly-over territory (partly the area, especially cost-of-housing), I probably wouldn't have accepted anyway. No harm, no foul; just not my thing. Still, it wasn't a terribly great assessment of what I know and bring to the table. Local market does the same thing. /shrug

    My own team here, we tend to assign a homework question with semi-vague requirements, and then grade on what their experience taught them to also include, in addition to implementation specifics, with a follow-up Q&A ... this seems to work.

    1. Re:Recent Experience by djinn6 · · Score: 1

      Usually when people apply to a big software company with a well-known history of asking hard coding questions, they would spend a week or two reviewing their algorithms knowledge. You obviously weren't all that interested, which is fine. But the question works for everyone else. If even after studying the material, they still couldn't code their way out of a wet paper bag, then maybe they're not really up to par.

    2. Re:Recent Experience by Cederic · · Score: 1

      I once interviewed with a top-end engineering company that sent a graph based programming problem ahead of time and asked me to send in working code.

      I couldn't be arsed researching graph traversal algorithms so wrote a working solution and included documentation highlighting the recursive memory demands that put an upper boundary on graph size, and here's the function to fix if you need to process more data.

      The rest of the code didn't need touching, and worked perfectly well with the sample data provided. I got through that stage of the interview with a "I read your code. That was good!"

      If I joined Google, at interview I'd be pointing out that I have insane skills in some areas and if I need detailed algorithm knowledge I can probably find someone in the building that can help.

  26. Re:CS Fundamentals are important by Yunzil · · Score: 2

    If you can't write bubble sort or can't figure out how to get a length of a string in Python, you shouldn't be hired.

    Tell us what company you work for so we'll all know where not to apply.

  27. Re:CS Fundamentals are important by __aaclcg7560 · · Score: 1

    If you can't write bubble sort or can't figure out how to get a length of a string in Python, you shouldn't be hired.

    That's probably why I don't apply for programming jobs. I got A.S. degree in computer programming that focused on writing code and not theory. If I need a sorting algorithm, I'll look it up. Most implementations of bubble sort in Python looked like copy and paste C code.

  28. Whiteboard test by freeze128 · · Score: 1

    If given a problem to solve on the spot, I would write it in pseudo-code. You can have actual running code when you hire me. I won't solve your problems for free.

    1. Re:Whiteboard test by mark-t · · Score: 1

      In reality, it is unlikely that you are solving any of their problems by showing that you can implement a bubble sort in real code. You are showing that a) you can solve the problem, and b) that you actually *do* know how to translate that solution into actual code, and that they don't accidentally hire somebody who simply says they know how to program but doesn't actually. Sure they'd get fired within days if not mere hours, but there can still be whole fucking lot of paperwork to have to fill out that can be saved if they just know whether or not the person can actually do the job they want *before* they hire them.

  29. Re: CS Fundamentals are important by beelsebob · · Score: 1

    Every single day at my work I need to come up with new algorithms. I expect other people we hire to be able to do the same.

    Bubble sort is a useless question, exactly because it can be done by rote so easily, but I absolutely expect you to be able to come up with an algorithm for a slightly obscure problem, and write up some details of it. Why? Because that's the fucking job - coming up with the best algorithm to do something.

  30. Re:Discrimination by GuB-42 · · Score: 2

    How does a programming interview discriminate against "people of color"?

    Red-black trees I suppose.

  31. Re:Discrimination by tlambert · · Score: 1

    How does a programming interview discriminate against "people of color"?

    You obviously do not know your algorithms.

    Have you never heard of a red/black tree?

  32. Re:Shocking! by Yunzil · · Score: 2

    . But if you can't code a sorting algorithm without a reference, ... then you don't have the skills I need.

    Except for a very small subset of the industry, the only skill you need to code a sorting algorithm is knowing how to type in the search box on google (or stackoverflow). Or know how to call whatever the sort() function is in whatever language you're using.

    It's simply not knowledge that's relevant anymore.

  33. A better way by robkeeney · · Score: 1

    I recently had the idea that the next time I'm part of an interviewing process, I'm going to ask the candidates to write a short essay on the importance of a programming principle like DRY or YAGNI. I think someone who understands why it's important and can communicate it clearly is going to write better code than someone who has memorized some technical minutiae.

  34. Missing the point (as usual) by bbsguru · · Score: 2
    If you surveyed the 500 most [influential | prolific| successful] programmers in the field today, across all specialties, you would find no more than 5% of them would do well in such a test.*

    Programming is not about rote procedure. It is about finding a way to accomplish a goal.

    Clean and efficient code is a bonus, but not mandatory. Complying with any else's definition of Good Practices may be a consideration, but only to the ones making the definition. Working well with a carefully assembled maximally-diverse team may be helpful, or may be something to overcome.

    In any event, rule # 1 is paramount. Get the job Done. Everything else is value-add, at best.

    *Statistics independently verified by Slashdot

    1. Re:Missing the point (as usual) by Anonymous Coward · · Score: 1

      This is nonsense. White board interviews are about demonstrating essential knowledge of datastructures and algorithms. You cant claim to be any kind of programmer if you don't understand something like bubble sort. If you cant code it out on the board 100% correctly that's actually fine in these interview but you have to show you know what it is and demonstrate the jist of it.

      They never ask about really outlandish language specific stuff. You wont be asked to dive into the changes in C++14. You can use pseudo code if you need to on the "board."

      But every CS person should understand NP complete and sorting algos. If you don't -- you don't deserve to get hired.
       

    2. Re:Missing the point (as usual) by Kartu · · Score: 1

      Hell, no.
      I don't want crappy error prone, terribly formatted code "that gets job done".
      I don't want to do overtime to find bugs in that shit (because the genius that wrote the crap fails to fix shit within a week) either.

      Ages ago, researchers like Richard Brooks discovered that even within experienced teams, productivity might vary by an order of magnitude.
      Things haven't changed since.

    3. Re:Missing the point (as usual) by Areyoukiddingme · · Score: 1

      It's usually the very first algorithm in any book on algorithms. It's what they use to introduce the subject. If you don't remember the very first algo you ever saw well.....

      You might have seen your first algorithm at the age of 14 and you're now in your 40s after 20 years as a successful software developer?

      The first algorithm I saw was whatever is the first one in lander.bas. I sure as hell don't remember what it was.

  35. Bad engineers are bad by Balial · · Score: 1

    You don't know how to get the length of a string in Python? That's OK, provided you don't claim to know Python.

    Some people seem to think that they're a capable engineer if they can look it all up on the internet / stack overflow. Sorry, I'd rather fail your interview and hire the guy who wrote the book or the stack overflow post.

    Even if you can get the same results, which I doubt, stopping every 5 minutes to read up on core competencies of your job is going to be way slower than the person who is good enough to know it and apply it in the right place at the right time.

    I've worked with folks who've claimed there textbook bad code is fine because "I've been doing it that way for 30 years". That doesn't make you a master of your field, it means you're lucky to have fooled management for that long.

    1. Re:Bad engineers are bad by tomhath · · Score: 1

      You don't know how to get the length of a string in Python? That's OK, provided you don't claim to know Python.

      I'd probably flub that part. Not because I haven't written that line of code many times, but because I've written it in many different languages and they're all different. Is it len(string) or string.len() or array_length(string) or something else? I don't trust myself to remember that kind of stuff.

    2. Re:Bad engineers are bad by Balial · · Score: 1

      Do you claim to know Python in job interviews?

      If you don't know the details of something as simple as Python's object/string/array model, how can someone hiring you expect you to write good high-level data structures around maps, sets, lambdas, objects etc.?

    3. Re:Bad engineers are bad by jeff4747 · · Score: 1

      When Python is the only language you know, you should remember how to get the length of a string.

      When Python is among the 10+ languages you know, you might need a reminder which method of getting the length is used in Python.

    4. Re:Bad engineers are bad by NotARealUser · · Score: 1

      You don't know how to get the length of a string in Python? That's OK, provided you don't claim to know Python.

      I'd probably flub that part. Not because I haven't written that line of code many times, but because I've written it in many different languages and they're all different. Is it len(string) or string.len() or array_length(string) or something else? I don't trust myself to remember that kind of stuff.

      I agree. I've used so many languages in my career, that sometimes I have to look up a really basic function when picking it back up again to "get in the zone" on a particular language. Once I begin coding in that language, I do quite well.

      When interviewing someone, I am more interested in their way of organizing their thoughts, how they might pseudo-code a solution, and what their overall work ethic looks like. If you are smart, hard working, and not afraid to learn a new syntax, I want you on my team. If you can't organize your thoughts, or could care less about programming after work is done, I'd rather see you go elsewhere (possibly to our competition). I've worked with too many good-at-textbook yet terrible-at-thinking programmers who could memorize like nobody's business, but could never come up with real solutions to something not found in a textbook.

    5. Re:Bad engineers are bad by djinn6 · · Score: 1

      Some people seem to think that they're a capable engineer if they can look it all up on the internet / stack overflow. Sorry, I'd rather fail your interview and hire the guy who wrote the book or the stack overflow post.

      Exactly this. The guy might have a 30-year coding experience, but he probably doesn't even write any code in Python and I wouldn't hire him for a Python job. If he really wanted the job, he would've spent a week coding stuff up in Python to get familiar with it, and he'd have no problems at the interview.

    6. Re:Bad engineers are bad by Balial · · Score: 1

      All languages (worth talking about) are turing complete. At some point you "know" all the languages and just have to look up the specific implementation. It doesn't mean you know how to write and debug good code efficiently. There's a big difference between knowing a language and copying and pasting some snippets together from stackoverflow.

    7. Re:Bad engineers are bad by BlackPignouf · · Score: 1

      To be fair, why on earth doesn't Python define `.length()`, `.size()` or even `.len()` on strings?

      Nope, it's either :

      Python is object-oriented except when it isn't : len('mystring')

      or

      Remember to bring enough underscores : 'mystring'.__len__()

    8. Re:Bad engineers are bad by Balial · · Score: 1

      See, that's exactly the kind of answer I'd hope to get from someone who says they know Python. They actually understand what it means in Python to be a string, and how its quirks relate to the language. "I can look it up on stack overflow" is a fine answer for a mediocre high school grad if that's all you need.

  36. Re:CS Fundamentals are important by TheRaven64 · · Score: 1

    Most of the time I've seen this in an interview, and when I've been interviewing, any of that list would be fine. Part of the purpose of whiteboard coding is to see whether the candidate gets hung up on syntax minutiae or whether they focus on algorithms.

    --
    I am TheRaven on Soylent News
  37. Interviews need training, too by rockmuelle · · Score: 5, Interesting

    What I've always found funny about this interview process is that the assumption is always that the interviewer knows the correct answer(s) to the question. It's painful when they don't.

    Years ago I interviewed at Google and was asked a question about bit counting (some variation on "given a bit vector, wat's the fastest way to count the number of 1s?"). I quickly answered, "well, if your processor has a population count instruction, stream your vector through that and accumulate the result in a register". Having just evaluated bit counting methods as part of my Ph.D. dissertation, I knew this was the fastest way to do it, assuming the instruction was available (it's not on x86, but is on Power/VMX and most DSPs support it as well).

    After I got a blank stare back from the interviewee, I said, "Oh, you were looking for the lookup table answer". We could have left it at that, but he went on to explain using some very convoluted logic how the lookup table would actually be faster than using a dedicated instruction and that my answer was clearly wrong. I mentioned a little bit about the number of cycles required for each approach, but he had none of it. In his mind, I had the wrong answer, even though my second answer was what he was looking for.

    It was at that moment that I realized Google was not going to be a good place to work.

    -Chris

    1. Re:Interviews need training, too by sttlmark · · Score: 3, Informative

      Yeah, you probably should have just left it at that instead of trying to explain the optimal answer... Interviews are often performed by junior level guys who are out to prove are smart they are (open-minded senior devs are too busy and valuable to do the the initial screening pass). To get past the first tier, sometimes you just have to swallow your pride, pat them on the head, and congratulate them on how clever their "fastest possible" solutions are.

      By the way, Intel supports a POPCNT instruction now (starting with Nehalem). Sources: https://en.wikipedia.org/wiki/... and https://software.intel.com/en-...

    2. Re:Interviews need training, too by phantomfive · · Score: 1

      I had the exact same experience with Google in no less than two interviews, just last year. I thought it was something they'd gotten recently, but I guess it's been a problem there longer.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Interviews need training, too by angel'o'sphere · · Score: 1

      A friend of mine had similar bad experiences with google interviewers.

      The guys interviewing him (first two interviews where phone/skype interviews) had absolutely no clue about the topics but where simply "professional freelance HR interviewers" or some other bullshit.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Interviews need training, too by pr0t0 · · Score: 2

      You ran into the "I work for Google and you do not, ergo I am correct and you are not." ethos that is rampant there. Didn't you know? They have the correct answer to every problem. That's why Spaces is such a huge hit; and how they've been able to maintain a single, unified messaging platform all these years.

      --
      I'm sorry, but your opinion seems to be wrong.
    5. Re:Interviews need training, too by jittles · · Score: 4, Interesting

      What I've always found funny about this interview process is that the assumption is always that the interviewer knows the correct answer(s) to the question. It's painful when they don't.

      Years ago I interviewed at Google and was asked a question about bit counting (some variation on "given a bit vector, wat's the fastest way to count the number of 1s?"). I quickly answered, "well, if your processor has a population count instruction, stream your vector through that and accumulate the result in a register". Having just evaluated bit counting methods as part of my Ph.D. dissertation, I knew this was the fastest way to do it, assuming the instruction was available (it's not on x86, but is on Power/VMX and most DSPs support it as well).

      After I got a blank stare back from the interviewee, I said, "Oh, you were looking for the lookup table answer". We could have left it at that, but he went on to explain using some very convoluted logic how the lookup table would actually be faster than using a dedicated instruction and that my answer was clearly wrong. I mentioned a little bit about the number of cycles required for each approach, but he had none of it. In his mind, I had the wrong answer, even though my second answer was what he was looking for.

      It was at that moment that I realized Google was not going to be a good place to work.

      -Chris

      I decided not to work for a company after an experience like this. The interviewer asked me a question, I solved it adequately. He then tried to claim that my answer was not sufficient because it didn't handle certain words in French. The guy didn't know that the character in question was covered by extended ASCII and claimed that I had to use UTF8 to handle Latin languages. As someone who is bilingual, I knew this was not the case. I gently suggested that the character was in the extended ascii table and he got very defensive. So, I conceded that perhaps he was right (even though I knew he was not), and proceeded to answer the question using UTF instead of extended ascii. That guy was going to be my new manager, had I accepted the job. I had no interest in working for someone who could not handle being wrong.

    6. Re:Interviews need training, too by Anonymous Coward · · Score: 1

      What I've always found funny about this interview process is that the assumption is always that the interviewer knows the correct answer(s) to the question. It's painful when they don't.

      Yup. I've had this happen more than once. I interviewed for a contract role quite recently, and was asked to reverse a string in c#. I gave a slightly unusual solution ( foreach through the characters of the string, inserting each one in position 0 of a stringbuilder ), because I thought it was slightly more creative than a more standard approach. They smiled indulgently and then told me that they could see what I was trying to do, but it wouldn't actually work. I suggested they might be mistaken, and they disagreed. Unfortunately, we weren't doing it on a laptop, but on a sheet of paper, so it was hard to prove one way or the other. The interview ended soon after, I checked my solution as soon as I could and of course it did work...

      As a contractor, I interview quite frequently, and the process seems almost completely random - most people conducting interviews seem to have very little idea of how to do it, and the sorts of technical tests administered are often completely farcical.

    7. Re:Interviews need training, too by Anonymous Coward · · Score: 1

      Had a similar experience with a no-name company, interviewing for C#/.NET position.

      Question: How can you guarantee a block of code will execute if something unexpected happens?

      Answer they wanted: use try/finally

      Correct answer: you can't guarantee any code block will run. Not counting pedantic reasons (power failure, OS protection faults, etc), there is also a deliberate way built into .NET that sub-routines can stop execution at the current stack frame.

      Offering to demonstrate that I was right didn't help my case....imagine that.

    8. Re:Interviews need training, too by ndykman · · Score: 3, Informative

      I posted a similar comment to this effect. Also a PhD holder, and if I answer a question directly and without pause, it means I really know a good answer. Otherwise, I will ask some questions and explore like everybody else.

      Seriously, I've had people tell me recursion is terrible and knew nothing about tail call optimization, or if they heard of that, they don't understand exactly what it means. Never mind I took advanced coursework on programming language semantics where we had to formally define it. Now, if you asked me for a formal definition, I would look that up, because it's been a while,

      Add in the fact I don't have the PhD from the right schools, so for a few, it can't be that useful, and I really wish it wasn't near impossible to find academic appointments.

    9. Re:Interviews need training, too by jez9999 · · Score: 1

      There is no "extended ASCII table", there's about 500 different code pages. If you're writing anything new that uses characters outside the first 128 you absolutely should use UTF8.

    10. Re:Interviews need training, too by zbobet2012 · · Score: 1

      x86 Added POPCNT SSE 4.2. So you can use it these days. Had people fall flat faced when I told them to use the hardware optimized version instead of the lookup table.

    11. Re:Interviews need training, too by Nothing2Chere · · Score: 1

      That guy was going to be my new manager, had I accepted the job. I had no interest in working for someone who could not handle being wrong.

      I had a similar experience early in my career (early 2000's). I interviewed for a data analyst job dealing with survey data, and the hiring manger (the only other database programmer) asked me a TSQL question where he had a specific answer in mind. His answer was to use a "@value is >= x and @value is
      He told me that my answer was wrong, so figuring that I'd already lost the job I argued my point. He believed I was wrong so strongly that we relocated the interview to his desk so that he could prove me wrong. The interview ended when he found out that I wasn't.

      Dodged a bullet on that one.

      n2ch

    12. Re:Interviews need training, too by Ihlosi · · Score: 1
      Having just evaluated bit counting methods as part of my Ph.D. dissertation,

      Personally, I like the mask and add/subtract method. Even if it's just because at a first glance, it'll get a lot of "WTF?!" reactions, until you think it through and convince yourself that yes, it actually counts set bits.

      Not a fan of lookup tables, since my targets have memory in kBs and even a 256-byte table eats up a lot of that.

    13. Re:Interviews need training, too by jittles · · Score: 1

      There is no "extended ASCII table", there's about 500 different code pages. If you're writing anything new that uses characters outside the first 128 you absolutely should use UTF8.

      Have you never heard of ISO Latin1? It's been used in the banking industry for a very long time. It's the text encoding used for all your magstripe info on a credit card, for instance.

    14. Re:Interviews need training, too by jader3rd · · Score: 1

      I had the opposite experience. It blew away the interviewer's mind that my white board answer would execute in the same amount of time as his solution, but used less memory.

    15. Re:Interviews need training, too by dcollins · · Score: 1

      Likewise: One of my last interviews in my gaming career, an interviewer (producer) asked me to convert a string of ASCII digits to an integer value. I did happen to remember the algorithm directly from my machine architecture class (which I feel is quite memorable). Didn't believe me when I said it's actually more efficient to walk in the forwards direction through the string and multiply by 10 at each step (he maintained you had to search to the end of the string for the lowest place-value, the walk back right-to-left). I even walked through an example to show him correct result and total operations -- still didn't believe me. No job offer, left the industry.

      http://www.madmath.com/2015/12/that-time-i-didnt-get-job.html

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    16. Re:Interviews need training, too by tibit · · Score: 1

      In absence of specialized instructions, a lookup table might work best on an 8/16-bit microcontroller with no cache. On anything more advanced than that, not doing memory accesses might save you enough time to do more computations and less look-ups. Another thing people routinely forget is that basic big-O notation by design only tackles computations, not memory access. A multi-layered memory system you'll find in any modern CPU that can easily give you lots of computations at a low cost if you can only feed the compute units with data, and be able to stream out their output. When these I/O paths are blocking, the computational efficiency of the platform can drop by multiple orders of magnitude - if you've only got a thousand elements, an O(n^2) algorithm that has a slowly evolving working set may perform better than O(n log n) where you're reliably forced to do log n page fetches from disk each time.

      --
      A successful API design takes a mixture of software design and pedagogy.
    17. Re:Interviews need training, too by jittles · · Score: 1

      > Have you never heard of ISO Latin1?

      Of course we've heard of it. Also Latin-2, Latin-3, Latin-4, Latin-5, etc.

      All of which are "extended ASCII" and all incompatible.

      This is true, but there are industries that use those ISO encodings and therefore it is not necessarily an invalid choice. If all your data is coming in as Latin-1, there's not necessarily an immediate need to convert it to UTF. It may legitimately be invalid to send the data on in UTF, in fact. At that particular company, I would expect them to have to send and receive data in ISO Latin-1 due to legacy systems.

  38. Testing by The+Evil+Atheist · · Score: 2

    I don't get the impression most interviewers know what they are looking for. Just like with software, testing in general is hard. You have to understand what you're really testing for and whether your tests actually tests for those qualities and rules out anti-qualities.

    I find it hard to take anyone who thinks these coding tests really test for anything.

    --
    Those who do not learn from commit history are doomed to regress it.
    1. Re:Testing by The+Evil+Atheist · · Score: 1

      I find premature automation to be just as bad as premature optimization. My biggest peeve about testing is not being able to run tests on their own without having to install a whole bunch of stuff first. And then you get thousands of meaningless tests that are only there to make the numbers look good but which don't actually provide any quality assurance.

      --
      Those who do not learn from commit history are doomed to regress it.
    2. Re:Testing by tsotha · · Score: 1

      They test for liars. If you've actually been doing Python full time for the last five years you can't possibly not remember how to find the length of a string.

    3. Re:Testing by The+Evil+Atheist · · Score: 1

      Yeah? And if you've been doing Python full time, you'd also remember how to make a class, make a generator, do list comprehensions etc etc etc. Testing someone for "length of string" is a MEANINGLESS test that's a waste of time. Testing trivia is pointless and makes you look like a tool who doesn't know how to create meaningful tests.

      You've proven my point that you don't really understand what you're testing for. You THINK you're testing for liars, but you're not. There are much better ways to test for liars that aren't completely irrelevant. It's like people who write classes, then writes public setters and getters for everything, and writes stupid tests to test that they work, as though that in any way assures quality.

      Just goes to show most programmers are horrible testers and don't know what actually constitutes a good test or not.

      --
      Those who do not learn from commit history are doomed to regress it.
    4. Re:Testing by tsotha · · Score: 1

      I haven't proven your point. Neither have you. If I can filter out someone who's claiming, but doesn't actually have, an expertise I'm looking for in thirty seconds or so, I'm going to ask that question. If he fails I don't need to waste any more time. Interview over.

      I'm getting the impression you've never actually done this. A good test for candidates is one in which I can ascertain whether that candidate is the person I want to hire in the minimum amount of time. If you're starting our association by lying to me, I don't want you regardless of the technical skillset you do have.

  39. Re:Please retitle this article. by __aaclcg7560 · · Score: 1

    Code schools aren't the place to go if you want to be a "rock star" at Google or Facebook. These are designed to turn out junior developers, or "apprentices" as they're known at Software Guild, which currently has 16 instructors and 148 students split between in-person and online programs. Students learn just enough to be dropped into teams of more experienced coders and continue their education at a company, even as they draw a competitive full-time salary. They aren't building the high-flying startups; most are simply translating business processes into code, transforming data or helping maintain and update legacy systems.

    https://www.wsj.com/articles/a-new-kind-of-jobs-program-for-middle-america-1488114000

  40. Other things to interview for by Walt+Sellers · · Score: 4, Insightful

    Technical expertise is only one part of the whole picture. But it may be the part people thrust into the interviewer chair are most familiar with. Sometimes the interviews feel like a final exam and I wonder if they interviewer had final exams pretty recently.

    I have been known to point out these annoying little things to my colleagues when we are hunting to fill positions:

    Do the candidates' personalities mesh well with yours? Do you think you can stand being around them and working with them day after day?
    Will they be reliable?
    Do they seem easy to train? They will need to learn how this group does business and works together after all.
    Do they express curiosity when they don't know the real answer?
    Do they make things up to fake an answer? Or do they say "I don't know the answer, but based on my experience I would guess this..."?
    Do they communicate well? Do they listen well?

    1. Re:Other things to interview for by Thelasko · · Score: 1

      Do they seem easy to train? They will need to learn how this group does business and works together after all.

      Aptitude is what you want to determine. Unfortunately, that is difficult to measure. Skills are easier to measure, that's what these companies are trying to do.

      I once took an industrial psychology course in college. What I learned was that it's extremely difficult to determine who will be good at any particular job. However, the methods used by industry are typically the worst way to do it.

      --
      One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
  41. Re:Do you have a better metric for Hiring? by SharpFang · · Score: 1

    Give the guy a piece of code to debug. On screen, using the debugger. Oh, just a snapshot of your code two revisions ago, when you found that nasty bug.

    Give them a piece of code written by that one jerk who believed in making his own job secure, tell to clean it up and add comments.

    Hand customer's specs, present a couple solutions, "pick the best one, make an case about it." Just stuff collected from a meeting three years ago.

    This piece of code is underperforming. Find the bottleneck.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  42. Re:diversity?? by SharpFang · · Score: 1

    Typical SJW hijack. Occupy Wall Street went down the crapper the same way.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  43. Boeing by Scarred+Intellect · · Score: 1

    My uncle told me about a Boeing interview process one time. They would put candidates in a room together and give them an engineering task/problem to solve. At this point, they'd already vetted them for knowledge/competence.

    At first, the candidates would talk and do the chit-chat thing, who's who, background, blah blah blah. But at some point, one would push back his chair or pick up the notebook with the assignment or get up to the whiteboard and say something like "Well, let's get on with this thing."

    That was typically the end of the interview. Of course they'd still observe the candidates as they worked on the project, but that bit of leadership was primarily what they were looking for.

    Because of this, and stories like it (such as TFS), I intentionally go to interviews unprepared. My intention is to present them with the "real" me that they are more than likely to get. I don't want to present the best of me, because they won't get that all the time. If asked why I am not more prepared, I will answer with exactly this. One could argue that this IS being prepared...

    I have had only one interview out of my last 7 (spanning the same number of years) that didn't return a job offer.

  44. Re:Do you have a better metric for Hiring? by GuB-42 · · Score: 1

    I think that "find the bug" questions may be more relevant.

  45. Happens in IT/sys engineering too by ErichTheRed · · Score: 2

    From the IT side of the house, I can say I've been there. In the development world, it's the whiteboard test, but in the IT world it's a tool-matching exercise and trivia contest. I freely admit that I have a very bad memory and constantly look up information unless it's actively used in my daily work. I feel the field of IT is too broad for one person to remember even the basics of _everything_. I've failed interviews because I couldn't recall some trivia questions, and I've done well on others when I was given the chance to demonstrate skills I'm comfortable with. Worse yet, I've gotten shut out of interviews because I haven't used the exact brand and version of some tool they have in the toolbox, regardless of how easy it is to pick up on the job.

    In an IT context, matching a laundry list of tools, platforms and software isn't going to get you the right candidate. I hate to self-promote, but I've been told by many employers that the reason they like me is my willingness to dig in and learn new stuff, then document what I know and teach people before moving on to something else. One example I like to cite is that this is essentially the 4th time I'm relearning Citrix XenApp at a level deep enough to do a new deployment -- when this is done I'll get assigned some other project working with a completely different tool set. Some people in our field are experts in Foo but not Bar, or worse yet, specific Foo 3.6.1 experts. There are products that I work with daily (Citrix XenApp, SCCM, etc.) that are easily full time positions, and are so complex that people get to be tunnel-vision geniuses on them. Same goes for platforms -- there are Cisco configuration and management experts who go so far down in the weeds that they can't see things like SDN and hybrid network gear slowly taking over. They'll continue to get paid a lot for quite a while, but eventually the contracts and FTE positions will dry up as the product is phased out. Look at how different a typical SAN engineer's job is these days compared to the times when you had to be an EMC or NetApp savant to get things functioning.

    If you're looking for someone fresh out of school, the whiteboard interview is only going to get you a sense of whether or not the candidate absorbed basic concepts from their computer science degree. In IT, most of us don't come from CS and end up here because we're crazy people who like complexity and troubleshooting/firefighting. Smart employers recognize this, but often you get programmer-style interviews when you are trying out for a spot at a software or IT services company.

  46. Re:Shocking! by TheRaven64 · · Score: 1

    One of the reasons that we teach sorting and searching algorithms is that a huge number of complex domain-specific algorithms include a step that is either searching, pre-sorting, or both. If you don't understand these steps well then you won't have the tools to do a good job at the more complex parts of algorithm design.

    --
    I am TheRaven on Soylent News
  47. Re: CS Fundamentals are important by beelsebob · · Score: 1

    You're right - the fucking job is writing code to accomplish the business' goals in an efficient manner. The business' goals in this case, are to produce tools for users that work reliably, fast, consume little memory, consume little power, etc. Writing good code absolutely is a requirement to meeting the business' goals. If you don't want to write that kind of code... well, that's why I'm rejecting you in an interview. That's why the business trust's my (and my colleagues) take on who's a good hire - because they trust that we understand the kinds of qualities needed to do the job well.

  48. Not a programmer, but.. by Ogive17 · · Score: 1

    I haven't done any sort of actual programming since my original undergrad almost 20 years ago, needless to say I never went through an interview like this. As others have mentioned, the expectation likely isn't to get the person to write a perfect program during the interview. It is to evaluate their thought process, ensure they do actually have the skills they claim to, and see how the person can react to a pressure situation.

    If I were the interviewer, I would hope the individual would first discuss logic with me. Then I would ask them to show me. Finally we'd talk about what they were able to get on the board.

    If the company's intention was simply a straight coding test, do you think you'd honestly be happy there anyway? Sounds like if the interview was stressful actually working for the company would be a nightmare.

    --
    "Action without philosophy is a lethal weapon; philosophy without action is worthless."
  49. Re:Shocking! by jordanjay29 · · Score: 1

    Pretty much, just like finding the circumference of a circle is just plugging the radius into pi*2r. You don't need to calculate pi, or derive the formula yourself, only know that it exists and how to use it.

  50. Re:some things should be trivial for any expert by doconnor · · Score: 5, Insightful

    Experts know that it is almost always better to use the sort from the language's library, and if they can't then they would look up the code for Quick sort and use that.

  51. Re:some things should be trivial for any expert by c · · Score: 1

    Likewise, if you're an expert programmer, you should be able to write bubble sort on the whiteboard without a web search.

    I would expect an expert programmer to be able to write a linear insertion sort. I would expect them to be able to explain a quicksort or a mergesort or some algorithm with real-world practical value and discuss why any particular one would or would not be used.

    I would expect that an expert programmer will have last written a working bubble sort in an undergrad algorithms course and then promptly forgotten the details.

    --
    Log in or piss off.
  52. Let's interview a Lawyer or Accountant now... by geekmux · · Score: 1

    Do you grill a Lawyer on case law from the 1920s during an interview?

    Often require a CPA to cite tax code from 1972 in order to apply for a job?

    Perhaps we should just whip out the State Bar or CPA exam instead, you know to find out who's really good, since dredging up history and concepts you left in undergrad school seems to be the name of the game in other fields...

    1. Re:Let's interview a Lawyer or Accountant now... by JustNiz · · Score: 1

      >> Do you grill a Lawyer on case law from the 1920s during an interview?

      I don't know the answer but I'd bet that if they did ask any case law questions, it may well be something that was actually decided in the 1920s or even before. I think the real factor here is that is it still current, not when was it invented.

      Similarly, you may be a web programmer who thinks bubble sorts are old school and irrelevant because you don't personally use them, and would see nothing wrong with dragging in some bloated heavyweight API just for a bubble sort if you ever needed to, but as an embedded programmer who is used to working on PICs etc where you can't just drag in the kitchen sink, I can tell you that many engineers are still writing code to implement simple stuff like that every day.

  53. When All Else Fails, Honesty Works by Tempest_2084 · · Score: 2

    When I was interviewing for my current job I got asked one of these types of questions. I was honest with the interviewer, I told them I had a vague understanding of the concept, but I'd have to look up or ask someone how to actually implement it since it's not something that I'd ever done before. I figured I had nothing to lose by being honest since I wasn't going to be able to BS my way to a solution anyway. The interviewer appreciated my honesty and said that collaboration and being able to find solutions to problems you don't have the immediate knowledge to do were important and I eventually ended up getting the job. I'm not sure if that's what they were actually looking for or if they liked my other skills so much that they were willing to overlook it. To this day I've never come close to having to program what they were asking me to do in that interview.

  54. Re:some things should be trivial for any expert by cloud.pt · · Score: 1

    Analogies are cool and dandy, but miss the point by far.

    There are IT fields where you simply don't have to use specific algorithms for years. Hell, maybe even decades. Now you go on a job interview for the exact same field and interviewers throws around big O notation and critical system-level optimization questions, and obviously, even the non-Ivy league freshman who knows those like the back of his hand is gonna destroy any decades-experienced programmer.

    Give the average dedicated programmer an internet connection and he'll get 90% of most needs sorted out, in reasonable time at a reasonable rate (in contrast to the industry), and here's the kicker: even if he never actually touched the subject at hand. Most people don't have photographic memory, and most programmers don't actually need it. Most certainly don't need it as much as experience, but man do they like to act like they do in interviews these days.

    You did get the bubble sort being trivial part partially right: it is so trivial I actually have never written a bubble sort snipet ever, in my life, even managing to avoid it on most college assignments simply by going another work topic, or focusing on other exam subjects and still get an above-average mark. I happen to know the algorithm for one sole reason and that is I glanced at it for subjects college. And I work in a field that is as general as it goes.

    Examples for wanting Rachmaninoff or Kasparov (them Russian geniuses...) expertise levels for IT are so remote they actually involve remote locations: programming in Africa or any region with a slow/non-existing internet connection. Or if I owned such a level of a sweatshop I couldn't allow my devs to lose 5min looking up common tasks through online APIs or programming communities. Also, did you notice all the fields you mention are actually very "like what you do" dependent? Most if not all "virtuosos" on board games, sports, music or theoretical (non-applied) STEM actually love what they do, not every coding one does, as this post actually proves it. Coding isn't a skill most of us like bringing home, it's not like it is a good party-conversation topic. I actually avoid making public I work in IT so people stop nagging me for all their computer basic needs (and other reasons, we all know the field is tainted socially). We charge our employers a fortune per hour and it would be insulting for them to provide such services to acquaintances for free.

  55. Re:some things should be trivial for any expert by enjar · · Score: 1

    I wrote bubble sort about 30 years ago ... in BASIC.
    I probably re-implemented it in Pascal when I took that class. It probably came up again in C, FORTRAN and Java courses. I might recall an example in a learning Perl book I worked through ages ago. Even in those days, the instructors/book pointed out that the implementation of bubble sort was being used as a ready example to teach the constructs of the language, and that sort implementations of the respective language were far more sophisticated and optimized, and should be used rather than rolling your own.

    Same thing with rolling your own command line argument parser, math functions, date/time functions, etc ... don't. Learn how your language does those things and use the provided algorithm. It's far more likely to have less bugs than the thing you just made up, especially for a well-established language.

  56. Re:some things should be trivial for any expert by gumbi+west · · Score: 4, Insightful

    It's more like asking an expert pianist to tune a piano. Yes, some can, and that's great. But others can't, and it's usually not relevant--because you usually hire a piano tuner to tune the piano. Just like how you really should use an existing function for sorting.

  57. Other agendas by swb · · Score: 1

    I wonder if it hasn't gotten this way simply as a synthesis of multiple agendas and their outcomes.

    Management wants to hire the cheapest possible talent. For a while, they achieve this goal, and the staff mix shifts towards less talented people. Productivity expectations don't go away and the more experienced/better staff shoulder the burden.

    Management notices (perhaps even having to fire some quantity of cheap staff for obvious gaffes and lack of productivity), and listens to the chorus of "hire smarter people". So the interviews get harder, with the idea that this will allow smarter *and* cheaper hires.

    This works to a degree, but now the more experienced people are somewhat threatened by an influx of smart *and* cheap staff. So the interview questions get much harder and more unrealistic under the guise of ever-smarter people requirements, but the actual goal is just raising the bar so that you wind up with really smart people but too far out on the spectrum, deficient in the soft skills that would allow them to rise in the organization. The old hands gain talent that eases the workload but greatly reduce the risk to their own organization standing.

    Even if none of this is true, it still seems that an obviously flawed hiring process like this has to be a byproduct of agendas other than simply "hiring the most capable people". Still I think cost and self-preservation are probably large factors in these processes.

  58. "Coding sins" by edxwelch · · Score: 1

    Well, it's very brave of them to confess to their "Coding sins", but that doesn't mean they won't face the repercussions. This is Donald Trump's America after all.
    "Don't know what np complete means? Deport him back to Mexico!"
    "What? But that's ridiculous, I'm not even from Mexico"

    1. Re:"Coding sins" by HornWumpus · · Score: 1

      Tie one on, drop acid, hitchhike the nation. Do _something_ and get over it, what you're doing is crazy unhealthy for you.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    2. Re:"Coding sins" by Paul+Fernhout · · Score: 1

      Thanks for making me laugh! :-)

      --
      A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  59. Re:Shocking! by itsdapead · · Score: 1

    But if you can't code a sorting algorithm without a reference,

    You're missing the point.

    I agree, that if you can't jot down a simple sort algorithm on a whiteboard you're probably not much of a programmer. That's not what's being asked here.

    The issue here is being expected to memorise Knuth from cover to cover (ISTR there was a whole volume on sorting and searching) so that you can regurgitate [insert name of reviewer's favourite sorting algorithm] on demand without thinking - because any moron with time on their hands and a high boredom threshold could do that. It's a lazy assessment technique that gets used because the interviewers don't understand the job they're interviewing for so if they asked a sensible question (like here's a problem - how would you begin developing a solution) they wouldn't be able to understand the answer.

    The correct answer is (a) use whatever sort() function the language provides (or change the database query to get a sorted list to start with), because its probably better than anything you could pull out of your arse in 60 seconds or (b) if that won't do, ask "why not?" and spend an afternoon researching sorting algorithms & libraries to find something that meets these oh-so-special requirements before, as an absolute last resort, writing your own.

    A better solution would be to give them some broken code to debug - that would separate the persons from the other persons....

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  60. Double trick question by monkeyxpress · · Score: 1

    Freefont uses bubble sort for sorting edge contour lists during rasterization. It is extremely well suited to the problem, as most sequential scan lines do not require a sort, making the algorithm an easy-to-optimise order validator. Further, most situations where a sort is required occur in localised pairs (from edges crossing) making the algorithm very efficient.

    I personally steer clear of 'smart' answers in interviews. The more experience you gain, the more you come to appreciate the limits of your knowledge.

    1. Re:Double trick question by phantomfive · · Score: 1

      Freefont made a mistake, in that case selection sort or insertion sort would still be O(n^2), but would have a smaller constant value.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Double trick question by gnasher719 · · Score: 1

      Freefont made a mistake, in that case selection sort or insertion sort would still be O(n^2), but would have a smaller constant value.

      The joke is on you - in this case Bubblesort is asked to sort a sequence of arrays where each array is either sorted or almost sorted, and Bubblesort handles that in O (n). Linear time. Faster than Quicksort. Faster than selection or insertion sort.

  61. Re:some things should be trivial for any expert by pr0t0 · · Score: 1

    I get what you're saying, but I find that phrases like "expert [language] programmer" have so much room for interpretation as to be utterly meaningless.

    I am very, very good at what I do. Part of what makes me good at it is setting up a system that allows me to respond to needs very quickly and accurately. As an example, before I was hired it took days of coding and testing to on-board a new customer. Because of the templates I have built, and the system I designed for testing; the whole thing can be done in three hours. Now could I write executable code on a whiteboard for that? Hell no! That's what I built the templates for, so I don't have to memorize syntax! I can instead focus my energies elsewhere. If I had to call upon a magic fairy to tell me the syntax of every line of code I've ever written...so what? The job got done on time and my company benefited greatly from it. I don't need the answer to every question, I just need to know how to get it, test it, and put it into production.

    I could talk about how I've laid out my code, the workflow of it, the ease of maintenance, and why I made the choices I did, etc. I think that is valuable information on a perspective hire. I would think my body of work, and who I did it for would speak loudly enough for my abilities, and that's why I was being interviewed. If someone called me to a white board, I believe I'd politely tell them that the coffee was great, but no thanks. I don't need you. I don't have any deep-seeded need to bring what I do to your company. You need me, that's why you called me; and now that I'm here, I see you're unsure and you've wasted both of our time. You wasting your time is of no concern for me, aside from the fact I probably don't want to work for an organization like that. You wasting my time just pisses me off.

    --
    I'm sorry, but your opinion seems to be wrong.
  62. Bad interviewers, not bad questions by maiden_taiwan · · Score: 1

    Whiteboard coding questions aren't bad in and of themselves. The real problem is bad interviewers who don't know what's realistic in an admittedly artificial interview situation. Questions that require rote memorization should be obsolete today. Common flaws include:

    * Requiring perfect syntax off-the-cuff
    * Requiring exact names of library functions
    * Asking questions that have just one correct answer (because a wrong answer tells you very little)

    A good interviewer can run a beautiful coding interview on a whiteboard, keeping the candidate engaged and displaying his/her skills. You run it like an ongoing conversation with the candidate. If they hit a wall or don't remember something, you simply give them a hint or even the missing answer so they can continue. The end goal is to make the determination: does this candidate know what the hell he/she is talking about, and do I want to work with him/her? The end goal is not to determine if the candidate can take the length of a string in Prolog.

    I have personally trained hundreds of technical interviewers in these skills. The problem at many companies is that nobody evaluates people's interview skills and separates the good one from the bad ones.

  63. Re:Do you have a better metric for Hiring? by micahraleigh · · Score: 1

    You can find developers who can say this?

    And those who can ... how can you be confident it was them?

  64. As bad as the interview process is the Resume by pjv936 · · Score: 1

    process is even worse. Many large companies pro grammatically review resumes looking for the mention of skills listed in their job requirements. The job requirements list 50 different skills as required and the expectation is that the resume will also list those same skills. Well, I am an experience programmers and I don't have 50 skills and I doubt anyone does. So now only people willing to lie on their resumes get job interviews. That is ridiculous.

  65. My take by luis_a_espinal · · Score: 1

    David Heinemeier Hansson, a well-known programmer and the creator of the popular Ruby on Rails coding framework, started it when he tweeted, "Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles."

    I don't buy the notion that someone with a CS degree cannot implement bubblesort on a whiteboard, regardless of real life accomplishments. With that said, his last sentence (I look code up on the internet all the time), that's the motto I live by.

    Someone asks me how do you call function X on Y api?, and I'll answer that's what google is for, I don't memorize minutia. And I'd walk away from an interview that requires me to code something non-trivial without an internet connection. I'd work on a whiteboard to illustrate my problem solving skills, but ask me minutia or expect me to code without a reference?

    Nope, I'm out. Life is short, there is plenty of game out there, and I'm too old for this junior level game playing shit.

    1. Re:My take by luis_a_espinal · · Score: 1

      David Heinemeier Hansson, a well-known programmer and the creator of the popular Ruby on Rails coding framework, started it when he tweeted, "Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles."

      I don't buy the notion that someone with a CS degree cannot implement bubblesort on a whiteboard, regardless of real life accomplishments. With that said, his last sentence (I look code up on the internet all the time), that's the motto I live by.

      Someone asks me how do you call function X on Y api?, and I'll answer that's what google is for, I don't memorize minutia. And I'd walk away from an interview that requires me to code something non-trivial without an internet connection. I'd work on a whiteboard to illustrate my problem solving skills, but ask me minutia or expect me to code without a reference?

      Nope, I'm out. Life is short, there is plenty of game out there, and I'm too old for this junior level game playing shit.

      Additionally, I do not pity people who find the game demoralizing. There are more demoralizing things in life, like cancer or poverty. Interviews? They are demoralizing because you let them. That's just part of the game. Build the mindset to waddle through shit creek till you get what you want.

      Demoralizing yourself because the interview process is the stupidest exercise of self-indulgence ever.

  66. Probably a middle ground here somewhere by Zontar_Thing_From_Ve · · Score: 1

    I doubt that companies that want to do the old "Surprise! Write code with no reference materials to do complicated task X" are interested though. On a previous job I was allowed to interview by my manager for potential hires into the group and I would give people a simple problem and ask them to vaguely verbally describe a way to resolve it, like to take a file of names in first name, space, last name order that was sorted on first names and produce the same type of output (first name, space, last name) but sorted on last names. I just wanted to see that they had some kind of logical process to resolve this kind of issue. Something like using the right arguments to Unix/Linux sort to do it, use AWK or Perl to sort the 2nd field alphabetically, etc. were good enough answers. I remember in those days that recruiters would flood us with a bunch of unqualified candidates (it was a sys admin type job) and we got annoyed that people would say on their resumes that they totally knew Unix/Linux but we'd interview them and find out they didn't. So we started asking candidates "What command do you use on the command line to delete a file?" and got rid of the ones who couldn't answer that. That worked pretty well at the time. So I do get that they are looking for a certain type of employee and trying this as a way to find them.

    However, the kind of people who are totally geeky enough to pass these types of tests do not always make for great colleagues. I know a guy at work who is now in a different department who would ace this kind of thing and he is smart but he is also super challenging to deal with in person. He's been given permission to work from home pretty much all the time because he's so challenging to deal with in person. I remember another really good programmer who one time disappeared for like a week with no word to his office. His manager had a couple of guys from work go to his apartment and they expected to find him dead. They knocked on the door and the dude answers. Told them that he hurt his ribs. He didn't bother to call work or his manager about it. Just didn't show up to work. So yeah, these are the kind of guys who pass that kind of test.

  67. Necessary evil by LQ · · Score: 1

    I've interviewed people for software jobs whom I thought HR had screened but who turned out to be useless. How do you establish competence with seeing how they handle some basic computer science questions? It's only a bit of white-boarding, not water-boarding.

    1. Re:Necessary evil by __aaclcg7560 · · Score: 1

      It's only a bit of white-boarding, not water-boarding.

      Try being interviewed by five teams of four o six people each for eight hours. I've done that twice for QA jobs at Microsoft and Nvidia.

  68. Re:some things should be trivial for any expert by JesseMcDonald · · Score: 1

    Likewise, if you're an expert programmer, you should be able to write bubble sort on the whiteboard without a web search.

    Who actually uses bubble sort on the job? Bubble sort is one of those algorithms that you should see roughly once in your career—in an introductory Algorithms class as an example of what not to do. As simple as a bubble sort may be, if you've been programming long enough to earn the title "expert" I think you can be forgiven for forgetting the details. For that matter, unless you've been doing bare-metal systems programming, best practice in almost every case is to use a standard library function rather than writing your own sort routine. The average expert programmer working in a high-level language has very little reason to reimplement any sort algorithm in the course of their professional work, though most should at least be aware that there are multiple reasonable sort algorithms, and that the proper choice depends on the task at hand.

    A better interview task would be to compare and contrast some of the more common algorithms and give examples of situations where each would be suitable. I wouldn't expect bubble sort to make the list, but given the pseudo-code for a bubble sort I would expect the applicant to be able to reason about its time and space complexity and articulate why it would generally be a poor choice compared to the other options. (The only possible exception I can think of offhand, for bonus points, is where the array length is known to be trivial and you have a really pressing need to minimize both code and stack size, but even then it's a close call.)

    Speaking as a Sr. Software Engineer with at least 15 years of professional programming experience, while I would be able to write bubble sort, merge sort, and quicksort by hand without a reference, I can't recall any instance where I actually needed to do so as part of my job. The implementation details are inconsequential trivia compared to knowing that quicksort is best for mutable data structures with fast random access, while merge sort is more suitable for immutable data structures or data too large to fit in RAM.

    --
    "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  69. Re: CS Fundamentals are important by mark-t · · Score: 1

    The point of an exercise like implementing a bubble sort algorithm is not to do something that you are regularly going to be expected to do on the job, the point is to test whether or not you have the necessary skill to figure out how to solve such problems on the spot even if you *DON'T* remember how, exactly, it might be implemented. Trivial algorithms such as bubble sort or merge sort are really good benchmarks in this regard because few programmers bother memorizing their exact implementation, and most skilled ones can spontaneously reimplement one from a general recall of only certain key points about the algorithm.

    If you can show that you know how to solve problems that others might have already done, without having to depend on other people or other libraries to do all the work for you, then you have demonstrated at least having some of the skill that is generally likely to be highly transferable to solving new kinds of problems that nobody else has encountered before. Due almost certainly to the time constraints of an interview, they aren't likely to ask you to implement an algorithm that you might be expected to do on the job in a programming interview.

    The answer to your question would therefore be at best a simple "no", and at worst, "thank you for your interest in this company, we hope you find success elsewhere".

  70. Re:My Sin.Sloth,I dont try todo these silly things by __aaclcg7560 · · Score: 1

    I have tools for that.

    When I went back to community college to learn computer programming, we had to learn all flavors of Java because there was no money in the budget to renew the Microsoft Visual Studio site license to teach C/C++. The dean wanted to teach C/C++ on Linux, but the powers to be overruled him as surveyed Silicon Valley employers insisted that C/C++ programmers must know how to use Visual Studio as a tool. When the site license got renewed, none of the computers were up to spec to run Visual Studio .NET when it first came out. After the computers got upgraded, I took C/C++ as my last class before graduation.

  71. Re:CS Fundamentals are important by jbolden · · Score: 1

    Sorry but if you don't know algorithm theory you don't know how to evaluate the code you are writing.

  72. Re:Sorry by KingTank · · Score: 1

    I don't see why knowing the "len" function is so important. Does remembering it off the top of your head allow you to do something that looking it up doesn't? Some people just don't fill their heads with useless trivia.

  73. Best way: Code review their github repo by presidenteloco · · Score: 1

    Interview casually and friendly, by credential review, experience review, and conversation about current issues and trends and technologies in the field, with some open ended questions designed to probe for technical insight, comprehension etc.

    Then take your shortlist of candidates after that, and code review a (preferably non-trivial) github repo that they are the originator of or the major contributor to.
    Look for clarity of the "what the hell is this all for" commenting that comes with the project, as well as good header commenting, good method, variable and class naming, good code factoring etc.

    That's it. No FOSS projects? Ask them to re-apply later.

    --

    Where are we going and why are we in a handbasket?
    1. Re:Best way: Code review their github repo by djinn6 · · Score: 2

      No FOSS projects? Ask them to re-apply later.

      Not everyone is going to spend months doing work for free just so they can apply to your company. Some of them have better things to do, like actual paid work.

    2. Re:Best way: Code review their github repo by presidenteloco · · Score: 1

      The point is, the FOSS project(s) are your portfolio, similar to how a graphic artist, photographer, architect demonstrates their ability with a portfolio.

      Can't be bothered to do at least one hobby/self-training/benevolent programming project? You don't love programming (or the castles you can build with programs) enough to be that good at it, so apply elsewhere.

      --

      Where are we going and why are we in a handbasket?
    3. Re:Best way: Code review their github repo by djinn6 · · Score: 3, Insightful

      The point is, the FOSS project(s) are your portfolio, similar to how a graphic artist, photographer, architect demonstrates their ability with a portfolio.

      The difference is, the artist's portfolio is built up with their paid work. Every project they work on gets added to it. A programmer can't simply take company code with them when they go interviewing, so the project has to be a hobby project.

      Can't be bothered to do at least one hobby/self-training/benevolent programming project? You don't love programming enough to be that good at it

      That logic doesn't follow. Not everyone who's great at programming works on hobby projects, and not every such project will be published on Github. I work with 2 people who don't program after work, and they are just as productive as everyone else. As for myself, I also don't publish my non-work projects, because I can't be bothered to write documentation for them and I've coded them to serve my use case specifically.

  74. Re:some things should be trivial for any expert by Mysticalfruit · · Score: 1

    Let's all be honest here... when was the last time you did anything other than use a sorting library. While I know what a bubblesort is, moreover I know it's the least efficient sort... shouldn't that be enough?

    --
    Yes Francis, the world has gone crazy.
  75. Re:Sorry by omnichad · · Score: 1

    The length of a string in python is determined with the "len" function. If you don't know this, you don't know python, end of story. If they are looking for a python programmer, you're out.

    If you only work with one or two languages, maybe. If you're trying to remember which syntax between Python, Java, PHP, VBScript or Javascript, then Googling is faster than recalling that slow-buried memory.

  76. Re:some things should be trivial for any expert by Prien715 · · Score: 1

    To continue your analogy, it would be like asking a piano expert to compose a 6/8 waltz with a G progressive chord structure with a minor chord on the 4rd beat of even measures that resolves to the tonic on by the 6th beat in the style of Mozart. And compose it on a whiteboard without a piano.

    Yes, this is technically possible but I would argue the ability to complete such a task has zero to do with one's ability to compose or play music that would become popular. I remember a conversation where a music theory professor raves to John Lennon about the technical names for all the obscure chord voicings he uses and how he uses them brilliantly where John just laughs and says something like "I don't know what you're talking about, but I think it's a compliment. Thank you"

    --
    -- Political fascism requires a Fuhrer.
  77. Re:some things should be trivial for any expert by mark-t · · Score: 1
    Actually, experts know that for small-sized data sets (typically less than 20, but ymmv), bubble sort is often the fastest sorting algorithm there is on account of how simple the instructions are to implement bubble sort compared to most other sorting algorithms, as well as being very cache-friendly to boot.

    So, no.... they do not.

  78. Re:CS Fundamentals are important by __aaclcg7560 · · Score: 1

    Sorry but if you don't know algorithm theory you don't know how to evaluate the code you are writing.

    I know code well enough to know when a sort algorithm is required. As for the implementation details, I can look it up.

    https://github.com/Sayan-Paul/Sort-Library-in-Python/blob/master/sortlib.py

  79. Re:some things should be trivial for any expert by doom · · Score: 1

    Analogies are cool and dandy, but miss the point by far.

    But if we think of an analogy as being like painting a picture, it becomes obvious that for most tastes a fine brush will perform better than the Jackson Pollock-technique, but as for a left-handed pianist with paint on his shoes, contemplating the quick sort algorith-- well, who can say?

  80. Good luck with that by JustNiz · · Score: 1

    I'd like to think this sort of thing will make a difference but I'm afraid any positive efforts will just be totally overwhelmed by the sheer numbers of incompetent/clueless HR departments that habitually outsource to even more incompetent web-based companies that claim to reduce applicants skills to a single score through automated tasting based on badly worded/ambiguous coding questions etc.

  81. Re:some things should be trivial for any expert by avandesande · · Score: 1

    That's complete BS. A piano player as part of his skills has to play music from memory by definition. There are entire tutorials available describing strategies to memorize music.
    As a programmer I am never asked to randomly crap out code on a whiteboard as part of my duties. Why should I do this in an interview?

    --
    love is just extroverted narcissism
  82. We do, by jopsen · · Score: 1

    It's called an internship. And it's the reason getting hired straight out of school isn't so hard...

    It would be cool the do the same with other candidates. Maybe one could try to contract people for a month before hiring them.

  83. Re:some things should be trivial for any expert by doom · · Score: 1

    I probably re-implemented it in Pascal when I took that class.

    I wrote shell-sorts in Pascal, myself-- almost as easy to write as a bubble sort, but way better performance-- but you'll note that our slashids are lower than his.

    If we're still supposed to memorize stuff about sort algorithms, long after the need to *write* sort code has evaporated with my old decks of Fortran cards, then we had better have some reason to think that we get some benefit from knowing these algorithms.

    The pretense that they're the F=ma of programming is just pretense, a matter of hand-waving.

    (Why isn't circuit fab and transistor technology regarded as "fundamental" for programmers? Isn't that what the field is based on?)

  84. Re:Do you have a better metric for Hiring? by lgw · · Score: 1

    Give the guy a piece of code to debug. On screen, using the debugger. Oh, just a snapshot of your code two revisions ago, when you found that nasty bug.

    Give them a piece of code written by that one jerk who believed in making his own job secure, tell to clean it up and add comments.

    Hand customer's specs, present a couple solutions, "pick the best one, make an case about it." Just stuff collected from a meeting three years ago.

    This piece of code is underperforming. Find the bottleneck.

    I like these. I wish I was allowed to use them at my current job.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  85. Re:some things should be trivial for any expert by jeff4747 · · Score: 1

    Likewise, if you're an expert programmer, you should be able to write bubble sort on the whiteboard without a web search

    If you're actually an expert programmer, you know that writing any sort of sort by hand is an utterly stupid thing to do. It's additional code you have to write, test and maintain that gains you nothing.

    An actual expert programmer calls sort() and goes on to the parts of the problem that are not implemented in a library.

  86. Re:Shocking! by jbolden · · Score: 1

    If I'm hiring someone to program mathematical algorithms I'd want them to be able to prove the circumference of a circle is 2*pi*r because that means they understand what pi is. I would want them to be able to give several derivations of pi, and if the job were hard enough how to prove pi is transcendental.

  87. Re:Shocking! by lgw · · Score: 1

    The issue here is being expected to memorise Knuth from cover to cover (ISTR there was a whole volume on sorting and searching) so that you can regurgitate [insert name of reviewer's favourite sorting algorithm] on demand without thinking - because any moron with time on their hands and a high boredom threshold could do that. It's a lazy assessment technique that gets used because the interviewers don't understand the job they're interviewing for so if they asked a sensible question (like here's a problem - how would you begin developing a solution) they wouldn't be able to understand the answer.

    I've had dozens of interviews in my career. The few times I've run into that, it turned out the shops were terrible places to work - failing such interviews is not a problem unless you're really desperate for work.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  88. Re:CS Fundamentals are important by jbolden · · Score: 1

    Of course. But do you know which sort algorithms are required when? What the tradeoffs are? Since we are talking AWS how various algorithms decompose with out of order execution or on various configurations of network speed, disk speed and memory? Etc..

    You can look all that up. But if you need to look it up then you don't know algorithm theory.

  89. I'm checking to make sure you're not a loon. by RealGene · · Score: 1

    When I interview, I ask about the work you've done; if you can't give me a clear, cogent explanation of what you worked on, what it did, and how you did it, that's a negative. The rest is general conversation. If you can't bother to ask a slightly insightful question about what we, the employer, do, or how we do it, that's a negative. If you can't perform some simple personal grooming before showing up, that's a negative. I don't care if you know how to fizzbuzz, because I know you can always look it up. What I want to be sure of is that you have the ability to ask the right questions about the tasks you will be given.

    --
    Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
  90. Re:some things should be trivial for any expert by angel'o'sphere · · Score: 1

    Experts are only like you describe them with work they do more or less daily.

    On my business card is written: software generalist. Because I have worked in nearly all areas that interest me, be it business wise (power companies, heavy industries, embedded autonomous car driving systems etc.) or task (trainer, mentor, Systems Analyst, Requirements Engineer, Dev Ops, Systems Administrator, Operator, Scrum Master, and plenty more)

    I'm good, because I forget everything that I do no longer need. And reinvent it when people have a problem in that area and ask me. And your example regarding "working with strings" is plain wrong and arrogant. In a modern IDE the code completion makes 50% if not more of the work. When I program half a year with a certain library, you can be rest assured that I know far less about that library then I would have known 20 years ago, where the IDEs where much worse.

    Trust me: when I have to use vi and bash, 50% of my time writing software is spent on forums like stackoverflow. But as my software usually runs better and I'm often still faster than the people I replace ... no one cares. I know plenty of things "not to do" in nearly all areas of IT and software, but plenty of things I simply forgot how to do them ... I look it up and can usually apply my knowledge immediately especially as I spot the wrong answers on the web more or less immediately.

    When I started reading this article/thread I had guessed I would perhaps need an hour to write Bubblesort from scratch. But only writing here gave me old memories back so I could probably cut it down to 10 minutes now: on the other hand I'm already 60 minutes here on /. ;D

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  91. Re:some things should be trivial for any expert by phantomfive · · Score: 1

    If you're an expert pianist, you ought to be able to reproduce a simple tune on the piano, by ear and blindfolded.

    You'd be surprised how many very, very good pianists can't do this, because they've spent all their lives reading music instead of listening.

    --
    "First they came for the slanderers and i said nothing."
  92. Plain and utter nonsense. by Qbertino · · Score: 1

    If you're an expert pianist, you ought to be able to reproduce a simple tune on the piano, by ear and blindfolded. If you're an expert skier, you can ski backward and ski on one ski. If you're an expert chess player, you should be able to memorize any chess board at a glance. If you're an expert mathematician, you should be able to do simple integrals without reference tables. Those are not skills that you need, they are skills experts simply can't avoid acquiring as part of working in a field for many years.

    Likewise, if you're an expert programmer, you should be able to write bubble sort on the whiteboard without a web search. If you're an expert Python programmer, you should have worked enough with strings so that you don't need to look up trivial functions anymore. Those skills are indicators of your experience, not specific job requirements.

    Plain and utter nonsense. All the skills you mentioned above are acquired by repeatedly doing a move or a task over and over again. Programming is doing the exact opposite and having the machine do the repeating - if you are a good programmer. Memorizing bubble sort is beyond pointless for a seasoned programmer. To the contrary, if you can still recall bubble-sort, you're probably not that seasoned yet.

    If you test problem solving in a job interview for programmers, you're good. If you're testing for by-heart reference knowledge, you're being silly. Perhaps the nearest equivalent would be to test how fast a programmer navigates his favorite development environment. That might actually be a useful test, vis-a-vis asking for him/her to recall bubble-sort in PL X,Y or Z.

    Bottom line:
    You got it totally wrong and missed the core and prime difference of programming to performing arts, sports and whatnot.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Plain and utter nonsense. by ooloorie · · Score: 1

      Memorizing bubble sort is beyond pointless for a seasoned programmer.

      That's the point. It's trying to test the ability of a programmer to write correct code for a simple specification from scratch. If you actually have it memorized, the interviewer will probably give you a different coding question.

  93. cs trivia and affinity bias by doom · · Score: 1

    CS geeks like to ask CS trivia questions to make sure no one with the "wrong" background gets in the door. ("No, I don't know how to write a binary sort algorithm off of the top of my head, I use existing code for solved problems.")

    This Google-inflicted problem is a huge improvement over the old Microsoft dominated days when "the cult of the puzzle" loomed ("A priest, a vampire and Richard Stallman all need to cross a river, but they have only one wind surfer, the vampire can not ride with the priest, and the priest is a Windows user, so...")

    The only job interview-style that I actually like is "Get out your laptop, here, can you write code to do this?"

    Even that has drawbacks though-- you could exclude a competent programmer that doesn't own a laptop, for whatever reason...

  94. Re:some things should be trivial for any expert by angel'o'sphere · · Score: 1

    in an introductory Algorithms class as an example of what not to do.
    That is wrong. I suggest to check Wikipedia, facepalm.

    I can't recall any instance where I actually needed to do so as part of my job
    I guess that is true for nearly everyone here.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  95. Re:some things should be trivial for any expert by enjar · · Score: 1

    We could always keep an old motherboard and sound blaster card around, and have interview candidates move jumpers around till the correct sounds come out. Probably about as relevant as re-implementing bubble sort, and as relevant to a modern software job. :)

    FWIW when I interview candidates I far prefer to get them to whiteboard/pseudocode a solution to a real problem that we have faced recently and how they would have approached it. I stress that I'm not looking for a "correct" answer, I want to simultaneously give them an example of the problems they would actually face on the job they are being hired for (so they know what they are getting into), as well as for me to see how they develop a solution and then have that solution critiqued by someone. The interface of the whiteboard is preferred since it gets passed the "you don't have my OS" and "you don't have my editor/IDE" problems and gets right to the thinking, which is what we are ultimately hiring them to do. In today's polyglot programming environment, the thinking is key.

    I also put a high value on asking about how they interact with others, how they document their work, how they interrogate a spec, how they write a spec or make a design given a desired feature and how they write tests. Writing code is one part of the equation. In our organization, unit tests are required and you need to interact with a quality person to get other system tests sussed out. We also have doc, marketing and customer facing technical and marketing people who developers interact with on product teams on regular intervals. Code reviews can be quite rigorous (although not cruel -- there's a difference -- but you must know your code).

    It's important to find people who can deal with that environment AND deliver good code, far more important than finding someone who memorized bubble sort.

  96. You don't have to ask "trick" questions by RobinH · · Score: 1

    I always ask technical questions, but never "trick" questions or really hard ones. If you ask a FizzBuzz-like question, there's no reason anyone needs reference material and it separates most of the fluff that apply for programming jobs right away. There's no way I'd ask for a bubble sort or a binary-heap-blah-blah-blah because I wouldn't be able to answer it. But you *must* ask technical questions in an interview.

    --
    "I have never let my schooling interfere with my education." - Mark Twain
  97. Re:CS Fundamentals are important by __aaclcg7560 · · Score: 1

    Since we are talking AWS how various algorithms decompose with out of order execution or on various configurations of network speed, disk speed and memory?

    AWS is just a bucket for storing my website assets over the Internet.

    But if you need to look it up then you don't know algorithm theory.

    I don't use sort algorithms for 99% of the code I write at work (IT stuff) and home (web development). I know how to implement binary and bubble sorts. If those don't do the job, I'll look for something else in the "Mastering Algorithms with C" book. ;)

  98. Re:some things should be trivial for any expert by cloud.pt · · Score: 1

    Some software companies, like some painters, are successful through making horrible, under-performing software that happens to work. Likewise some horrible programmers end up developing great code that works even though they don't use best practices. Quality isn't on the product, it's on the audience.

    Granted, chess and the other stuff are highly analytical, and in the end, skilled strategists are prone to rank up elo, yet even in chess the elo system is not fail-proof.

    But get two guys in front of an internet-connected laptop: one who has been winning programming contests the past 5 years and an industry veteran developing for the web the past 5. Now tell them to build a simple, native mobile app in 1h with multiple features that take 3 hours to make together, without restricting access to any source material as long as they don't flat out copy-paste core functionality. Who do you think gets farther in the allotted time? I'm pretty sure it's not the whiz-dev.

  99. Re:Shocking! by angel'o'sphere · · Score: 1

    And most people use for that the database.
    Then you have the data already in memory in the way you later want to "walk over it".

    As others have pointed out: doing stuff like this by hand, is no longer relevant. Probably since 20 or even 25 years.

    It helps to learn stuff like this in university, as plenty of other stuff is build on top of it, but the requirement to code such algorithms, sorry ... never experienced that outside of the university.

    In other words: the requirement only exists if you are a contributor to the STL or boost, or similar libraries.

    I guess the only ones who touched such topics are the big data guys from Hadoop/Spark, Casandra etc.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  100. Re:Shocking! by x0ra · · Score: 1

    I spend actually very little of my day doing actual code, that's the fun part. Design + tests takes most of the time.

  101. Re:Shocking! by x0ra · · Score: 1

    Most of the job is actually architecture, not implementation...

  102. Approach by kjell79 · · Score: 1

    I am a notoriously poor interview candidate because of all this stuff. I don't spend my work days memorizing algorithms or other stuff that can be looked up elsewhere. What I bring to the table is someone who can find and solve problems. Basically what an engineer does.

    What I look for when I'm on the other end of the table is someone's thought process and how they go about solving problems. Can they learn? Can they problem solve? Are they easily frustrated or give up without a fight? That's important to me. I can't tell you how hard your job gets when you hire someone who BSed their way through these technical questions. Then you realize that they have no aptitude other than to memorize interview questions.

  103. Re:Shocking! by x0ra · · Score: 1

    which probably would only be required for 0.01% of the jobs...

  104. No. Wrong. by presidenteloco · · Score: 5, Insightful

    By using a "name-brand algorithm" which I learned in 2nd year or whatever, umpteen years ago, you are testing for cramming ability, recency of test-cramming at school, and mental copy-paste of whatever was crammed.

    You are definitely not testing for problem comprehension and creativity of solution or methodical approach to solution. All of those skills will be severely impaired by time-pressure panic, if you have a good programmer in front of you who has not crammed that particular cookie-cutter name-brand algorithm lately.

    It would be one step better if you just said: write an algorithm to sort this array/list of values. But you still chose a problem for which comprehension, creativity, and methodical solution skills are not needed, if the person happens to pattern match your posed problem with the bubble-sort they just memorized for interview-readiness purposes.

    So if anything, choose a simple-ish problem that is NOT one that has readily available mental copy-paste cheats available.
     

    --

    Where are we going and why are we in a handbasket?
  105. Re:If not that then what? by x0ra · · Score: 1

    Architectures & tests (as in unit-test / integration test) questions. Implementation details is almost irrelevant today.

  106. Re:Shocking! by TheRaven64 · · Score: 1

    And you consider designing an algorithm to be implementation not architecture? I hope I never use anything that you've written.

    --
    I am TheRaven on Soylent News
  107. Re:Shocking! by TheRaven64 · · Score: 1

    That's really only true for entry-level code monkey jobs. Anything else will involve a lot of data structure and algorithm design.

    --
    I am TheRaven on Soylent News
  108. Unintended - and intended - consequences by taustin · · Score: 1

    This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn't help diversify the field with women, older people, and people of color.

    I suspect that, in many cases, that's the actual goal of the entire interview process. It's a clever, subtle way of discriminating with plausible deniability.

  109. Re:some things should be trivial for any expert by TeknoHog · · Score: 1

    Those are not skills that you need, they are skills experts simply can't avoid acquiring as part of working in a field for many years.

    Good point. The problem is that a good candidate isn't necessarily the same thing as a seasoned expert in that field. Sometimes the best people come from outside the field, with new ways of thinking about old problems. Even within a specific IT field, for example, a decent programmer is supposed to be learning new languages and tools every now and then. If you're expected to work for years with the same static skillset, it doesn't exactly look like a great place to work.

    --
    Escher was the first MC and Giger invented the HR department.
  110. Re:I understand this is tough on older programmers by tender-matser · · Score: 1

    Because all those stupid snobbish tests tend by their very design to keep newcomers out. If most programmers are white and male, this will make sure things stay that way.

    Bubble sort is not something you stumble upon when you learn to program by yourself -- in real life, people tend to re-invent selection and merge sort (and probably, rats or bees will do the same if you trick them into having to sort stuff). If someone is able by to consider by himself a scenario where bubble-sort is useful, then he is either someone from inside the "culture" (so part of the existing demographic) or someone who is over-qualified for a code-monkey position.

  111. Call yourself experts? by JustNiz · · Score: 1

    I'm frankly amazed that apparently no-one replying here can even write a simple bubble sort.
    yes I know that in the real world it makes no sense to reinvent the wheel, and that most modern languages/extensions/toolkits would already have something more optimized available, but still a bubble sort should be a pretty basic problem for anyone with a CS degree or anyone that calls themself a software developer.

  112. Create something you haven't before by FeelGood314 · · Score: 1

    Programming is about creating something that hasn't been created before. So a programmer has to be someone who can create something new. It is the interviewer's job to find out if the programmer can create something new so the interviewer asks a question they hope the programmer doesn't already know and observes how the programmer comes up with a solution.

    Every interviewee should know ahead of time that this is the type of question they will get. The interviewer should also know why they are asking the question. The problem is that no one told these rock stars who are taking to twitter this. (maybe over use of twitter has a correlation with intelligence) The other thing I see is interviewers who don't know why they are asking the question and how to evaluate the answer. However this isn't a problem, it is just a great big flashing warning not to work at the company.

  113. If you actively program in python by Kartu · · Score: 1

    You will know how to check string length.

    That some dude at Google with 30 years of experience, who is likely not coding much, let alone in Python, doesn't know how that works, tells nothing. (oh, I don't know how either, but I'm pythoning only to fix a thing or two in my enigma2 sat receiver)

    This whole thing sounds like someone fails to get people in on merit and wants to somehow justify using "other ways".

  114. Meh. This is nothing new. by DarthVain · · Score: 1

    This has been around for a very long time and is nothing new. I agree, it is ridiculous and unrealistic, but it is what it is. There are a number of reasons why I believe it is done.

    Firstly likely the person that put together test doesn't know a snippet of code from his elbow to start with. That could be the Manager, or the folks from HR. Could be they just stole the method from somewhere else to use. Secondly is the same reason why they want someone with 20 years of coding experience with 10 different specific languages for an entry level job. Part of this again could be the person who wrote the job description doesn't know what any of those things are really, only that they are important and someone told them they were used somewhere in the organization. The other somewhat unreasonable expectation is that the person being hired is able to literally walk out of the interview and sit down at a desk and start coding on a particular established project...

    Many many moons again I remember I had a particularly bad C programming "professor". His class was a joke. I'd already taken C at a higher level at a different school, but was required to take it again. His overheads (yes this was a million years ago) were filled with errors and he was a horrible teacher. He had a Phd I believe, I'm not sure if it was really related or not. In any case his final exam worth 60% of the grade consisted of some paper, a pencil and several problems he wanted solved using perfect code. His grading consisted of a couple red "X's" and a seemingly random percentage as your grade. I complained, and asked him to explain to me exactly what was wrong with specific sections, to which he refused. I thought about going to the head of the department, when I leaned he was the head of the department. I let it go and moved on with my life (I passed the course anyway, I had a 97% going into the exam anyway, it was the principle of the thing).

    Several years after that (still about 100,000 years ago) I applied for a job, which admittedly was a bit out of my pay grade at the time in hindsight, however either the other applicants were few or horrible as I won an interview. There were a bunch of components to the interview, but one of them was the technical test. Again, like above you're sitting in a room with a #2 pencil and a bunch of paper, and several questions and the ask is for actual code. At this point I *had* at least done some contracts which did require coding, however I always have my reference material, the internet, and most importantly all my previous code I've written in the past which has been leveraged and re-leveraged a million times over, "stealing" this or that sections of code I've already written that would work with minor modifications.

    I do very little coding these days. However what little I do people are usually impressed I can pull something out so quickly, which is almost entirely because I've probably already written something similar at some point in the past and all I have to do is find it, modify it and bam! Done, Whenever I think about backing up my work computer the first thing I think about it the tiny amount of space occupied by my library of code. Could I do it from scratch, sure it would just take me a lot longer... Could I write it using a pencil and paper and have it compile without issue and work properly on the first pass? Probably not.

    Anyway it is a stupid method, but it's been around forever and I don't see it going anywhere. Really they should let you use whatever you want, if you have the resources to get to the eventual answer who cares. Hell even if you give it to someone else to do, at least you have the networking skills to know people who know how to do it! :p

  115. Hello, my name is... by uncqual · · Score: 5, Interesting

    Hello, my name is Anonymous Coward. I am a software developer.

    I was talking to you about a database kernel position which is a field I have spent much of my career in and in one case was a key member of the design/coding team developing the initial (and several subsequent) releases of a revolutionary enterprise class scalable DBMS which is still being sold over thirty years later and in production at many of the biggest companies. You, of course, must have known that because you contacted me and, unusually, I decided to stop by and chat with you because I have a soft spot for startup companies, database, and engineering managers who look around seeking talent themselves rather than relying solely on recruiters. You asserted that your startup was developing an enterprise class scalable DBMS system so it seemed like it might be interesting.

    You then asked me to write, on the whiteboard, a 'debit/credit' function that took three arguments and returned, IIRC, the amount transferred (admittedly that was a little odd). The first two arguments were account objects (passed by reference if I recall) representing the source and destination accounts respectively and the third argument was an amount (presumably in the same currency as both accounts were maintained in) to transfer (a float if I recall -- that, of course, is likely stupid in itself when dealing with currency).

    I, understandably, was perplexed -- you must want something more than this simple function (I'm not fresh out of high school looking for a summer job) and I tried to get more requirements out of you and got none except when I asked if this function was to provide its own concurrency control or if a higher level would have insured both accounts were sufficiently locked you said something like "Okay, you need to provide the locking" and agreed that I could assume existence of "Acquire/ReleaseWriteLockAccount(AccountObject)" functions.

    Okay -- so I'm thinking this is a concurrency problem, no problem (still lame, but okay...). Obviously I need to deal with deadlock potential so I ask if I there is some unique attribute of each account (you didn't give me a description of the account object's public members) that had a well defined order that I (and other developers) agreed to use to order locks when locking multiple accounts to eliminate or at least reduce deadlocks. You weren't prepared for the question so I asked if I could assume (I think) that the account number was a public field, unique among all accounts, and supported the LessThan operator with traditional semantics. You said, sure.

    I wrote the code making sure to lock the accounts in order of account number, transfer the funds, unlock correctly and return the required value.

    You were not happy -- what you really wanted me to check, it turns out, was that the source account would not end up with a negative balance and fail to do the transfer and return 0 as the result.

    What you didn't seem to realize is that in the real world cash balances on individual accounts go negative sometimes. In fact, at that instant, I had one (of multiple) accounts at one brokerage firm which had had a small negative cash balance due to an inter-account transfer out for over six months and no one cared because I had multiple accounts at that firm with a net value of well over a million dollars and cash balances (well, "cash equivalents"), overall, of a few hundred thousand dollars.

    Both of us made a decision in that discussion. You decided you didn't want to hire me. I decided I would never work for you or your company as I didn't want to risk working on/at a team/company which was so poor at evaluating people and would pass on good developers who know how the real world works and would likely hire unqualified people who answered your kindergarten questions the particular way you wanted.

    Of course, I was glad that we both made those decisions because your company seems to have never got past a very modest A round and seems to have disappeared off the face of the Earth quietly.

    --
    Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    1. Re:Hello, my name is... by uncqual · · Score: 1

      Nope. The brokerage firm was fine with this situation and were not surprised by it at all - I doubt very much that it was a bug. It might have created an alert to an account manager somewhere who let it remain -- I wouldn't know. There may well have been a higher level check somewhere that made sure that all of my accounts, collectively, didn't have a negative balance -- I don't know. The negative balance was tens of dollars and not worth anyone bothering me about or me doing anything about - in the end it settled out through natural account activity. It might even have been less than the commission on the activity that caused it.

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    2. Re:Hello, my name is... by A+Friendly+Troll · · Score: 1

      Are negative cash balances not usually a thing where you live?

      Half my country is "in the red", their bank accounts are well below 0.

    3. Re:Hello, my name is... by uncqual · · Score: 1

      Although "open ended" questions are good for some things, and I try to ask them, they are generally not appropriate for ten minute interview coding questions - especially for senior people.

      In the real world, the code one writes is generally operating in substantial context which arose from design, not raw coding - often as part of a much larger system the developer is participating in building, enhancing, or maintaining but sometimes (such as in the case of a library you are distributing) that context is virtually entirely contained in an interface spec. This context is generally quite extensive and, especially in the case of the code being part of a system you are building, well embedded in developers' minds. The more careful a developer is, the more she considers this context. When deprived of context, she could spend ten minutes of what I intended to spend just ten minutes on just getting the requirements down and not actually getting to solving the problem. This is counter to the primary goal of coding exercises for senior people -- to flush out those who actually can't code their way out of a wet paper bag in spite of their claims and/or to identify if the candidate has a grasp of a particular concept.

      For example, I regularly pose a simple programming problem involving multithreading and concurrency that flushes out the inability to write a tiny bit of decent code and meet requirements without overengineering, while also giving me insight into if the candidate has a clue about concurrency issues.

      I expect senior people to give me a correct answer (there's one tiny twist I leave in and if they seem to be having a problem with that, they get only tiny demerits and I give them a five word hint which almost always results in an "ah, yes, of course" type of response and they go on to solve the problem) and the good ones almost always do.

      "Fresh outs" with limited experience very rarely solve the problem correctly (which actually surprised me at first, but it just seems to be a reality). With them, I'm looking to see if they do stupid things like just layering antipatterns on antipatterns in a vain attempt to fix their code, if they can follow my example of where their code fails, or if they keep insisting their code is correct (when I've just proven otherwise). I prefer a "Hmm... I afraid I can't figure this one out, I'd need more time and research to solve it" -- at which point I may give them the simplest solution and ask them to review it and explain to me what it does to make sure they can read code and follow it.

      The problem is almost as completely specified as I can reasonably make it. The "best" answer is about six C/C++ statements and I've never seen a correct answer that was more than about twice that complexity. I try to tell the candidate what NOT to worry about. For example, I tell the candidate:

      Performance is NOT an issue. This function will be called VERY rarely, perhaps only twice per system startup. The best solution is the shortest and simplest, any additional complications introduced to enhance performance is a bug, not a feature. The best solution for this problem, in fact, would not perform well in a generalized library which may be called frequently. We may discuss opportunities for performance improvements later.

      I also tell them that the best solution I've seen is not more than ten executable statements (this to make set some general expectations of the expected complexity). I stress that correctness is an absolute requirement and more important than anything else (such as code length).

      I also tell them that if they have any concerns about any aspect of the problem to ask me if they should concern themselves with those aspects before expending energy on doing so. I do this because there is a one aspect that I intentionally leave unspecified as a launchpad for later discussion with candidates that solve the problem successfully. However, out of the many times I've posed this

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
  116. How I interview my candidates. by 140Mandak262Jamuna · · Score: 1
    Lucky for me I have not had to take an interview since 1994. And I have been on the asking side ever since.

    I give them a problem to solve. I ask for an algorithm, not specific language. Something like: "A trip has a starting city and an ending city. There is a list of all the trips made by John. Where did he start and where did he finish?". Then the interview proceeds based on the answers I get. Most people do linear search. "How does this answer scale as the number of trip increases?" "What happens if he started and ended in the same city?" "What if the trips did not form one chain?" "Can you find how many chains there are?" "How will you speed up your code?".

    More than the solution or the answer, I am looking to see if the candidate understands me and can he/she tell me what she/he is doing. If I say, "ok, Let us say you build a map between starting point and the trip index. Would that help you speed up your code?" can the candidate understand what I am saying, if he/she can't understand ask intelligent questions to understand me, do they show an interest in understanding and solving the problem, are they comfortable in communication etc.

    Puzzles have their place. If you solve puzzle instantly, it just means you have seen it before. That gives me no input. If you muddle through the solution, it means it is a fresh puzzle. Opens up lots of avenues for communication, letting me ask questions, offer suggestions and hints, and see how these hints are understood etc. I take extreme pains to put the candidates at ease. Tell them up front, "I am not looking for a final finished correct answer. I am looking to see how you find the answer. So feel free to think aloud, tell me how you plan to solve the problem, ask me if something would work or not etc. "

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  117. Re:racist Karla by JustNiz · · Score: 1

    I for one totally agree with your point and am already more than fed up with the obvious double standards in our society.

  118. Match mathod to objective by golodh · · Score: 1
    It all depends.

    If your objective is merely to hire a code monkey, adapt the interview to assess immediately applicable coding skills (like knowledge of syntax, coding speed and accuracy, ability to code to specs, code readability and maintainability).

    If your objective is to hire a programmer who has to be able to come up with an algorithm to match the specs, by all means review algorithm knowledge and coding skills, but be sure to include problem solving skills.

    When looking for a software engineer, ensure the applicant can program, but focus on above-average problem solving skills plus theoretical background plus ordinary engineering skills.

    That alone gives you three different types of job interview.

  119. Re:Discrimination by gatkinso · · Score: 1

    Red-Black trees.

    --
    I am very small, utmostly microscopic.
  120. Re:Do you have a better metric for Hiring? by pr0fessor · · Score: 1

    Someone who works with me asked me not to tell anyone at work he is a contributor to a well known open source project even though the project has nothing to do with what we do as a company and his contributions are mostly for architectures we don't even use.

  121. Re:some things should be trivial for any expert by thegarbz · · Score: 1

    If you're an expert forum poster you would have realised by quoting the things you did you have missed the entire point. Which is that when you employ an expert in a field for a job you don't ask stupid unrelated shit.

  122. stupid bitch by JustNiz · · Score: 1

    >> Karla Monterroso, [...] This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn't help diversify the field with women, older people, and people of color. ...or you could make the far more accurate argument that it works against people that are using whatever lame peecee excuse to dismiss the fact that they haven't actually bothered to learn their subject.

    BTW as an "older" engineer myself, I am happy to not get a job if I can't sufficiently demonstrate that I actually do know my shit, and I resent liberal peecee morons like her trying to grouplabel and speak for me.

  123. The flip side -- why they're asked by plsuh · · Score: 1

    Having been on both sides, I can tell you why companies ask these questions -- they're looking for basic technical knowledge and competence. All too many times we've seen candidates who can talk a good fight and who can (given lots of time and access to Stack Overflow) write a program that succeeds using copy-paste. However, these are not the people we want to hire. Once we're past the basic knowledge and competence we can look at fit, people skills, etc., but I for one have been burned by new hires who bamboozled a non-technical manager.

  124. X86 has POPCNT by Ixpath · · Score: 1

    x86 has had POPCNT since SSE 4.2.

    This exact thing has happened to me at Amazon and Google interviews. At Amazon the interviewer was apparently one of those people who don't like to be corrected and ended the interview right there. Now I always reply, "The answer you are probably looking for involves a lookup table..."

    1. Re:X86 has POPCNT by gnasher719 · · Score: 1

      x86 has had POPCNT since SSE 4.2.

      If you want it to be fast, you need to be careful because popcnt has a false dependency on the output register. You write "x = popcnt(y)", but the processor interprets it something like "x = x*0 + popcnt(y)", So popcnt instructions storing their result into the same register have three cycle latency when they should only have one cycle latency.

      Best to use an inline assembler instruction that assigns x = popcnt(x). No false dependency possible.

  125. Abusive interviews or enjoying what you do? by Neuronwelder · · Score: 1

    If you want to work at some huge Company with a hard interviewer, that's your choice to make. I have known a bunch of coders who got together (either from getting the old-age boot - or simply in disgust of their job) and form their own little company. They are happy and doing quite well! If you are looking for huge sums of money; that comes with a price: Stress, time constraints, working late hours. and maybe working through weekends. If it were me, I would have majored in at least one other field in college. Just in case I was unhappy with the one I'm in. (You can always code on the side for fun and staying current. They have Internet classes.) Coding is fun and I wish I had extra time to hone my skills.

  126. Discrimination? by cgriffiths · · Score: 1
    Here's the extract from TFA:

    People spend weeks preparing for this process, afraid that the interviewer will quiz them on the one obscure algorithm they haven’t studied. “A cottage industry has emerged that reminds us uncomfortably of SAT prep,” Karla Monterroso, VP of programs for Code2040, an organization for black and Latino techies, wrote in a critique of the whiteboard interview. “An individual can spend thousands of dollars learning the cultural norms necessary to get themselves into a desk at a technology firm.”

    Firstly, isn't most of this information online for free? If you have the skills necessary to work as a software engineer then it shouldn't take much time to practice and learn the skills necessary for interview. No matter which job that I apply for I have to take time to research the company, learn about their ethos, modus operandi and be able to explain to them how I'd fit in. I also have to exhibit the skills relevant to the job, which in this case is the much hated whiteboard but could equally be through presenting a portfolio, examples of past work and answering their question as they crop up. This isn't anything unique to software engineering, it applies to pretty much any professional job, whether something as low paid as an "administrative assistant" or more advanced roles as a translator or software engineer.

    After reading the rest of the medium article, all that it seems to state is that the interviewing for tech roles is broken by prioritising algorithms which may not be relevant to the role posted. Again this isn't discrimination, it's a testing of unnecessary skills or are white males born with an innate ability to spew forth algorithms which they are unfamiliar with?

    Have I missed something here, are interviews genuinely discriminatory?

  127. Re:racist Karla by frovingslosh · · Score: 1

    Thank you moderators for proving me right.

    --
    I'm an American. I love this country and the freedoms that we used to have.
  128. Re:some things should be trivial for any expert by Megane · · Score: 1

    Bubble sort is four operations: two loops, a compare, and a swap. It's not just simple, it's idiomatic. And it demonstrates that you understand the basics of how sorting works, rather than as some magic black box that takes one lump of data and returns another sorted lump of data with who knows how much dependence on heap usage. Did you know you can use bubble sort on a singly-linked list? If you have data in a small linked list (not uncommon in the embedded world), this (combined with linked-list-fu) will let you sort something that isn't in a tidy little array. And for small data sets, bubble sort isn't that much worse, and the code will be easier to understand. If it isn't fast enough, you can always replace it with something better.

    It's better to be right and a little slower (especially with the speeds of modern jellybean CPUs), rather than implementing your own version of a "faster" sort and getting it wrong. It's hard to get four operations wrong. In embedded, you don't want subtly wrong code lying around in your product. I had one case where a subtle bug caused a relay to sometimes not change state. Four (!) years later we figured out it wasn't just the relays not getting enough coil current. Ripping out the interrupt-based code and replacing it with foreground-only code not only got rid of the bug (interrupt synchronization errors can be truly evil), but the code was a couple hundred bytes smaller, too. (the device had 4K of flash)

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  129. Re:some things should be trivial for any expert by Megane · · Score: 1

    Except that the point isn't to sort some data as fast as possible, or even to be coded perfectly, it's to watch you write some code for half an hour.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  130. Re:Ummm... by jeneag · · Score: 1

    So do you expect on interview surgeon to perform surgery? Want to sign up as a test subject at your local hospital so that they can have potential hires perform some surgery on you?

  131. Is this a trick test? by prefec2 · · Score: 1

    Looking up API info on the net is indeed a usual thing. Especially, in areas where you seldom operate. For example, making a string out of an object is a thing I do rarely, as such stuff is done by the logging framework for me. However, the one question about NP is valid. At least you should know what it means and why complexity matters.

  132. Re:Google interview nightmare by jeneag · · Score: 1

    Probably because Google sees you as a "resource". I'd personally never would work for a company that asks these dump questions. I don't have CS degree or PhD or even formal computer education. I barely finished school, but I'm working for over 19 years in software industry.

  133. Re:some things should be trivial for any expert by lederhosen · · Score: 1

    ff your dataset is 20 elements then every in-place sorting algorithm will be equally cache friendly (on the d-cache), if you are worried about the i-cache, I guess it is better to use just ONE sorting function, qsort for example (you will need a fast sort for larger arrays anyway).

    If you would run your sorting algorithm on a really small data such as 20 elements (and care for O(1)), my guess is that a normal bubble sort is not what you want. I guess you would use a combination of loop unrolling and some SIMD tricks and maybe a memory pre-fetch and that the result would NOT look like bubblesort.

  134. Re:some things should be trivial for any expert by JesseMcDonald · · Score: 1

    I can't recall any instance where I actually needed to do so as part of my job

    I guess that is true for nearly everyone here.

    Which is exactly why it's a bad interview question. The more experience you have, the longer it's been since you've been in that introductory algorithm class and the less likely you are to remember the details of a sorting algorithm which you should never choose for any non-trivial task. The ability to answer that interview question has nothing to do with your practical skills as a programmer; it tests only your ability to remember useless trivia.

    in an introductory Algorithms class as an example of what not to do.

    That is wrong. I suggest to check Wikipedia, facepalm.

    Since you refer to Wikipedia, I'll leave this quote here as further evidence that bubble sort is best relegated to the role of a bad example:

    Even among simple O(n^2) sorting algorithms, algorithms like insertion sort are usually considerably more efficient.

    Due to its simplicity, bubble sort is often used to introduce the concept of an algorithm, or a sorting algorithm, to introductory computer science students. However, some researchers such as Owen Astrachan have gone to great lengths to disparage bubble sort and its continued popularity in computer science education, recommending that it no longer even be taught.

    The Jargon File, which famously calls bogosort "the archetypical [sic] perversely awful algorithm", also calls bubble sort "the generic bad algorithm". Donald Knuth, in his famous book The Art of Computer Programming, concluded that "the bubble sort seems to have nothing to recommend it, except a catchy name and the fact that it leads to some interesting theoretical problems", some of which he then discusses.

    Bubble sort has a few niche uses, as I already alluded to. It can be faster when the list is extremely small (like three elements or less) or when the input list is known to be very nearly sorted with only a few close elements swapped. Such cases are vanishingly rare in the real world.

    --
    "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  135. Re:Shocking! by x0ra · · Score: 1

    That's micro-architecture, which would lead to a test failing if that block is relevant, so we're back at the spec sheet design. YAGNI in 99.99% of the time.

  136. Whiteboard Interviews Made For College Grads Only by rutabagaman · · Score: 1

    I've worked as a programmer mainly at companies in Silicon Valley. I've taken and given plenty of whiteboard coding interviews, including for Google.

    The problem is that they were designed originally to find recent college graduates who have topics like red-black trees or counting sort at top-of-mind. This process weeds out older folks who might have a lot more practical knowledge but aren't as well versed with more academic topics that aren't encountered much in the real world. Instead, people are given an expectation that they need to brush up on their academic skills for a non-academic job interview, which is an indicator of a broken process.

    Besides, even Google has publicly admitted that there is almost zero correlation between interview scores and the resulting job performance score. It's disheartening to see that they really haven't revisited this process then, despite their claims of data-driven decision making.

    --
    (insert witty/esoteric/dumb quote here)
  137. Re:Shocking! by jordanjay29 · · Score: 1

    Not if you want circumference. If you want area, that's correct.

  138. Make sure you actually know the answers... by ndykman · · Score: 1

    I have an advanced degree in Computer Science, yet for various reasons, I'm in the market. I usually just have to bite my tongue and go through the paces, but I've never been in the room with anybody that understand algorithms to the degree that I do that asked these questions. Because the people that have the same understanding that do look at my education and just skip to what I'm interested in, what they are looking for and so on.

    Once, I decided to use recursion just for a change of pace. In the end, the interviewer just showed that he didn't actually know what tail call form was. Remember, the people that really know what they are talking about will always admit what they don't know and what they look up. It's the one that are trying to be and look clever that are problematic.

    Also, if you are just trying to see how people approach problems, just say so. Also, the vast majority of programming isn't oriented around algorithms and data structures, it's all domain representation and library integration. But nobody asks "let's try to capture the essential properties and methods of a class for a shopping site customer." for example.

  139. Re:diversity?? by retchdog · · Score: 1

    not that you're wrong, but programmers have been complaining about whiteboard tests since they were still blackboard tests, and haven't accomplished jackshit to change things. i don't see how the "SJWs" could do that much worse.

    --
    "They were pure niggers." – Noam Chomsky
  140. Permatemping is bad. by sethstorm · · Score: 1

    Much better way is just do a contract to hire.

    Only if your goal is to abuse or misclassify someone.

    --
    Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
    1. Re:Permatemping is bad. by ghoul · · Score: 1

      Permatemping would be to keep them as contractor even after you are sure they are working out and I agree its bad.
      Hiring as contractor for 3 months means they still get paid unlike industries like Law and Stock Brokers where interns get paid a pittance just to get a chance.
      Some places interns even pay the company to get a chance to try out for a job.

      --
      **Life is too short to be serious**
    2. Re:Permatemping is bad. by sethstorm · · Score: 1

      Yet it is abused more often than not. Better to have the probationary period to disincentivize abuse.

      --
      Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
  141. Re:CS Fundamentals are important by __aaclcg7560 · · Score: 1

    The point is how much you already know.

    Or don't know. As Dirty Harry (Clint Eastwood) once said, "A man got to know his limitations."

    I can read French with a dictionary I can read English without one.

    If you know the English language, and since 45% of English words have a French origin, a French dictionary should be optional.

  142. I once hired a guy who could ace that stuff. by hey! · · Score: 1

    Worst hire I ever made.

    I don't give that kind of interview, I mostly ask leading questions. But it very quickly became clear this guy I was interviewing for a team lead position had an encyclopedic knowledge of the GoF patterns book. You could stick a pin in the index and he could sketch the pattern from memory. And he knew a whole bunch of other stuff. He could discuss the latest developments in the field easily and fluently. So I thought, the team will probably enjoy working with this guy. He's pretty interesting.

    When they started fail to meet deadlines I looked at the code they were producing and I was shocked. Superficially the code had all the right bits, but if you dove in you quickly realized that functionality was scattered hither and yon. It was lava flow behind a facade of design. I might as well have given the team a book as a leader because this guy had no actual understanding of how any of that stuff worked. And yet if you asked he could deliver a cogent, but canned explanation that was utterly convincing... until you asked him to show how the stuff he actually produced corresponded with the theory.

    It was the most perfect facsimile of knowledge I have ever encountered. I had no idea that anyone could keep so much in his head that was, in effect, gibberish to him.

    Now it so happens this guy was Indian. In my experience Indian programmers are neither better nor worse talent-wise than American ones. The best are outstanding and the worst are terrible. But this guy was bad in a particular way that could only have come out of an educational system that puts a high premium on rote memorization and facile regurgitation of what the teacher says. And that took this guy far, as far as a master's degree at an American university, although in retrospect that's pretty disturbing.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  143. What qualities are being searched for? by superfast-scooter · · Score: 1

    I wouldn't call these 'confessions' nor 'sins'. They're observations I'm also making as I go through the process right now, 7 years since my last job search.

    This is my experience thus far -

    Context: I have over a decade of experience and a MS-CS. In the last 6 years I was part of some amazing projects (easily the most meaningful), I worked on getting a business off the ground, and spent little over a year being a full-time parent. I've been in many positions to interview, and make hiring decisions before.

    I've interviewed unsuccessfully at the big employers in my area (GOOG, AMZN etc.) As I think about the places I didn't enjoy the process and wouldn't have looked forward to working at, the common theme would be that none of those groups cared to go into my past work history. They'd jump right into their academic-CS questions after introducing themselves. I can't imagine what the review process looks/sounds like afterwards, but they don't gather much data points about other qualities that separate each of us. These are also usually the places where a main reason for joining seems to be - "you'll be working with very smart, intelligent colleagues." My personality is such that the application matters more, so it doesn't matter if everyone around has high IQ if they're applying it towards the development of say, advertising platforms.

    I wouldn't follow these practices put in place by MSFT/GOOG if I were to either run my own business, or were involved in at another company. There are other qualities to determine whether someone would be a good fit, and there are many groups out there who do a better job with this. What matters is if you hire/join colleagues you enjoy solving problems with, and having a civil and professional environment to do it in.

  144. Re:some things should be trivial for any expert by Pentium100 · · Score: 1

    I may be able to write bubble sort on the whiteboard (with some mistakes like a missing semicolon), but I may not know that it is called bubble sort.

  145. Long Live the Sorting Hat by epine · · Score: 1

    If you "don't do riddles" then I actively don't want to hire you - the entire purpose of a software engineer (i.e. not a flunky programmer) is to do riddles, all day, every day. If you don't want to do that, you don't want to do the job I'm interviewing you for.

    Yeah, and I'm happy to pass on being hired by you, as well.

    Long Live the Sorting Hat.

    I've read electronics data sheets that were riddles, wrapped in a mystery, inside an enigma. Those data sheets are tying to tell you something, and it's probably not that you should busy yourself with becoming better at solving riddles.

    Riddle me this, Batman: what do your customers want? That problem probably shouldn't be addressed with riddle-brain either.

    But I will concede that there's a time and place for mastering the art of solving the Really Big Riddle. Like that time the London Whale put $2 billion up for grabs by whoever was brave enough take the other side of those positions.

    An economist and a normal person are walking down the street together. The normal person says "Hey, look, there's a $20 bill on the sidewalk!" The economist replies by saying "That's impossible—if it were really a $20 bill, it would have been picked up by now."

    Those are the riddles that are really worth solving.

    Ivanchuk missed mate in one

    Is it a riddle how this kind of thing happens, or a problem requiring deeper cognitive skills? For example, was Anand hoping that Ivanchuk would miss his easy out, because of the complexity and urgency of the rest of the board? Or were they both so wrapped up in the larger riddle, that neither person noticed the coup de grace? (Not that I've ever witnessed this in the trenches, while programming under an intense deadline.)

    What does a real programmer do? He or she notices that there's a pattern to the error mode of top chess players—long moves by bishops in the backward direction are the ones most often missed, and writes a script to catch those instances. Is that a riddle? "What class of moves is missed most often by top chess players?" I don't think you can approach that question as a riddle.

    Often the hardest thinking is that which allows you to escape from riddle mode.

    You're Anand. You don't even know if your opponent is a lone wolf who has wandered off the reservation or a world-renown investment bank executing a deliberate strategy. Whatever he might be, he appears to be leaking $100 million bills. The clock is ticking. Your move.

  146. Re:Yes, exactly. by Darinbob · · Score: 1

    But when applying for a job one should first read the requirements of the jobs. They're not always well written, I will agree. But one should be able to figure out that the job is for someone writing real code versus someone to create a high level "solution" to package together components. Smaller companies don't usually have room for more than one or two of the second type of job.

  147. Re:some things should be trivial for any expert by Cederic · · Score: 1

    I once asked someone to capitalize the first letter of a string

    That can get quite nasty in unicode (depending on language and libraries), especially if you need to support i18n.

  148. Getting around HR by istartedi · · Score: 1

    Every break I ever got came from doing an end-run around HR. Picture HR as a bunch of 300 lb. tackles in the middle of the field, each and every one of which has had way too many concussions; but they can still fuck you up. Your first job is to get the ball and run fast and wide, hoping to squeak by the sideline without stepping out of bounds, and get into the end zone. The actual job is usually so much easier. Think of it as kicking the extra point; but you get 1000 points instead of 1.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:Getting around HR by Opportunist · · Score: 1

      That's why I turned HR into a pass-through for me. I have them forward everything to me. We're specialized enough and our requirements insane enough that we have only a handful of applicants anyway, no need to waste those precious few on people who can't tell Javascript from Assembler.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  149. The Apology of Mediocrity by loufoque · · Score: 1

    How about being proficient in some skills relevant to the job you're applying for instead of saying being mediocre at your job is ok?

  150. Test what they know, not what they don't. by PJ6 · · Score: 1

    And even then you can't tell if they'll be any good because a lack of common sense can trump any skill level.

    1. Re:Test what they know, not what they don't. by Opportunist · · Score: 1

      That's fine if you have standard problems. Not so much when you don't.

      We don't have standard problems. For the standard problems, there are standard solutions. And I don't need people for that, libraries will do just fine.

      What I need is problem solvers. So actually, I DO test what they don't know. I don't want to know what they know. I want to know how they find solutions to problems they didn't already solve.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Test what they know, not what they don't. by PJ6 · · Score: 1

      That's fine if you have standard problems. Not so much when you don't.

      We don't have standard problems. For the standard problems, there are standard solutions. And I don't need people for that, libraries will do just fine.

      What I need is problem solvers. So actually, I DO test what they don't know. I don't want to know what they know. I want to know how they find solutions to problems they didn't already solve.

      You got some ass-backwards reasoning, there. I never said I didn't also test problem-solving.

      The point of testing what they know and not what they don't, is that you don't filter out good people just because they don't know whatever predefined things you think they should know. It's keeping an open mind.

  151. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    If you're an expert forum poster

    I'm not. So, you're free to not hire me as a forum poster, even though you yourself may be a professional (=shill).

  152. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    The problem is that a good candidate isn't necessarily the same thing as a seasoned expert in that field

    Not necessarily, which is why not every employer asks these kinds of questions.

    But when people ask those questions, they usually are looking for a seasoned expert.

  153. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    There are IT fields where you simply don't have to use specific algorithms for years

    Well, gosh, and in those jobs, people probably aren't going to ask you those questions! Imagine that!

    Examples for wanting Rachmaninoff or Kasparov (them Russian geniuses...) expertise levels for IT

    Nothing I mentioned is "genius level"; it's something anybody with a few years of professional experience in those fields should be able to do.

  154. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    Same thing with rolling your own command line argument parser, math functions, date/time functions, etc ... don't.

    Did I say anything different anywhere?

  155. I run technical tests by manu0601 · · Score: 3, Insightful

    Confession: I run technical tests when recruiting IT persons. But it is on a computer, with Internet access, and looking up documentation or forums is fine.

    In fact, using Internet or documentation to find something is a very good indicator that the candidate has skills and experience.

  156. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    You need me, that's why you called me; and now that I'm here, I see you're unsure and you've wasted both of our time.

    That works both ways: if people invite you for an interview, your resume obviously misled them into thinking that you were something that you were not.

    Personally, I don't give whiteboard interviews; I consider it a waste of time. There are simpler and faster ways of telling whether you know your stuff.

    However, when people have given me whiteboard interviews, I viewed it as a matter of professional pride to get it right, even if I had already decided that I wasn't going to take the job.

  157. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    Who actually uses bubble sort on the job? Bubble sort is one of those algorithms that you should see roughly once in your career—in an introductory Algorithms class as an example of what not to do.

    If you had implemented it many times, that would defeat the purpose. The reason people ask about bubble sort is because it's a simple (or simple to describe, if you don't remember it) algorithm you rarely implement. Hence, you have to actually think through things like edge cases, generic typing, argument validation, correct pointer usage, etc. It's a programming test, not an algorithms test.

    A better interview task would be to compare and contrast some of the more common algorithms and give examples of situations where each would be suitable.

    And that gives rise to nice follow-up questions. Why don't people use bubblesort? Can you think of any applications where bubblesort might still be a good algorithm? Can you think of hardware architectures where bubblesort might be a good choice?

  158. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    To continue your analogy, it would be like asking a piano expert to compose a 6/8 waltz with a G progressive chord structure with a minor chord on the 4rd beat of even measures that resolves to the tonic on by the 6th beat in the style of Mozart. And compose it on a whiteboard without a piano.

    If you think that writing a correct bubblesort on the whiteboard is that complex, then I don't think software development is a good job for you.

  159. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    When I started reading this article/thread I had guessed I would perhaps need an hour to write Bubblesort from scratch.

    Took me less than a minute.

  160. Re:I understand this is tough on older programmers by glenebob · · Score: 1

    The make up of college CS programs is different if you're female or have brown skin?

  161. Re: CS Fundamentals are important by __aaclcg7560 · · Score: 1

    He thinks that if a language shares 45% of root word origins, that you can speak it.

    Read a language, not speak the language.

    Apparently we all speak Spanish, French, Italian, and Latin as well as English.

    The English language has stolen many words from other languages over the centuries. What few words that weren't stolen got made up by William Shakespeare.

    https://en.wikipedia.org/wiki/Lists_of_English_words_by_country_or_language_of_origin
    https://en.wikipedia.org/wiki/Shakespeare's_influence#Changes_in_English_at_the_time

    C, perl, bb and other programming languages are mostly just dialects of assembly, which is entirely of English so I guess we know those too!

    If you understand the structure of one language, you can understand the structure of other languages.

  162. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    I'm sorry, but no. Experts avoid acquiring bubble sort, and you're a fool for suggesting otherwise.

    A programming expert:

    (1) Can implement it correctly in less than a minute.
    (2) Knows not to use bubble sort under most circumstances.
    (3) Can answer why it's a bad algorithm.
    (4) Can come up with situations where it might be the best algorithm to use after all.

    (1-4) are not mutually exclusive.

  163. Re: Do you have a better metric for Hiring? by SharpFang · · Score: 1

    It can be considered as piecework, not paid hourly but for completion of the task. If they manage to complete the task, the amount will be added to their first paycheck. If they fail to deliver - what's there to pay for?

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  164. Something really weird is going on around here by hackwrench · · Score: 1

    This summary was posted early on the first, I think. Then I see it again early on the second. Dupe? Nope, it's the exact same summary with all its comments.. The parent comment is even now dated earlier than the summary. Wednesday March 01, 2017 @11:47AM vs. Thursday March 02, 2017 @01:58AM

  165. Re:Shocking! by 91degrees · · Score: 1

    It's a bad article. The point is valid though. Sure, ask for fizzbuzz. That's something that any developer should be able to work out from scratch. A sorting algorithm? Not all that useful, especially if it's explicitly a bubble sort they want. What if I give an insertion sort instead? Understanding time complexity makes sense, but memorising the algorithm is pointless.

    The locking scheme always feels like a "I've read a book on basic threading algorithms and I want to prove it" questions. The issue I always come up with here is race conditions. Much harder to track down!

  166. Do you know what will really bake your noodle? by hackwrench · · Score: 1

    I've gotten this far in the comments at least twice and I somehow haven't seen the code. I suppose I could scroll back up, but meh.

  167. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    If you're actually an expert programmer, you know that writing any sort of sort by hand is an utterly stupid thing to do.

    I didn't say that you should implement bubblesort when doing a job, I said that any decent programmer should be able to implement it. I even gave examples of lots of other silly things experts can do, like ski backwards and play the piano blindfolded. How utterly stupid do you have to be to still not get the distinction even if it is spelled out for you like that?

  168. Agree by ZeRu · · Score: 1

    In a recent job interview I had this question among others:
    What data type in SQL Server I would use for a data column that would be filled with numbers between 1 and 100?
    After looking in the SQL Server documentation, I've seen it's tinyint, but seriously, who actually tries to remember stuff like that? The point of the article is probably applicable in this case, they want to hire people who recently graduated or finished their courses as they are more likely to know stuff that everyone else thinks it's pointless to learn since it only takes a quick Google search to find out the answer.
    Not all questions were like that but I still failed the interview.

    --
    If you post as an AC, don't expect me to spend a mod point on you.
  169. Let's all race to the BOTTOM! by shanen · · Score: 2

    Yours [Walt Sellers'] was one of the few insightful-rated comments that really seemed to merit the mod. If the mods were logarithmic then high (e^5) mods would really mean something.

    Or maybe you just read Work Rules! from the google guy? Most of your comments follow along the lines of the google interview process as reported in that book. Mostly admirable ideas, but I still think the old "Don't be evil" motto has been replaced by "All your attention are belong to us." (I've been reading a lot of google-related books lately, but nothing else in the various parts of the LARGE discussion that I read seemed to ring any other bells.)

    My suggested improvement to the google's interview process would involve making videos of the interviews, either just the interviewer's face or both sides. Then the interviewer could focus on the interview itself rather than making the notes at the same time. If the interviewee agreed to both sides, then the two-sided interview video would actually allow other people to get a much better feel for the interview without taking any of the candidate's time... (Also much better for evaluating the skills of the interviewers.)

    However the insight I was looking for and failed to find in the comments was a bit upstream of the actual interviews. It was how the job-search websites earn their income from the corporations by helping them drive salaries down. It's kind of like lotteries focusing their advertising on the winners while ignoring all the losers who made the lottery profitable. Of course they boast about the few winning jobs (as with the google) that attract lots of candidates, but where their money is really coming from is all the lesser candidates who compete for the lousy jobs by seeing who is most willing to accept the position.

    I wish there were a job-search website that was driven by the candidates. An economic model where the website actually profited by helping each person get the best job. Perhaps the economic model aligned from the employees' side would produce rather different results?

    Talk about a pipe dream. Whatever I've been smoking, I better cut back.

    --
    Freedom = (Meaningful - Coerced) Choice != (Speech | Beer^2), and sad sock puppets' bad mods avail them naught.
  170. Re:some things should be trivial for any expert by cloud.pt · · Score: 1

    people probably aren't going to ask you those questions! Imagine that!

    They really shouldn't, but you keep telling yourself they should and I'm still waiting for a consistent reason. Companies allot 30 to 90min for technical interviews (most candidates won't submit to more), and if they focus on requesting proof of unnecessary long-term memorization skills, of stuff you're really not supposed to memorize because you have references at hand at all times, they're wasting your time and taking the wrong conclusions. You don't need to "play code by ear", you don't do auditions when programming, other than interviews in the status quo.

  171. I want your problem solving skills by Opportunist · · Score: 1

    I don't want you to barf something onto the whiteboard that you can look up in 10 seconds or what has been done to death in libraries. Basically, the correct answer for "how to do a linked list" is "#include ".

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:I want your problem solving skills by Opportunist · · Score: 1

      #include vector...

      Dammit HTML, we meet again you cruel mistress...

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  172. Re:Build me a house ... by Opportunist · · Score: 1

    What I want to test with my "unreasonable" questions is your ability to think abstractly, and to find a solution to a problem you have not faced before. I'm aware that you cannot solve the problem. I am also not interested in a solution (at least not in the interview). What I want to see is how you tackle an unknown problem. What do you do? How do you approach it? I'm well aware that it's very, very unlikely that you can simply toss a solution at me (and if, all you'd get is a different problem because, again, I don't care for a solution, I care for your approach to an unknown problem).

    I also give you absolutely free rein in what you do. I actually had an applicant whip out his cellphone and call someone. Another one mailed me a solution a day after the interview.

    In my field we're constantly facing new problems nobody has solved before. So asking you for an existing solution is worse than useless to me. I want to see what you do with a problem you have no ready made solution for.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  173. Re:some things should be trivial for any expert by As_I_Please · · Score: 1

    Least efficient? Try slowsort. Non-polynomial while still guaranteed to terminate.

  174. oh yes! by Tom · · Score: 1

    So true, so true.

    I once failed a phone interview because I couldn't use Google to look up some helpful side info, not the answers directly, just clarifying information. I immediately thought "what a bullshit. Unless you're studying for a test, you don't have this detail in your head, you pull it up as you need it."

    I look up functions and parameters all the time. Half of the time I kind of remember them, but look them up to make sure - it's faster to spend 30 seconds checking than finding a fixing a mistake later on.

    I would flat out refuse to do riddles and bullshit tests today. I would ask them if they want someone who is good at memorising trivia or someone who can actually solve real-world problems and if it involved a few Google searches, what exactly is their problem with that?

    When I studied, we were allowed a full formulary during math tests. The professor once said, and I agree for 100%, that unless you understand the math, the formula won't do you any good. The skill is not in memorising the formulas, it's in applying them, and knowing which one to use in which situation.

    --
    Assorted stuff I do sometimes: Lemuria.org
  175. Re:some things should be trivial for any expert by enjar · · Score: 1

    No ... agreeing with you

  176. I fail to see by nehumanuscrede · · Score: 1

    how this is any different than any other Certification Test or Entrance Test.

    I just roll my eyes when I come across these types of questions because their pointless. In my opinion, the cert tests should be 100% simulations where you're given a scenario ( just like in reality ) and you get to put your knowledge on display by solving the problem. Alas, this is not usually the case.

    Instead, the tests ask some of the most arcane and useless questions that no one really needs to commit to memory because it's irrelevant or outdated information.

    Questions like:

    In what year was the 802.11g standard adopted ?

    a) Who cares, it's a standard
    b) Who cares, I can look it up if need be
    c) Who cares, we're a couple of generations beyond it now
    d) Who cares, did you all run out of useful questions to ask ?

    I'm certainly not a programmer, but I do some minor scripting to help semi-automate my job functions and make my life easier. I usually have to refer back to the library of books sitting on my shelf ( or previous code I've written ) to recall what the syntax for certain things are, or how Shell X does things vs Shell Y or Z. I fail to see what the point of reference material is if everyone is expected to memorize the entire thing on demand.

  177. Nothing to confess. by CptLoRes · · Score: 1

    A good programmer doesn't go around knowing everything by heart. He or she knows enough to know where to efficiently start looking when they are given a new task.

  178. Re:Shocking! by 91degrees · · Score: 1

    Pi is defined as the ratio of the circumference of a circle to its diameter. What is there to prove?

    Why does it matter that Pi is transcendental? The approximation we use in any mathematics library isn't even irrational!

  179. Limited understanding ... by LarryLart · · Score: 1

    Brain neuroplasticity doesn’t allow one to reliably store information over time (our data, regardless how rich at a given point it time, will change and/or degrade with experience/routine). However, we are experts in adaptation and creativity (with a few billion years of experience, give or take). For reliable storage buy hdd/ssd, I would suggest a raid system and search engine on top, way cheaper! Disappointing that big tech companies, who presumably “threatens” the world with their understating of AI hold on such narrow views.

  180. This reminds me of a joke by RogueWarrior65 · · Score: 3, Funny

    Way back in the 1980s, one of my physics professors told the following joke:
    The trustees of the university want to find out if the professors really knew their stuff so they came up with a question: What's 2+2?
    They go to the math department and the professors there said, "Oh, that's easy. It's 4."
    Then the go to the physics department and the professors there said, "Oh, it's 4.000000000 with an uncertainty of another decimal place."
    Then the go to the engineering department and the professors there said, "Just a minute while I get my handbook."
    Finally, they go to the accounting department and the professors there look around to see if anyone can hear them and then the whisper, "What do you want to be?"

    1. Re:This reminds me of a joke by codebrew02 · · Score: 1

      well as a programmer anytime i do coding i got headache.

  181. Re:Please retitle this article. by tlambert · · Score: 1

    Code schools aren't the place to go if you want to be a "rock star" at Google or Facebook. These are designed to turn out junior developers, or "apprentices" as they're known at Software Guild, which currently has 16 instructors and 148 students split between in-person and online programs. Students learn just enough to be dropped into teams of more experienced coders and continue their education at a company, even as they draw a competitive full-time salary.

    So you can drop them onto a team at "Bob's Software Company" to continue their education... and when they get good enough... "Screw Bob! I'm going to Google!".

    What's the incentive to Bob to hire these gits who are just using his company as a free method of not paying DeVry Institute or a similar company for their vocational education? Because if I were Bob, I'd be kind of pissed, since my company was created to create software, not provide vocation education.

    Why should I pay someone to attend my (now) vocational education company, again? Because students who are rookies should be paid to be students, while at the same time soaking up cycles from my senior developers, so that they can't produce complex code for me, either?

    Someone must thing Bob's a fricking moron... "Here's some students to teach at your vocational institute, while not getting a lot of useful effort out of them. And oh, by the way: the tuition is a negative number".

    If you want to be an apprentice some place, become an electrician, a plumber, or an HVAC specialist. Software Engineering doesn't *have* apprentices, because they don't have a *union* to prevent people not in the union from getting jobs as software engineers!

  182. Re:Please retitle this article. by tlambert · · Score: 1

    And in case that wasn't clear:

    I don't want you turning my software company into a fucking vocational education "feeder school" for Google. Thanks!

  183. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    and if they focus on requesting proof of unnecessary long-term memorization skills

    Asking you to do a little programming problem isn't a test of "memorization", it's a test of your ability to write basic code without ropes and safety nets. People pick bubble sort because candidates are unlikely to have memorized the solution yet understand the specification pretty well.

    but you keep telling yourself they should

    Actually, I think whiteboard interviews are a waste of time for the interviewer. Much simpler questions usually tell me what I need to know, like "What is the purpose of whiteboard coding?" and "What's your reaction the statement 'I don't need to know even basic library functions because I can always look them up'?" or even "What questions do you ask during an interview?"

  184. I'm a Computer Science grad... by zerofoo · · Score: 1

    and I haven't written a lick of code since college.

    I'm a network/system admin - and the job required a BS in Computer Science - that is probably completely unnecessary to do the job.

    People interviewing candidates for tech positions need to ask broader questions about work experience. Asking a candidate about implementation details for a bubble sort or the syntax of Cisco iOS commands doesn't tell you if the candidate is a total psycho that can't work with people and can't solve problems.

  185. Repost? by Daetrin · · Score: 1

    So i read this article and a number of the comments yesterday afternoon, and yet this morning i find it presented as a new article in the feed. I still have the old post open in a tab so i can see that the old timestamp was "Wednesday March 01, 2017 @11:44AM" as compared to the current "Thursday March 02, 2017 @01:58AM". The fact that the timestamp on the article is incorrect becomes obvious as soon as you examine the timestamps of most of the comments.

    Is this some kind of bug? Or is it a regular practice of Slashdot that i just haven't noticed until now to twiddle the timestamp of popular articles to get them to show up higher in the feed and try to get more hits?

    --
    This Space Intentionally Left Blank
  186. Re:CS Fundamentals are important by dcollins · · Score: 1

    It's a funny example, because I have exactly one post-it note with coding info over my desk -- the syntax to find the length of different strings & array types.

    --
    We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
  187. Crazy Interview Requests by Thanatos(Miratos) · · Score: 1

    I'm not a programmer, but I have had whiteboard interviews. I am a Cisco guy, doing routers/switches/firewalls and networking. I've been in IT in various positions for around 30 years now and working with Cisco and networking for more than 20.

    The last few years I've really noticed, what I consider, quite a disturbing trend for the interview process.

    I've been asked to troubleshoot a deliberately sabotaged pc.
    Deliberately sabotaged virtual network through the use of a virtual router/switch software program.
    I've been asked to go home and go through a questionnaire online that also had customer service phone role-play elements that could take anywhere from 2 to 4 hours of my time.
    I've been asked to do role-play scenes with executives during the interview.
    A number of whiteboard scenarios that were broken and I was expected to fix, most of the time without any additional information.
    Technical interviews where I was asked a full range of random and often obscure or not-related to what I was interviewing for questions.
    Given a big set of specs and asked to design the network from the ground up, with all the details (a thing that would take...many hours)

    More and more it's felt more like a song and dance routine than a job interview...and I absolutely hate it. I have said no thanks on a couple of them and walked out and on another couple I put in an inordinate amount of work to find out, oh we hired someone else...D'OH! boy did I feel robbed and cheated.

    So while I may not have had the exact experience a lot of programmers have, I've had an equivalent.

    I hope the job I have now sticks, because I am sick of doing interviews and doing the song and dance routine.

  188. Riddles sometimes backfire by cyberfunkr · · Score: 1

    I interviewed for a QA position for a large corporation. Even though it was for a manual testing gig, they brought in a group of developers to be part of the "gauntlet" of interviewers. So on top of the normal "tell us about you" and "why here", one of them asked me a programming test question.

    After discussing what he wanted, I went to the whiteboard, struggled for a bit, then said, "I'm sorry, I can't figure this out at the moment. Can you show me your solution?"

    The smug developer explained (didn't actually write the code) how to tackle it. I paused and considered his answer and said, "That won't work because of X". The other devs in the room thought about it, giggled, and agreed. So they went back to asking relevant questions, and the one dev was silent for the rest of the interview. As we were shaking hands I had an epiphany and explained a working solution.

    I ended up getting the job and was assigned to QA a number projects lead by that developer.

  189. Underrepresentation by naubol · · Score: 1

    “The only world where you would actually need to be able to recall an algorithm would be a post-apocalyptic one, where the hard drives of all the computers connected to the internet were fried, and all copies of foundational academic papers and computer science textbooks had been reduced to ashes,” coding instructor Quincy Larson wrote in a blog post. “Whiteboard interviewing is a discrete skill, much like being able to remember Pi to a thousand decimal places.”

    In my experience, every programmer I've come to deeply respect could, at any time, produce a working implementation of a hash map and at least one O(n*log(n)) sorting algorithm using only pencil and paper. I recognize that not every computing position requires deep algorithmic understanding. Maybe web developers don't really benefit that much from knowing what algorithms go into layout engines or how their associative maps work in Javascript, for instance. OTOH, there are plenty of positions that clearly benefit from the ability to think about the skills that whiteboard interviewing tests.

    If this metric is so terrible, the market will push it out. The market seems to have done a pretty good job punishing the companies who asked questions that required real inspiration, as I wasn't asked anything like that in my last round of interviews. Questions like, "How do you find a cycle in two linked lists?"

    Articles like these induce me to wonder if the "social media using" programmer subset is getting entirely too much representation in trade publications.

    The ability to quickly inhale a lot of information, which this article admits is tested by this process, is frequently an essential skill, I find. We may not be testing directly what we state we are testing, yet we might also still have value in the process. I find the entire thing a little scary, too, but I always come away feeling like the questions were relatively straightforward.

    The cost of bugs is so high in the industry, regardless of domain, that I feel this analytical ability to think like a compiler that is often tested in interviews yields people who are less likely to write bugs and more likely to find them in code reviews. Tracking this is notoriously hard, so I imagine validating the data on this is similarly difficult and it is trivial to suggest that employees who get good annual reviews, which itself may not be testing productivity, invalidate the metric.

    This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn’t help diversify the field with women, older people, and people of color.

    We cannot start calling a preference for CS grads, especially those from good schools, bigotry. If there is underrepresentation from those schools, the correct remedy is to fix it at the root, which might mean addressing fundamental inequality at the elementary school level or not jailing parents for non-violent offenses. At the end of the day, a company has to be able to hire what it feels are the best candidates. If the company is wrong to prefer "top-tier" schools, the company will be less competitive and another company should, via market forces, hire on a better metric.

    Markets take time to remedy poor metrics, but they tend to do so better than social justice advocates. Complaining that the metric is bad in the middle of the process is what it is. Without changing the incentive systems that govern company behavior, whinging shouldn't achieve much. And, changing the incentive systems is a potentially disastrous thing to try.

    “We believe that technical interviewing is a broken process for everyone but that the flaws within the system hit underrepresented groups the hardest.”

    The terrible thing about this quote is that the person speaking clearly feels this fact alone is sufficient to compel a remedy at this level. Having to do root caus

    --
    Reality is a slackware box running on a 386 tucked away in god's sock drawer.
  190. What a Stupid Way to Evaluate Programmers! by CAOgdin · · Score: 1

    I have written programs in over 50 (programming) languages, and probably well over 5,000 different products, from local scripts to big team efforts. I have no memory of how the code appears; it's done, I Iorget it...but I don't forget the methods and practices I've honed over the years. Most of my experience is with Procedural languages; throw me the requirement to use one of the Functional languages, or some unique Operating Systems' scripting language, and I'd be lost. On the other hand, CHOOSING the right language for the need (e.g., a real-time transaction-processor versus a Linear-programming solver) is a key part of the job.

    In fact, it knowing more about which algorithms are useful, and which are not, for a particular class of application. That's the issue, because choosing the right language is a key part of doing the job most efficiently. And, even more relevant than "writing a sample program" is debugging: A large part of most programmers' jobs is actually trying to decipher somebody ELSE's code, to find the defect(s) and repair it (them).

  191. Re:Please retitle this article. by __aaclcg7560 · · Score: 1

    I don't want you turning my software company into a fucking vocational education "feeder school" for Google.

    That's unlikely. I used to work at Google. Their top programming talent is the cream of major universities. Unless you have a genius in the making, they're not interested in your feed school programmers. ;)

  192. Re:some things should be trivial for any expert by angel'o'sphere · · Score: 1

    Sure that it works ;D ?

    Does it stop when it realizes the input is already sorted, or in other words: does it realize it?

    Etc.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  193. The Only Question Worth a Damn to a Prospective... by CAOgdin · · Score: 1

    ...Programmer:

    "Do you know how to do (any relevant topic here)?" (Keep doing that until the answer is No.)

    Response: "How would you find out?"

  194. Re:some things should be trivial for any expert by angel'o'sphere · · Score: 1

    Such cases are vanishingly rare in the real world.
    No they are not, hence those benefits are often pointed out for Bubble sort. And people usually completely forget about them, because they only have memorized: "bubble sort is bad".
    That is actually another reason why asking for such an algorithm in an interview is "strange" as the interviewee probably only "remembers" that fact (probably also one of the topics Knuth refers to).

    E.g. you have a table in a kind of excel, you sorted first by column A, then you sort by column B, depending on situation column B will often be partially sorted already.
    Or simply want to have a "stable" sorting algorithm ... or you sort stuff only by first digit or first letter, then you can use short cuts ...
    Your idea it is only fast for very few as 3 or less is wrong: the upper limit where it is faster than e.g. Quicksort depends on hardware, like cashes, paging etc., much more in our days than it did when the algorithms where "invented". So while they look bad in O calculus they are still very fast for special cases.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  195. Re:Shocking! by angel'o'sphere · · Score: 1

    You mix up "algorithms learn in university" with "crafting new algorithms on demand".

    The latter is my job, the first I never needed except in the university to pass the gradings.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  196. Whiteboard interviews filter bad employers by jamessnell · · Score: 1

    I'm James and I get paid to write software. The one actual whiteboard interview I had, I intentionally did not really try to appease the process. I was well-familiarized with it and could have easily prepared. But I decided to use the process to filter unworthy employers. The recruiter asked me to implement some basic things on his whiteboard in C. I gave him pseudo-code and commented that I've written many things, including a compiler. Syntax while technically relevant is not actually relevant. Suffice to say, he didn't seem convinced and I went on to work with another (awesome) company who cared about my attitude most. I figured if that actually mattered to them, then they weren't right for me. Years later I talked to a friend who'd worked at the whiteboard interviewing place, he told me I'd dodged a bullet.

  197. Amazon interviews are absurd by The+Other+White+Meat · · Score: 1

    This is _exactly_ why I do not work for Amazon. Because after an all day interview, including being interviewed during lunch so I couldn't actually eat, I was asked to stand at a whiteboard and design a novel algorithm and write accurate Perl code from memory. (I should mention that my job at Disney involved writing great Perl code all day, and I did just fine. No thanks to Bezos and his grist mill.)

    I should also mention that one of the first things I saw when I walked in was a young woman standing at her desk, just crying. And everyone walking by acting like that was a perfectly normal thing to see there. And when I went to the lunchroom, not a single person was smiling, or laughing, etc. They all just looked beat down. By the time the whiteboard came up, I had already decided I didn't want to work there.

    --

    --- Generation X: The first generation to have SIG lines inferior to their parents... ---
  198. Re:some things should be trivial for any expert by ooloorie · · Score: 1

    Sure that it works ;D ?

    Yes: that minute includes tests, and it's also provable from the code.

  199. Re:Boeing (and Good Technical Leadership) by Paul+Fernhout · · Score: 1

    "That is nice if they are searching for leaders and if they don't care about the quality, time or cost. Just because you are a leader, doesn't mean that you are a good leader. The difference between bad and good leader in a software project is billions in money and years in time. I've even seen several times when bad leaders shoot down good developers because they bring up the problems.

    I have also seen good leaders. Not perfect, but someone who will implement a project with 1/10th of a cost compared to others, simply by asking the correct questions, making the right decisions and demanding certain things. This is actually where software companies should put more effort. If they can get or educate really good architects to their projects, they need 1/10 of the developers to implement those projects and 1/100th of people to maintain them.

    Mind you, I'm not a leader nor do I want to be. I also know that I'm a better programmer than the leaders usually are. Without them, I would need to work more, but without me they wouldn't get it working at all. Both are needed."

    Very Insightful AC -- Thanks!

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  200. what if they know about asm.js? :-) by Paul+Fernhout · · Score: 1

    "on people who can't tell Javascript from Assembler."

    https://en.wikipedia.org/wiki/...

    function strlen(ptr) {
        ptr = ptr|0;
        var curr = 0;
        curr = ptr;
        while (MEM8[curr]|0 != 0) {
            curr = (curr + 1)|0;
        }
        return (curr - ptr)|0;
    }

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  201. One good programmer can recognize another good one by Paul+Fernhout · · Score: 1

    https://en.wikipedia.org/wiki/...

    A supervisor at IBM Research pointed this out to me -- a big challenge the farming villagers face in hiring Samurai is that they do not know what makes a good one...

    A deeper issue in your post is discussed in "Have Fun at Work" by W. L. Livingston
    https://www.amazon.com/Have-Fu...
    "The practical abilities of engineers are buried and ignored by institutions whose sole objective is their own survival. Whereas the individual engineer has a publicly admitted duty of care for his fellow beings, institutions have no such concern, for their aims take no account of the human cost of their activities. This Handbook provides the recipe for the survival of the practical professional. The Handbook is offered to serve the needs of the professional engineer but it demands a much wider readership for it examines the interactions between the responsible individual and the supra-human entities that constrain and control him."

    He provides examples of presenting suitable candidates to organizations desperately in need of them who the organizations reject in their ignorance of their true needs.

    Bottom line: interviews are a game. They don't have to make sense. You chose (and also demonstrated) you did not want to play the game. So, they effectively screened you out as a non-game-player.

    Of course, it is possible those organizations may collapse because of screening out such people -- but that tends to be the nature of most organizations and potentially self-limiting social processes. And those reasons are not all bad -- given that humans evolved in a context of living in cooperative hunter/gather tribes who in a sense were playing a collective game together.

    See also:
    https://aeon.co/essays/you-don...
    "How organisations enshrine collective stupidity and employees are rewarded for checking their brains at the office door ... One well-known firm that Mats Alvesson and I studied for our book The Stupidity Paradox (2016) said it employed only the best and the brightest. When these smart new recruits arrived in the office, they expected great intellectual challenges. However, they quickly found themselves working long hours on 'boring' and 'pointless' routine work. After a few years of dull tasks, they hoped that they'd move on to more interesting things. But this did not happen. As they rose through the ranks, these ambitious young consultants realised that what was most important was not coming up with a well-thought-through solution. It was keeping clients happy with impressive PowerPoint shows. Those who did insist on carefully thinking through their client's problems often found their ideas unwelcome. If they persisted in using their brains, they were often politely told that the office might not be the place for them. ..."

    And:
    http://disciplinedminds.tripod...
    "Who are you going to be? That is the question.
    In this riveting book about the world of professional work, Jeff Schmidt demonstrates that the workplace is a battleground for the very identity of the individual, as is graduate school, where professionals are trained. He shows that professional work is inherently political, and that professionals are hired to subordinate their own vision and maintain strict "ideological discipline."
    The hidden root of much career dissatisfaction, argues Schmidt, is the professional's lack of control over the political component of his or her creative work. Many professionals set out to make a contribution to society and add meaning to their lives. Yet our system of professional education and employment abusively inculcates an acceptance of politically subordinate roles in which professionals typic

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  202. One good programmer can recognize another? by Paul+Fernhout · · Score: 1

    Additional point: in the Seven Samurai movie, even Samurai could not agree on what was the best way to do a certain combat move -- until it was solved by the death of one of them when they did the move for real...

    Another difficulty in good programmers recognizing others:
    https://en.wikipedia.org/wiki/...
    "The Dunning-Kruger effect is a cognitive bias in which low-ability individuals suffer from illusory superiority, mistakenly assessing their ability as much higher than it really is. Dunning and Kruger attributed this bias to a metacognitive incapacity, on the part of those with low ability, to recognize their ineptitude and evaluate their competence accurately. Their research also suggests corollaries: high-ability individuals may underestimate their relative competence and may erroneously assume that tasks which are easy for them are also easy for others. Dunning and Kruger have postulated that the effect is the result of internal illusion in those of low ability, and external misperception in those of high ability: "The miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others.""

    Further, a good programming team in most situations may benefit from diversity. The same characteristics that make some people good at some programming tasks may make it more challenging for them to see some of this diversity.
    "The Difference: How the Power of Diversity Creates Better Groups, Firms, Schools, and Societies" by
    Scott E. Page
    http://press.princeton.edu/tit...
    "The Difference reveals that progress and innovation may depend less on lone thinkers with enormous IQs than on diverse people working together and capitalizing on their individuality. Page shows how groups that display a range of perspectives outperform groups of like-minded experts. "

    An old African proverb says, "If you want to go fast, go alone. If you want to go far, go together."

    So, there remain no easy answers.

    Google is trying Big Data as rutabagaman linked to, which led to this conclusion:
    http://www.nytimes.com/2013/06...
    "A. On the hiring side, we found that brainteasers are a complete waste of time. How many golf balls can you fit into an airplane? How many gas stations in Manhattan? A complete waste of time. They don't predict anything. They serve primarily to make the interviewer feel smart.
        Instead, what works well are structured behavioral interviews, where you have a consistent rubric for how you assess people, rather than having each interviewer just make stuff up.
        Behavioral interviewing also works -- where you're not giving someone a hypothetical, but you're starting with a question like, "Give me an example of a time when you solved an analytically difficult problem." The interesting thing about the behavioral interview is that when you ask somebody to speak to their own experience, and you drill into that, you get two kinds of information. One is you get to see how they actually interacted in a real-world situation, and the valuable "meta" information you get about the candidate is a sense of what they consider to be difficult."

    But when you think about that, if you are not hiring programmers for their ability to hire other programmers by asking such questions and evaluating such answers, and you are not coaching them on that either, why would you expect they could do a good job of it?

    Having *really* good HR people specializing in evaluating developers for a role in a team might in theory be an answer... But then the question is, how do you hire really good HR people? :-)

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  203. Re:Discrimination by micahraleigh · · Score: 1

    The Chicago Fire Department -in order to avoid allegations of racism- instituted a written test to determine hiring for the position of Fire Chief. Double blind and all that.

    The applicants who passed the test were less likely to be of certain ethnicities so the entire test was ruled to be discriminatory.