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.

1,001 comments

  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 Anonymous Coward · · Score: 0

      This was the approach at one of my gigs. My boss left me with a Windows 8 laptop and access to the servers and the ticketing system. I started asking very pointed questions about stuff almost immediately (because it wasn't documented). I think I helped him test his on-boarding process documentation. I ended up writing some of that as part of my "getting up to speed" process.

      Other interviewers have shut me down mid-interview and shown me the door. In hindsight, I shouldn't have bothered with those but I wanted to practice interviewing.

    6. 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.

    7. 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.

    8. 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.

    9. 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.
    10. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      How the effing fuck is an interviewer with an liberal arts degree supposed to score that?

    11. 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.)

    12. 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?

    13. 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.

    14. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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

    15. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      No, we pick a problem that takes a bit of thought but is not something that would ever go into our product.

    16. 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.

    17. 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.
    18. 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.
    19. 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.

    20. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      If you are a skilled coder, you should be able to write an algorithm that can sort an array, off the top of your head.

      It doesn't have to be bubble sort. But you should not need to look an answer up, because you should be mentally powerful enough to figure it out on the spot.

      I am sorry if this intimidates some candidates. I don't want to hire those candidates.

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

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

    22. 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.

    23. 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.

    24. 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.

    25. 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.
    26. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Presumably it's not production code, just a small task to solve. We do the same thing. The actual programming task is quite simple, but we ask that the candidate design the solution as if it was more complex. Use some intelligent OO design, organize the code properly, add some good unit tests, stuff like that. There's certainly no reason to compensate anyone for doing the work (it tends to be the same problem or small set of problems over and over again).

      Giving this "homework" allows us to spend less time in the onsite interview asking the candidate to work on the board. We do have them do that, but provide lots of help, and at that point it's more important how they take our input and assistance than if they can just fly through the problem on their own. Wen a candidate comes for an onsite, I want to be reasonably sure of their technical prowess already, and what I'm really looking for is personality and cultural fit. Our CTO's motto is "if you're not excited to get to work with someone, why would you hire them?"

    27. 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
    28. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I call BS on that one. Just some hipster looking for attention.

    29. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      The first and most important problem to solve is figuring out where to go get the answers and information you need to solve your particular problem. It doesn't matter where the information comes from as long as it's timely and relevant to the problem you are trying to solve.

      What can be fun during the interview is catching the interviewer asking totally irrelevant questions that say more about the person asking the question than it does about the person being asked. Next time some .NET interviewer (while looking for a beginner or mid-level application developer position) asks about the heap and stack turn the question around and ask them why that would even matter in 99% of any .NET application program. When they double down and ask about GC methods ask them the same question. Maybe ask if they realize that 99% of .NET application programming is targeted at a runtime layer and not the underlying OS.

      Interview questions need to be targeted to the position being interviewed for. Asking nit-picking questions about things that are not relevant to the job requirements is counter productive. You end up eliminating people perfectly capable of meeting the actual job requirements and ending up with people who may know the answers to the inconsequential questions but totally incapable of developing an actual application.

    30. 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.

    31. 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?
    32. 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
    33. 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.

    34. 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...
    35. 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**
    36. Re:Perhaps a better method... by avgapon · · Score: 0

      That's a big *if*, right? I mean always vs once.

    37. 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**
    38. 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.

    39. 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.
    40. 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.
    41. 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'
    42. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I assure you that none of the code I post to StackOverflow is production quality, very little is compile-tested, yet it attracts quite a few upvotes.

      And that answerers get called idiots on SO for a variety of reasons, many of which are more related to the person calling the names than any issue with the answer.

      But if you still think SO code snippets are trustworthy, you really should have a read through http://meta.stackoverflow.com/q/287238/103167

    43. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I interviewed at Palo Alto networks a couple months ago. Same crap style from the engineers. ' Try to sort this'. I couldn't fucking remember bubble or wuick or swap...

      Then I asked the little douchebag asking if he could do it. NO. He couldn't take.

      Then I asked if he uses libraries that the language writers have already optimized. He said his sorting algorithms are better. At that point he was obviously a liar.

      The manager was good. But is relying on inexperienced interviewers.

      They never asked a question regarding the project or the tech used in the project.

      Not only was the interview pointless, it was also straight up stupid.

      You can hire from 2 main pools of engineers. People that have excellent memories for whatever they study. I can remember most all of the book knowledge. They are academic. Or you can hire people that are good thinkers. Of course there is an in between the too.

        If anybody is serious about hiring the right candidate instead of playing games, and using the interview process to make yourself feel more smart than the candidate, you ask questions directly relevant to the position in the project which is the reason why you're hiring somebody

        Palo alto networks has engineers with great academic knowledge but they seem to lack any sort of real critical thinking and this the projects suffer.

    44. 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'
    45. 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.

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

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

    47. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I expect a high-level understanding of algorithms, of CS theory (e.g. big-O behavior)

      In other words you want your candidates to have memorised the mathematical properties of algorithms. That makes perfect sense, considering the rarity of algorithm reference books, and the difficulty of running performance tests. /s

    48. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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?

      2.) The types of riddles that programmers solve are rarely similar to the riddles that self important interviewers ask. Programmers solve riddles where there is always some line of evidence to follow (stack traces, logs, etc.) or tools to find evidence (profilers, debuggers, etc.), not riddles that must be solved purely through rationalism.

    49. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      In theory yes. But in my 17 years so far. Never has happened. All the problems do stem from first principles. But something new? No. Not unless its in a developing principle like AI, ML, or something researched based. Or a scale problem.

      This is the truth. Its all mostly been done before. And that's fine.

    50. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      My last interview I did included an at-home programming challenge. They emailed me the problem and wanted the reply three hours later.

    51. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I haven't used perl in so long that I was scratching my head at your code sample that looked like a mutant combination of javascript and php until I finally realized what it actually was. I spend too much time doing web development.

    52. 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"

    53. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Ive used sudo code on interviews like this and told the interviewer id have to double check api for exact syntax. They didnt have a problem with that..

    54. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      When I was a direct hiring manager I sat then down. Computer and internet. For java or .net. Make a set of web pages to do all crud into a database. Make it all. Did, tables, stored procs, all of it. Make it in tiers.

      If they can do that, they can do most of the work

      The theory part is a real past or present problem to solve. Not some idealistic made up crap.

        The developers that actually passed the test without any problems were always very good. I was forced to hire an engineer but could not do it due to a new that we had to fill and of course he was was mediocre.

        You need to test people and what they're actually going to do. Not out of some fantasyland. Not because you were trying to be like Google, which by the way is getting a lot of bad press finally for the truth coming out.

        Immature interviewers or inexperienced always try to be clever and they always try to use the interview process to look smarter than the interviewee.

        And if you imagine working with these people - it is nothing like how the interview with. It's like 80% of the stuff on the job requirements for skill sets are never even used.

      Time to come back to reality. You are not to Google. You will never be Google. You were never going to work at Google. You were never going to be is extremely smart people they hire at Google.

      So stop pretending you are and stop interviewing from your fantasy land.

        This is really a display of maturity. Anybody with a real experience and knows none of that stuff really matters.

      It's about having a job requirement for specific things that the engineer needs to do in finding someone that can do that. Not someone that can do everything else except what you need.

      Grow up?

    55. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Grow up looser.

    56. 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.

    57. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      The challenge is. We HAVE to write perfect code that will compile. And writing pseudo code isn't enough - they always ask for more.

      Its a badly designed question.

      Give me a laptop. I will write your shitty sorting algo and it will work. I can do this faster than your white board. But you wouldn't actually understand it. That's why you ask whiteboard questions.

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

      define "works" ?

    59. 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.

    60. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Good. Don't. Some of the best programmers have shitty memories. But they excel at figuring it out (due to thier shittty memories).

      Its a give and take. 60% academic & 40% talent.

      Academic memory is absolutely not the same as talent.

      And btw, few ciders write thier own algos if its already in the standard library.

      And if they say they do and theirs is better, they are probably a liar. They are bettter than a team of language writers. NO. They are not.

    61. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      If you don't known how a for loop works or how less than behaves, you're not a programmer. Its the same in javascript.

    62. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      The best part is, you would fail a whiteboard interview.

    63. 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.
    64. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      What's wrong with teamwork?

    65. 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);

    66. 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?
    67. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      advice available through Google and the various help boards

      The problem with "just google it, stupid!" is there is:
      1) a stupidly low entry to comment on most sites, including the common ones like Stackoverflow
      2) very regularly there is shit-tier code posted that is bug-prone, and most times, highly exploitable.
      3) that one time the internet is dead, oh no problem, screwed.

      More to the point, nooby programmers tend to flock to the easy languages like PHP, which has filled the community with SO MUCH STUPID SHIT that not a single source, EVEN THE PHP SPECS, is a good resource. That mainly because the developers are hopeless and some don't even understand their own damn language, which has lead to so many duplicate code and features, and pointless features that don't work. Then there are others that don't understand basic programming concepts, which has lead to PHP being probably the only language that does so many concepts incorrectly. (like silently converting data and not giving you clues as to why your code doesn't work, or worse, GOES AHEAD and lets the incorrect data right through!)

      Why the fuck do we want people with zero experience with the damn languages?
      Don't make excuses for these retards. Sure, a lesser used piece of code being looked up harmed nobody, but having to do it multiple times a day should be fired on the spot.

    68. 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.
    69. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I interviewed at Google for an SRE job. Their interview process is very good. I turned the offer down because that place is a cult, but I was impressed by the depth of the interviewers, and had no doubt that my teammates would have all been very good system engineers if they also want through that well. I guess that's not exactly programming, but the idea is comparable.

    70. 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.

    71. 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.

    72. 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.
    73. 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.
    74. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      "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 think this best illustrates the problem. You've just accepted someone who does not know how to program, but has crammed the bullshit textbook answers you were looking for.

    75. 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.
    76. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Feel free to exit the interview process at any time.

    77. 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.
    78. 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.

    79. 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; }
    80. 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.
    81. 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.

    82. 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.

    83. 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; }
    84. Re:Perhaps a better method... by DontBeAMoran · · Score: 4, Funny

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

      --
      #DeleteFacebook
    85. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      If the code is really boiler plate, you can probably just get a machine to generate it.

      And this is where "go away or I shall replace you with a small shell script" comes into play.

      If you tell someone to create 30-40 model classes based on detailed docs, they should be able to do it really quickly through some level of automation.

      Possibilities:

      1. Generate base-line classes with private variables from a spec doc via a script of some sort
      2. Use IDE generators to create getters/setters, hashcode, toString, etc...
      3. Selenium script to automate the above steps

      The idea isn't that you're building your replacement in the interview, the idea is to see how much time you're OK with wasting on repetitive tasks that can be somewhat easily automated. How far down the rabbit hole do you go? Too far and you've automated something that's not repeatable outside the exercise (ie: using a spec doc to generate classes from... not all spec docs have the same format). Not far enough and you've wasted a couple hours you could have spent on something else.

    86. 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.

    87. 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.

    88. 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.

    89. 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'
    90. 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'
    91. 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.

    92. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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)

      For one interview, I was asked to write up a sorting algorithm on PAPER. They literally gave me a couple pieces of paper, a small room with an uncomfortable desk and chair and asked me to write out a sorting algorithm on it.

      I imagine this is what people are thinking about when they object to doing whiteboard coding. You may not do it this way, but some people certainly do.

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

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

    94. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      * 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. ....

      And that is why I would walk out of an interview with you beelsebob! You see our job as solving riddles; I see it as providing solutions to problems. Riddles are obfuscated problems. I'm not playing a damned game, so I don't need riddles. If you can't figure out, from reading a resume and interviewing me what I've done personally, and from that know my qualifications, you don't have the qualifications I believe are necessary to be involved in a hiring process. I wouldn't want to work for, or with you. It wouldn't be a productive relationship. If you really want to know if I can solve a problem, look at the code I've written, ask questions about the problems I've solved and the tradeoffs inherent in any solution. Anyone who has written code can talk about it. What you do right now is insulting to anyone who has a track record; but by all means, do what you think is best. I'll be happy to interview the talent you fail.

    95. 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.
    96. 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.

    97. 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.

    98. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Meh. Israel did this years ago with a friend who was an oil reservoir engineer.

    99. 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.

    100. 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.

    101. 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.

    102. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I did the whiteboard thing at Microsoft...implementation of a linked list. I did it right. I basically memorized the implementation from my data structures text book the night before which happened to be authored by my professor. The interviewer claimed I was wrong and refused to explain why.

    103. 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.

    104. 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.

    105. 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?

    106. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Why am I never asked about my 30+ years of experience as a career software engineer in job interviews? At 53 years old and still coding in this business, I must be doing something right to last this long. Yet, I am subjected to this same Stump-the-Chump hazing process just like everyone else. Not only do you have a right to complain and whine about whiteboard hazing, but you also have a right to shout age discrimination as well if you as old as I am.

    107. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Be civil. It's a subtle bug, the kind of thing your mind will "autocorrect", just like people will read "hte" as "the" without pausing.

    108. 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
    109. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      SOP in the restaurant business, in spite of being illegal as hell.
      https://en.wikipedia.org/wiki/Stage_(cooking)
      If you want to know how someone will perform, you have to watch them perform. Full stop.

    110. 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."
    111. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      What if he wants to grow up tighter?

    112. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      The current system is perfect as it assures only wage slaves will wind up in shackles.

    113. 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).

    114. 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?"

    115. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I like to submit obfuscated scripts that will work, but also erase the root volume if there are file names that start with non alphanumeric characters. A to z and 0 to 9 represent!

      So read those escape characters and count those parents.

    116. 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.

    117. 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.

    118. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Yes, I think the point was it is easy to get lost reading all of the other symbols and overlook which inequality is used. I see the ">" but there could easily be more issues that I don't recognize.

    119. 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.

    120. 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.
    121. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I bet they paid a professional service to get candidates. Or posted a link to the job on the internet instead of on a post it in their bathroom.

    122. 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.

    123. 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.
    124. 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."
    125. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      If you use sudo code in an interview, would you use pseudo to run a process with root permissions?

    126. 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.
    127. 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.

    128. 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."
    129. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      * 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.

      Most ridiculous and wrong statement EVER.

    130. 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
    131. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I agree with your post mostly. When the code is compiled and there's no syntax or obvious errors, but it's still not working, and it's probably a logic or flow control issue, then it's more akin to solving a riddle than a math problem.

    132. 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
    133. 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'
    134. 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
    135. 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
    136. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Too be completely honest though, bubble sort fills no usage criteria what so ever.

    137. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Every post is monospace in my browser you insensitive clod.

    138. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      What is perfect is finding small independent assignments or code refactoring. Sit them down with it for a week, let them interact, mingle and asks questions of the team and see how it goes. You'll know pretty fast if they're worth anything and if they can get along with folks.

    139. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Not a problem. I'm a plumber. Oh wait!

    140. 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.

    141. 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.

    142. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      O(n^2) is only true if they didn't use binary search to find the insert location in the first place. Otherwise it seems perfectly reasonable, assuming that reads vastly outnumber writes. If the messages being received were on the order of 10^5 m/s, you might need to revise your strategy. Although it depends what you're sorting by. If it's insertion timestamp, you're golden.

    143. 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.

    144. 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.

    145. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      How would someone only know how to program without knowing how to solve problems?

      Please post where you work, so professionals know not to apply.

    146. 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.

    147. Re:Perhaps a better method... by Cederic · · Score: 0

      I don't do riddles. I've never done riddles. Take your fucked up word games and go kill yourself.

      I'll work with people that can articulate clearly and simply what they want, and answer sensible questions about it.

      Programming is about problem solving, not fucking riddles.

      Incidentally, ask me to write code on a whiteboard and I walk out of the interview. Don't be such a fuckwit. Ask me a sensible question, ask me how I'd approach problem solving, ask me something that actually makes me want to work with you.

    148. 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.

    149. 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.

    150. 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.

    151. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I didn't have a problem spotting the bug. It's quite obvious. I just had to think for a moment afterward about what language I was looking at.

    152. 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.

    153. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I didn't know const was just there for decoration. Any other "style problems" you'd like to point out, since you're obviously qualified to interview programmers and all?

    154. 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.
    155. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I'm in mathematics, and don't program (the CS people come to me to solve usually not so tricky problems). I would seriously question the hiring of anyone who could not figure out a bubble sort on the spot.

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

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

    157. 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."
    158. 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
    159. 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'
    160. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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

      Exactly. "Spanish or Portuguese" is bad, whereas "Spanish or Russian" or "Telagu or Portuguese" would be totally cool.

      "Electricity is used in computers, like C or Javascript."

      "Hand signals are a way that people communicate with one another, like using past or present tense."

      "Einstein's general theory of relativity is a far out idea, like that time I got high or that time I got drunk."

      "Brahams was a musician, like Steve Vai or Eddie Van Halen."

      These statements are all correct, but also kind of weird in a way which suggests lack of important knowledge about the subjects.

    161. 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.

    162. 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?

    163. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      There are places where the client talks to analysts. Who write specs that spell out, in detail what a system should do. These specs are then processed by niche professionals into database designs, system flows, unit tests, project plans etc etc. Only then do programmers get involved. Everything they build is planned, no problem solving is needed. At least until the client realizes that the analysts missed a big old part of the problem, then it turns into chaos quickly.

      Then there is the rest of the world. If you are lucky the client has an idea of what his problem is, if you are very lucky, the client is right and realistic about what a computer can do. In any case the best you can do is start by shadowing the actual people that are failing to deal with the problem and see what the problem really is. The worst is the client who has it all figured out, but is clearly wrong, based on mistaken assumptions about what the computer can do etc. Everybody does everything, nobody has authority over anything, except the client, who has no clue, but owns the checkbook.

      This whole shitfest is justified these days as 'Agile' (was once a manifesto, is now just an excuse), sometimes with a little daily hate called 'Scrum' (like a 'Tarantino tampon' sitting on a shit sandwich). Chaos rules the place from day one. Weasels prowl the halls.

      I feel better now.

    164. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      LOL If I were able to play the people game I'd be doing something else.

    165. 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~
    166. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Glad I identified the language even though the only thing I know about perl is that it looks like C with random punctuation sprinkled on it.

    167. 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.

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

      Wrong.

      In OOP it would be array.Sort().

    169. 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.

    170. 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.

    171. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Adds a new message to the array, then binary sort?

      Sounds like you are adding to end of array , so binary sort will fail more and more as your initially sorted array gets extended with lots of unsorted entries

    172. 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.

    173. 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**
    174. Re:Perhaps a better method... by OhPlz · · Score: 1

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

    175. 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**
    176. 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?

    177. 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.

    178. 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.

    179. 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.
    180. 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.
    181. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      You guys are surprised? This is typical "desi" style. Learning by rote is the only way in India and I bet this "interview system" was started by Indians. And with hordes of "software engineers" to choose from, interviewers can demand "you have worked on version 2.1, but have worked on version 2.1153?, because that is what we want". Disclosure: I'm an Indian.

    182. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      This is just stupid though. Which sort and why ? There are many considerations you should be aware of. Your solution does not demonstrate you're aware of any of them.

    183. 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.

    184. 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.

    185. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      The first question I asked is, "What language is that?"

    186. 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).
    187. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

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

      'For' loop fails on first test. By context I assume that is not what's intended.

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

      s/dedication/Servility Quotient/

    189. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      You should have gotten a pretty valid impression of that interviewer as well. Interviews aren't just to determine if the employer finds you acceptable - they're also to determine if you find the employer acceptable.

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

      Fontism.

      --
      #DeleteFacebook
    191. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

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

      Nope, nope and nope to this as a general rule. A programmer who is constantly leaning on their friends for trivial tasks and shows no potential for improvement in problem solving ability will most likely be an employee who is constantly leaning on their employees for the very same thing. At best they might be productivity neutral. At worst they're productivity negative - being a drain on the time, patience and general oxygen levels of contributing coworkers.

      And I'm not calling for a moratorium on consulting others. I'm just saying that if they do then it's not appropriate to automatically declare "I don't care".

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

      Consultants have to continually sell themselves.

    193. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I was once stupid/desperate enough to put up with that kind of bullshit. Managers who do this don't respect you or your time and should be ignored.

    194. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I dunno, I've seen value in whiteboard questions. This question is one we asked applicants for a junior developer position.

      "Write a pseudo code function that accepts a number as an argument. If that number is more then 42, return the string fizz. If not, return the string bang."

      About a tenth to a quarter of the applicants fail. Typically because they lied on their resume about having any programming experience.

    195. 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.)

    196. 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.

    197. 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.
    198. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Yeah. If one is good at the people game, one can get a job that pays well enough to buy a house and where one is allowed to dress like an adult.

    199. 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.

    200. 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.
    201. 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?

    202. 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...

    203. 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.
    204. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

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

    205. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Oh - you hand out unpaid homework. You must be a delightful person to work for.

    206. 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.

    207. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Yup, you only want dumb, small-mined drones working as coders.

    208. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Eh, feel free to do visual inspection and make guesses about the big-O properties of your code all day long. Me, I'll start by running it with the profiler attached.

    209. 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.

    210. 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.
    211. 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.
    212. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      It can be even worse when that work you did comes back to haunt you later after you're hired.

      During the interview process for a paid software development internship position I got at a small startup companyI was asked to produce a short Python script for what seemed like what the GP posted. On a Raspberry Pi, it had to get some sensor data, write it to a file, and then reboot the system after 15 minutes. I was directed to an online tutorial for interfacing with the sensor in question, and given two days to produce a working script with no actual hardware access for testing. I wrote the script, sent it back to them (albeit with a big disclaimer in the header comments that no testing was done to verify it actually worked as intended), and waited for their response.

      They decided to bring me on board, but what really surprised me was how impressed they were with my script. They said it looked good, and it would be put into production units immediately! In retrospect, this should have been a red flag. After I was hired, I was assigned to work on an unrelated project for a couple months, then when I was moved over to the project I wrote the code for, I saw my colleagues had a separate branch of the code in our source control for every individual deployed hardware unit, with minor changes hardcoded into each one for what should have been set in a configuration file. This was just the tip of the iceberg for what I needed to clean up out of what they twisted my original code into.

      I stayed there for about a year and dealt with many more WTF scenarios during that time. On the plus side, it was a good stepping stone for getting employed at my current company, where I can work with real engineers and development standards, so there's that.

    213. 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).

    214. 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.

    215. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      This, so much this.

      The other thing you'll find on stack overflow is a solution to a subset of your problem - something which does part of what you're trying to do but not all of it. Or your unique circumstances will expose a bug in the SO answer. In these cases you'll need to be able to understand how the SO answer works so that you can fix or extend it. Which is almost the same thing as being able to build a solution yourself.

      These people who are proud of not knowing things are the type of people who write horribly inefficient and brittle software which runs way too slowly and breaks whenever the wind changes direction. I wouldn't hire one.

    216. 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.

    217. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      >> solve from first principles.

      While I agree with the gist of your post, you might want to get a better phrase, as computer programming lacks any semblance of first principles. In other engineering, we can descend down to our equations of state that humanity has figured out, but in software, virtually everything operates in a universe entirely of human creation.

    218. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      This would give an unfair advantage to memorization: anyone who has previously dealt with your real-world example will have an advantage.

    219. Re:Perhaps a better method... by Anonymous Coward · · Score: 0
      In terms of grammar and syntax, Japanese is very similar to Korean, although differences do exist. I think this article makes a good comparison of the two languages. Yeah, I think I agree with his comparison that Korean is harder. As for particles, I'd say yeah it's not exactly the same, because Korean has two particles for some of the particles in Japanese due to pronunciation issues, but very similar. I do concede on his point that Korean does actually have a future tense.

      As you can see, the sentence structure is exactly the same. Indeed, Korean and Japanese grammar has the same general ideas including particles and the main verb always being at the end of the sentence. However, that’s like saying French and English grammar are the same. Once you get into the details, you’ll find all sorts of stuff that are completely different. Let’s take a look at a few examples.

    220. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I didn't see the other comment, so I wouldn't say they necessarily have a common root. Unfortunately I don't exactly remember what I learned in my class related to history of the Japanese language, but I do remember that standard Japanese was actually invented by the government and wasn't a natural dialect or anything. I'm just saying if there's any language similar to Japanese, it would be Korean.

    221. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      And hopefully the remaining 75%-90% of the candidates were insulted and told you to go fuck yourself.

    222. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I got hired by a company who did this, it has its own flaws. I think there's more than just this wrong with the standard approach to hiring, but stopping the obviously wrong things is a good start. Given we are supposed to spend so much time tying to create good tests, its pretty poor we cant even test our own potential hires.

    223. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Retraining is a myth

    224. 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 *
    225. 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?
    226. 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.

    227. 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?

    228. 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.

    229. 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.

    230. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      And coders wonder why their jobs are being outsourced so much! Too many 'dumb' programmers... Exactly the kind of person that should be refused entry.. .

      If you can't understand the obvious intent of code, its usefulness to the end user, or think a block of code that could never be executed is normal, don't be surprised when your job moves to a $10/hour Indian developer.

    231. 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
    232. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Hongoul Korean
      Ni-Hongoul Japanese.

      Even their DNA confirms they are related.

    233. 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.
    234. 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.
    235. 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.

    236. 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.
    237. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      When I got my first job, a few days before the interview I got a letter with a description of a problem (based on the towers of Hanoi). I could sit at home and comfortably solve the problem.

      At the interview, the head developer had a chat with me about how I've solved the problem, how my solution worked, any challenges, why I'd chosen C, why my variable and functions names were in English, etc, thus allowing me to demonstrate that I understood the code I'd written, and not just cut'n'pasted something.

      The only weird thing was that it was for a network administrator job, but it turned out that the head admin was on vacation and the head developer was standing in for him, and I simply got the same problem as people interviewing for developer positions.

    238. 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.

    239. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Why would I waste neurons trying to remember bubble sort? It's the least efficient sort algorithm (apart from random sort) ever invented. Even a naive selection or insertion sort that any child can do (with e.g. a deck of cards) is slightly more efficient (all three are O(n^2), but bubble sort does a lot more swaps per n^2).

      I can do a merge or bucket sort from memory, I know the basic principles of quick sort (but might not remember the details) I can explain the advantages and disadvantages of merge sort over quick sort, and heck, even an unbalanced binary tree is easier than remembering the useless bubble sort.

    240. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      It works for quick and dirty on very small data sets

      So does insertion and selection sort, which are the ones a kid would come up with if asked to sort e.g a shelf of books.

      While they are both O(n^2) like bubble sort, they have fewer swaps per n^2, making them both easier AND slightly more efficient.

    241. 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?

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

      Where do i sign?

    243. 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."
    244. 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."
    245. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Let's be honest here: job interview questions are designed to provide us with opportunities to justify our cognitive biases and prejudices with rationalizations while washing the organization's hands clean from any rejection related lawsuits.

    246. 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."
    247. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      In many cases, the fastest possible way is the one that uses the most RAM, and becomes the slowest if your data doesn't fit in RAM. That's why you need to know the strengths and weaknesses of the different algorithms to choose the one that best fits your needs. They all have different strengths and weaknesses. Except bubble sort, which only has weaknesses (the first one being that it's harder to understand than a simple insertion sort, which is just a tad more efficient).

    248. 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.

    249. 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.
    250. 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!
    251. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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?

      TBH, you'd be wasting your team's time if you had to look up even the simplest of programming algorithms. That means you have a too limited repertoire to be useful. Programming usually requires solving many of those small, well known problems, all the time. If every time you find one of those you'll have to google it, you'll be slow.

      While having to look up complex algorithms is OK, any decent programmer should know the basics. Working with collections and datastructures in general aren't optional. They happen all too often during professional work, if you're not proficient in them, you're just not proficient, period.

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

      Beyond the simplest, common things, sure, experiences and skills can and should be diverse, and interviewers should instead look at the process of looking for a solution, rather than expecting the interviewee to simply know it. But if your future job will require working with relational databases, expecting interviewees to simply, without reference, be able to write sane SQL of some flavor wouldn't be unreasonable. If it's a senior position, you can even expect perfect SQL. Anything less, and you'll just be hiring shackles for your team.

    252. 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.

    253. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      No, you fool! That executed code that was never supposed to run! Now you're picking up burnt pieces of your friends off of the Florida coast line.

    254. 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
    255. 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
    256. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      There is a online test system called "Codility". That does all sorts of topics like C and C++. You are given a time limit to write solutions to particular problems with test cases. Naturally, there are forums dedicated to the correct solutions for these problems.

    257. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      What about the candidate with smart friends that only agree to help them get the job?

      Being self-sufficient is a large part of finding a good candidate.

    258. 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
    259. 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.

    260. 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.

    261. 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.

    262. 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.
    263. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      * 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.

      That's good, because I actively don't want to work for anyone who thinks riddles have anything to do with software engineering.

      Technical problems? Yes. All day, ever day.
      Riddles? No. Never. And fuck you if you ask them.

    264. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      I can identify genius in two questions.
      1) what do you want to work on?
      2) what do you want to know about this company/project that isn't made clear by our marketing site?
      The answer to these questions will lead to a human conversation. I know it is hard for people, but it is still the best way to get to know someone you might want to work with.

    265. 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.
    266. 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.
    267. 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.

    268. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      Then you learned maybe they brought you in to teach some integrity?

    269. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      It's further. The task of programming is not a series of pass-fail hurdles. Actual creativity is helpful but sometimes not required. I cringed when I read the quote from the Ruby guy. He's proud of writing Ruby programs? He _copy and pastes_ from Stackoverflow? These are basically HTML "developers" who got out of their cage, maybe worse than the fanboys who hang around 2600 meetings because they have no politics to give them legitimacy and no history of abuse or drug addiction holding them back that they could later overcome. They're just plain mediocre. I'm sure they have other great things going on in their lives to make up for it, but I don't think they're good programmers.

    270. 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.

    271. 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.
    272. 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.

    273. 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.
    274. 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...
    275. 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.

    276. 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.
    277. 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.

    278. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      yeah, that's what I usually do. I say, "when I did my interview I didn't know the order of arguments to a lot of string functions, which is pretty basic. I will look up manpages for you if needed but because I want to go faster, if you say the API you are expecting, and it's about right, we'll stipulate to it and move on. I'm not interested in that stuff."

      Another problem that's driving some of this frustration may be that interviews which feel deep and fair but that don't go well can feel demolishing, and unfortunately this happens during the interview leading to positive feedback loops. As interviewer usually I don't need to lie to present humility, (unfortunately?), but I'm not above a slight exaggeration. I don't have much interviewer experience yet, though, so I'm not sure this is working.

      There's an argument for marking the candidate down if this positive feedback loop of confidence harms their whiteboard program. I think the loop affects me more than others, and that makes me a worse employee because when facing a programming task I often find the task intimidating so I procrastinate, then am surprised by how yielding it is once I start. If I attempt something and find it impossible and have to abandon it, the experience holds me back for years. This reduces my value to my corporate overlords, so it makes sense they'd want to measure this negative aspect of my character while interviewing.

      However I'd prefer to factor this out of interviews and get a signal for raw aptitude. The confidence/productivity problem can be addressed with (1) corporate culture, (2) self-improvement, (3) firing people after a year if they can't keep up. All three of those are more optimistic than psychologically unsafe interviews.

      It sort of comes down to money: how choosy do you want to be at the cost of higher compensation bids, vs. how much risk. but not really, because this thread is pointing out, in practice this choice is left to the loose professional culture we form together, not to corporate overlords. Actually they don't get much say in this matter.

    279. 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.

    280. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      There was a place in Flordia doing this where you come on-site for a 2 week "interview"

    281. 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; }
    282. 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; }
    283. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      The easy solution is to ask if they collect baseball cards. Because if they do, they probably have more practical experience with sorting algorithms than any programmer. Actually, handing the candidate a mixed stack of cards from different years, sets, sports, etc. and giving them a vague instruction to sort the pile would be a good way to isolate the problem solving aspect from the actual coding. "Oh, you sorted them by sport, year, set, and number. That's nice, but I needed them sorted by player's last name. Sorry, I thought that was implied. For the next exercise, get me a rock..."

    284. 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.

    285. 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!
    286. 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.

    287. 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".

    288. 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.
    289. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Ah. Immigration needed to solve one of their own sw problems, and took advantage of a traveller to get it done cheaply. Smart move, saving the taxpayer some money thus making America great again.

      If you say you're a car mechanic, you get to prove yourself changing oil on a car of theirs , if you're a plumber they have a clogged toilet for you. If you say you work in airport security, you'll probably have to work the rest of the guy's shift - unless you're lucky and another airport guy show up to offload you.

    290. 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.

    291. 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...?

    292. 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.

    293. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Programming since the late 70s. Went to school part time and have multiple degrees from 90s through mid-00'. Also two years into a Computer Science PhD when had to break off after started a family. I can also work in a multitude of languages, and pick up a language quickly.

      Why in the world would I want to remember how to write a bubble sort, although I can probably write a sort if some type if forced to. In most cases, I will look up the built in sort statement for the language, pass parameters and let it handle it. I still have stacks of books for various languages at home, most outdated. Now, I look up online. If do need something specific, like an algorithm I will look this up and then implement in code. May need to look up the specifics as well.

      One reason I never finished the PhD was the preliminary exams were the same foolishness. As you to write some obscure sort that was no covered in the materials recommended for the exam. Or provide a problem that required in depth of multiple language internal methods to solve. Going back to advisor, response was always "the test writer failed to stay within the test requirements, please take again next time". After a few attempts I gave up. Meanwhile my wife, working on a non-technical PhD at the same time never studied for preliminaries. Was emailed the questions, and then given a week to respond. She passed with flying colors.

    294. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Welcome to the US Army. It is madness, but there is a method to the madness.

    295. 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.

    296. 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.

    297. 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."
    298. 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.

    299. 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.
    300. 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?

    301. 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'
    302. 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.
    303. 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.

    304. 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.
    305. 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.
    306. 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.
    307. 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.
    308. 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.
    309. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      I've been doing this for over 30 years and have looked things up online, in a text books or technical manuals for just that long. I get paid 6 figures to look things up.

      If I interview you, I will give you a problem and expect you to be able to logically work through the problem. If I were stupid enough to ask you to write a bubble sort, and you provided an answer like:

      y = sort(x);

      I would accept this as valid and move in. Can guarantee that I wouldn't ask this question to the next candidate. Next on the list would be expect you to know code in a particular language. If I start using a new language, give me a few hours to get the basics, a couple days to work up to some reasonable code and within a couple weeks have a good grasp in the language. After a month or so, I will be writing code as if had been using for years. Get better with times used but learning a new language is overrated.

    310. 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**
    311. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Computer don't care about intention, only what they're told.

    312. 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
    313. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Using a library without understanding how it is implemented is just another form of cargo-cult programming. But assuming what you said is true for the later half of your post, you seem competent enough to balance your black-box trust.

    314. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      what the hell? when would I ever put a stopwatch in my b2b ecomm app, and hell yeah I expect a candidate to be able to demonstrate his skill. should I also not ask them for an efficient way to remove a set of entries from a map based on some keys because that's free labor?

    315. 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.

    316. 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."
    317. 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?

    318. 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."
    319. 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.

    320. 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.

    321. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      WTF autocorrect? I caught this immediately and the last time I did Perl was 8 years ago. This is the kind of thing you need to find real world problems. We have this quite often actually. Some problem in PROD and an engineer needs to figure out what's wrong. They spend hours upon hours doing I don't know what. And I look at the problem for 5 minutes and find the problem. Very very frustrating. Mind you I'mnot talking obscure less than vs greater than things in the code. I'm talking generic problem analysis, like simply looking at the logs that tell you what general problem occurred, looking through a stack trace and finding the right callers and such things. All very basic and easy to do things and apparently nobody can do them. Did I mention frustrating?

    322. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      This! Sooooo much this! It'samazing how dumbfounded some programmers are when reading code they haven't written themselves less than 5 minutes ago.

    323. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      If you really reimplement these from memory every day I'll fire you since you're wasting time. If you can't make or reuse generic code you're no good to me.

    324. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      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.

      I disagree. I interview people all the time and, of course, ask tons of questions I know the answer to. That's exactly what we're doing: trying to figure out how you handle yourself when you don't know the answer. Flailing around is the entire point. The people we hire get bright lights in their eyes and get consumed by the moment, trying to understand. Or, even better, say "I dont' know" and we converse to clarify the question.

      The bad ones I have to feed. The ones I have to feed don't get callbacks.

    325. 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.

    326. 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.

    327. 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.

    328. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      That depends on the specification. It could be that "" is an off-by-one error because you should really use "=".

      It could be that the program is entirely correct vs. spec. Odd, but there are incomplete specs, leading to "but you should have known" discussions.

    329. 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.

    330. 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.

    331. 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.

    332. 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.
    333. 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.
    334. 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.
    335. 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.

    336. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      60 hours a week !!!
      Thats ridiculous
      You should be looking for another job

    337. 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.

    338. 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?

    339. 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.

    340. 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.
    341. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      Back when I was running a dev team I needed database developers. So in an interview I would not interview the candidate at all as the first step. As the first step they would come in, were given a laptop with internet connection, common developer tools for the environment, basically a standard work setup.

      I gave them a sample database with 4 tables and asked them to write a small process however they wanted (stored procedure, code accessing the database, etc.). Competent developers in the skills I was looking for could typically do this in 30 minutes, I gave each candidate 2 hours.

      Result: 85% failure rate among candidates with > 3 years experience in the areas we were looking for.

      You don't need to ask trick questions, you should make the interview represent the day to day work as much as possible.

    342. 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.

    343. 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?
    344. Re:Perhaps a better method... by Anonymous Coward · · Score: 0

      TBH, you'd be wasting your team's time if you had to look up even the simplest of programming algorithms.

      Tends to be extremes. Either someone is strong at memory or someone is strong and reasoning, but rarely both. 99% of my time is reading code. Being able to write code faster has little bearing on how quickly a job gets done. Memorizing anything is just a micro-optimization that is prone to memory errors. Better to just google the problem, get a few possible answers in a matter of seconds, and use your advanced reasoning skills to choose the correct one.

    345. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      FUCK you!

    346. Re: Perhaps a better method... by Anonymous Coward · · Score: 0

      GO and FUCK your DAMN self!!

  2. Escape! by Anonymous Coward · · Score: 0

    'cause I like humping your mommy,
    and getting caught by your dad.
    If you're not into poota,
    and you have half a nad.
    If you like humping butts at midnight,
    in the smooth anal gape.
    Then I'm the one that you searched for,
    come to me and assrape!

        - Helen Gurley Brown

  3. My sin by Anonymous Coward · · Score: 0

    I like C#

    1. Re:My sin by Anonymous Coward · · Score: 0

      It's not like you said "I like Java"...

    2. 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
  4. Nobody codes in a vacuum by Anonymous Coward · · Score: 0

    If these companies expect the equivalent of genius AI to be working for them, then it behooves them to WRITE that kind of AI themselves. Otherwise, f-off with your unrealistic demands and expectations.

    CAPTCHA: "infidels"

  5. 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: 0

      Its not unique to programming and thats nothing compared to other fields.

      I'm studying to take the CPA exam while working under a CPA (2 years of experience under a CPA willing to vouch for you AND successfully passing the exam is required, hurray for redundancy!) and the CPA exam is exactly the same. Fail one of four parts and it doesn't matter if you aced the other three parts. You fail, don't get your license and effectively banned from the industry. Legally.

    6. 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.

    7. Re:I could not agree more by Anonymous Coward · · Score: 0

      Yeah, programmer quality is going down while they want twice the pay. Bubble sort, like linked lists, is basic programming and so you have to know that.

      "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."

      Hello, we are retards. Hire us anyway ('coz everyone else is as bad as us).

    8. Re:I could not agree more by Anonymous Coward · · Score: 0

      "Please implement bubble sort" would be a very stupid interview question.

      "Please implement a sort of this array." would be much better. And if the answer is something like:

      myArray.Sort()

      I would just ask "pretend that such helper methods don't exist, and code the sort yourself."

      I really don't care what kind of sort algorithm is given. I care that the candidate is skilled enough to figure out how to implement an algorithm.

    9. Re:I could not agree more by Anonymous Coward · · Score: 0

      Real life when hired:

      "Please implement bubble sort."
      "No. That would be stupid."
      "I don't pay you to talk back, do it."
      "Fine."

      library.bubblesort(collection);

      As if anyone has to sort by hand anymore.

    10. Re:I could not agree more by Anonymous Coward · · Score: 0

      That's why you ask trivial stuff like "write a function that reverses a string" that requires coming up with a solution on the spot as opposed to memorizing pointless things like what is bubble sort.
      No one competent should have trouble, but the bullshitters actually DO have trouble.

    11. 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.

    12. 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.

    13. 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.
    14. 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
    15. Re:I could not agree more by Anonymous Coward · · Score: 0

      Mod +1, Informative

    16. Re:I could not agree more by Anonymous Coward · · Score: 0

      I often ask candidates to walk me through "any sorting mechanism" (bubble sort would be one; but they're free to describe anything---even "pick smallest number, then pick next smallest, then pick next smallest, etc.").

      If a so-called programmer cannot figure out a loop (*any* mechanism) to put an array into some sorted order, then frankly, they're not a programmer I'd wanna hire. That goes all the way up there on `ability to solve problems' category.

      Mostly that question seems to weed out ``manager types'' who haven't touched actual code in a decade (yet still claim to know C/C++/Java on their resume). Sorry, if you can't think your way out of that question, you're not a programmer.

      Good follow up questions: `what's the complexity of your method?', and `the array is too big to fit in ram... how would you sort it?' (and `what's the complexity of that?').

    17. 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.

    18. Re:I could not agree more by Anonymous Coward · · Score: 0

      But bubble sort is a horrendous sorting algorithm with no practical applications.

      Then why does it exist? It exists because it's simple to understand and implement. It teaches a noob programmer the fundamentals of sorting (basic programming concepts). With knowing basic algorithms and data structures, you're just a code monkey that calls APIs for everything.

      Also, if you have no library available (say some embedded environment), bubble sort perfectly adequate for sorting arrays with a small number of items.

    19. 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.
    20. 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.
    21. Re:I could not agree more by Anonymous Coward · · Score: 0

      even a better way to implement a bubble sort,

      List(int) iList = new List(int)();

      iList.add(400);
      iList.add(382);
      iList.add(8374);
      iList.add(8675309);

      iList.sort();

      Microsoft does the bubble sort for you, or at least it feels like it.

      Nathan

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

      captcha: unquoted

    22. 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.
    23. 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.

    24. Re:I could not agree more by Anonymous Coward · · Score: 0

      How many retests allowed?

      It can't be that hard, my sister passed first try.

    25. 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.
    26. 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...
    27. Re:I could not agree more by Anonymous Coward · · Score: 0

      This is where you're wrong.
      It's all about the use cases.
      Sorting big piles of random data? Extremely bad.
      Sorting something that has been sorted previously and is most likely still sorted? Best choice.

    28. 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.

    29. 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.

    30. 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.

    31. Re: I could not agree more by Anonymous Coward · · Score: 0

      Another google dreamer. Grow up. You are not google. You will never be google. You will never work at google. Stop pretending to be google. Looser.

    32. 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
    33. 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
    34. 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.

    35. 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.

    36. Re: I could not agree more by Anonymous Coward · · Score: 0

      I can do this without any thought. But I'd have trouble writing a sorting algo. Now coding on the laptop, I can do both no problem.

      We don't work on whiteboards except for the whiteboard shit. It is a totally diffferent way to think and communicate than writing code with the keyboard.

    37. Re:I could not agree more by Anonymous Coward · · Score: 0

      As a Uni lab demonstrator this was always the hardest thing to get across to students. My job is to make them think through problems, not regurgitate rote solutions. The whole lab structure is literally designed to force students to think their way through a problem, to learn the process of enquiry and experiment. And yet no matter what you do you will get students (often the majority) sitting around like rocks and whining about how they haven't learnt that yet and trying to cajole you into given them rote answers they can write down to get marks. You get into conversations like this:

      "Is this (pure guess) the answer?"
      "Have you tested it to see if it works?"
      "No... momentary silence... what about this (slight change on previous guess)?"
      "What process would you need to follow to test it?"
      "I don't know... is (another guess) right?"
      "I can't tell you that - would you like me to go over the basic theory to help?"
      "No, but am I right?"
      "Look, can you at least give me some sort of outline of how you might answer your question so I can help you learn? I don't expect perfection, just some evidence that you're willing to make an effort that we can build on."
      "You're mean! I'm gonna give you a bad review."

    38. 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.
    39. 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.
    40. Re:I could not agree more by Anonymous Coward · · Score: 0

      Dude...you'd better change that to if (x.length() == 3)

    41. Re:I could not agree more by Anonymous Coward · · Score: 0

      I remember when I was 10 years old and I was pretty vocal that I didn't want to go to college, I just wanted to start working (right then and there)... This one teacher, who knew me well, and knew where I was coming from, kept trying to convince me that there were still some things I hadn't taught myself that I could learn at college. One day, he came up with, "ok, well do you know how to write a sort algorithm?"... I replied, "can't be that hard", and scribbled up an algorithm. I think it took me about 20-25 minutes. Even though he saw me sitting at the desk, writing the code on a piece of paper, he was somehow incredulous that I had just made it up on the spot. He asked me, "you already knew how to do this, right, this is something you taught yourself"... My reply was of course "not until just now... why, is it wrong? I know it's probably not the most efficient... but if I had more time..." he just looked at me surprised and said, "You know this has a name, it's called a Bubble Sort". I replied, "whatever, that's another reason I don't want to go to college, everything has to have some stupid name and all they care about is you memorizing names..." He just laughed. Never bothered me again about going to college. :-)

    42. 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.

    43. Re:I could not agree more by Anonymous Coward · · Score: 0

      It's not just a good answer, it's the best answer. No, check that.

      The best answer is, "You really should go with a Quicksort or Heap Sort or Insertion Sort instead."

      For the defenders of the Bubble Sort. Your answers are acceptable so long as you know, for certain, that the data set will always be small. I'm not terribly comfortable with that assumption but maybe if it's a one-off process you might know that.

    44. 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.
    45. 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
    46. Re:I could not agree more by Anonymous Coward · · Score: 0

      Back in the early 1980's I had a patent related to VideoRam. I went for a job at a Startup in Texas. They asked me about how to use Video Ram.
      Yes, the patent escription was on my Resume.
      I wrote the Patent Number down on the paper and gave it to them
      I said, 'there is your answer. If you use it then you owe me royalties. That is my patent. I think that proves I know how it works and now to use it.'.
      They never got back to me about the job. Never made a penny from the patent either.

      I couldn't code a bubble sort these days. There are libraries for all that stuff.
      However if you want me to develop a system that can handle the processes in an Oil Refinery then I can do it. I'm still a software grunt. I guess I'd fail those DHS questions.

    47. 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.
    48. Re:I could not agree more by Pentium100 · · Score: 1

      "Vi or emacs?"

      Would "nano" be an acceptable answer?

    49. 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.

    50. Re:I could not agree more by Anonymous Coward · · Score: 0

      Did I mention inserting anything in to the data?
      Sorting an already sorted list with bubblesort is the most efficient way to do so.
      Granted, if you're trying to repeatedly sort an already sorted list you've got other problems.

    51. Re:I could not agree more by Anonymous Coward · · Score: 0

      So... you acted like an arrogant prick and are surprised you didn't get a reward? Just... wow.
      FYI:

      1. every single candidate's resume would have made them out as god's gift to computing, and there would have been hundreds of the things. They are useful as pre-interview candidate filter and not much else.
      2. that video ram question was your opportunity to show off that you knew your stuff and oh, incidentally, you know it so well you have a patent which makes it work even better using "this really neat trick". Cue some friendly chit-chat with interviewer, developing a relationship and making sure you get remembered as "that really smart guy we talked to". If you weren't busy playing the arrogant tosspot, that is.
      3. "I would use a library" is a perfectly valid answer to the question about bubble sort. It shows that you have real-world experience. That is a good thing.
      4. any idiot can get a patent. A patent number simply says that you have self-belief and know how to fill in forms.

    52. Re:I could not agree more by Anonymous Coward · · Score: 0

      Unfortunately you still failed the interview, because you forgot about inputs of length 0, 1 and 2.

    53. Re:I could not agree more by Anonymous Coward · · Score: 0

      And now you are the asshole who sits in the next cubicle over and doesn't know how to use git, in fact you wrote a set of scripts that compare your current code with a previous version and when you make changes it copies your changes to a folder in your home directory. You also built the deployment system that pushes code to production when you send a text message, but it doesn't have any authentication, and now JD over in marketing uses this to push his copy changes to the website when the dev team isn't in the office.

    54. 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!
    55. Re:I could not agree more by Anonymous Coward · · Score: 0

      See all those moves in your description? None of them happen with a bubblesort, wasting memory bandwidth is the biggest crime in efficient code today.
      Also, you fail your big O for the day. Sorting a already sorted list with bubblesort is O(N)

    56. Re: I could not agree more by Anonymous Coward · · Score: 0

      Memory - bubble sort can be done in place.

    57. 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.

    58. 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.
    59. 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.
    60. 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.
    61. Re:I could not agree more by Anonymous Coward · · Score: 0

      ahhh if a write
      var array;
      print(array.bubbleSort());
      is it an abstraction ? or a tricky answer?

    62. Re:I could not agree more by Anonymous Coward · · Score: 0

      That's funny. This was the first thing I thought about bubble sort.

    63. 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.
    64. 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.

    65. 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.

    66. 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.

    67. 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.

    68. 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.
    69. 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.
    70. Re:I could not agree more by Anonymous Coward · · Score: 0

      I would explain the answer, since you never know when you're dealing with some old fart who has never heard of nano ("It was pico back in my day!") and will conclude you're lying.

    71. 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?

    72. 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

    73. 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.

    74. 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.

    75. Re:I could not agree more by Anonymous Coward · · Score: 0

      We don't ask for bubble sort specifically, but do ask for a sorting algorithm. Most candidates go for bubble sort, which is sensible because it's easy to implement on paper. I would not (and do not) reject a candidate for writing a working bubble sort, just because it's not the fastest.

      The fact that most of them still get it wrong is worrying, though.

    76. 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.

    77. 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
    78. Re:I could not agree more by Anonymous Coward · · Score: 0

      It can also be competitive if the number of elements to be sorted is small (say, three)

      Just use a selection sort in that case.

      1. find the smallest of the 3 items
      2. swap it with the first item
      3. find the smaller of the remaining two
      4. swap if necessary

    79. 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.

    80. Re:I could not agree more by Anonymous Coward · · Score: 0

      Please show us your bubble sort code for 3 items. I would like to compile and compare assembly!

    81. 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;
      }

    82. 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)

    83. Re:I could not agree more by Anonymous Coward · · Score: 0

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

      No it's not fine. Does your thermostat scramble the temperature values every morning so it can resort them? If your list of temperatures is ever not sorted, you did something wrong.

      1. Insert new value in the proper place.
      2. Remove any values that are too old to be included in the results.

      Do this in any order you see fit.

      Bubble sort my ass.

    84. Re:I could not agree more by lgw · · Score: 1

      Bubble sort FTW!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    85. Re:I could not agree more by Anonymous Coward · · Score: 0

      If data is "almost sorted", then bubble sort can quit early and perform better than selection sort. Selection is always quadratic, bubble sort can be linear with lucky data. Some practical applications produce mostly sorted data sets . . .

    86. 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.
    87. 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.
    88. Re:I could not agree more by Anonymous Coward · · Score: 0

      I don't believe there is a more efficient way of doing it (proof needed!).\

      Simple proof of lower bound: In the worst case, all lines intersect with each other, resulting in O(n^2) intersections. Your algorithm has to print all of them, which takes time O(n^2).

    89. Re:I could not agree more by Anonymous Coward · · Score: 0

      There are sweepline algorithms that do intersection testing in n log n time. Thdey are a pit tricky to get right.

    90. 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.
    91. 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.
    92. 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.

    93. 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.

    94. 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!!
  6. 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 Anonymous Coward · · Score: 0

      I have to look up C++ lambda syntax all the time. Imagine going to an interview where all they want are lambda, lambda, and lambda. You can't tell me that's not a diversity issue!

    2. Re:Of course they have to play the diversity card by Anonymous Coward · · Score: 0

      Representative from Organisation tries to make news item about their cause, News at 11.

    3. Re:Of course they have to play the diversity card by Anonymous Coward · · Score: 0

      I this day and age, if we want something done about an issue, making it about diversity is the best way to bring attention to the cause.

    4. 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.
    5. 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
    6. Re:Of course they have to play the diversity card by Anonymous Coward · · Score: 0

      I thought the Tri-Lams, grudgingly accepted the nerds in the end. They must have done because they were national representatives in the sequel!

    7. Re:Of course they have to play the diversity card by ruir · · Score: 1

      Tim Cook, is that you?

    8. 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; }
  7. Do you have a better metric for Hiring? by Anonymous Coward · · Score: 0

    The only better metric I can think of is if you have published a lot of programs, and
    you can say, "see look at my work - it's successful..."

    1. 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.

    2. Re:Do you have a better metric for Hiring? by Anonymous Coward · · Score: 0

      The only better metric I can think of is if you have published a lot of programs, and you can say, "see look at my work - it's successful..."

      Personally, I prefer "trial period" to find out how well you do. I will ask some basic programming questions but nothing more than making sure you've really done that C (or whatever else) you claim. I'm more concerned about how you work, what is motivating you and things like that. If you can program and have 20 years experience, it's obvious, the question is do you fit in with the team. If you are fresh out of school, I'm going to have to mentor you anyway, so the "do you fit in" question is the important one. So no technical questions about stupid jot's or tittles of some programming problem are asked by me.

      I do ask ONE trick question, but the trick is that it's disguised as a programming question, when it's really about your work ethic. The question starts with a programming problem that I ask you to solve using pseudo code, but I keep altering the parameters of the question to ensure you fail to complete the fake task within the fake deadline and ask the applicant "So what do you do then?" The point is two fold. 1. Discover how far they are willing to go to cover for the failures of others around them and 2. discover if they are the "cover my a$$ type" or are committed to communicating the true status of their tasks to management.

      I figure that it's more important that you fit in with the group and are wiling to work well with others than having super human programming skills. Why? Because if I can work with you, I can train you in the programming skills I need. But if I cannot work with you, no amount of skill you have is going to make you useful to me.

    3. 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
    4. 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.

    5. 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?

    6. 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.
    7. 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.

    8. Re: Do you have a better metric for Hiring? by Anonymous Coward · · Score: 0

      It's fraud if you do, since you are not paying them to work on your product. Farmers cant say plow or plant an acre as an interview technique, why should you get free consulting?

      If you are serious about a hire, pay them $100/hr during your interview. If you can't screen rabble out over the phone, You don't deserve quality applicants.

    9. Re:Do you have a better metric for Hiring? by Anonymous Coward · · Score: 0

      I like all these approaches to test the real abilities of a developer. Memorising basic algorithms is just plain stupid.

    10. 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
  8. 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.

  9. 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 Anonymous Coward · · Score: 0

      Yeah, I couldn't figure that one out. Are they saying women can't study? People of color don't go to school? There are some weird assumptions there.

    5. Re:SubjectsSuck by Anonymous Coward · · Score: 0

      I'm as liberal as they come and I'm not buying this either. One of the linked articles says women and minorities give up on themselves quicker. I'm not buying that either, but even if it's true, that's kind of the point.

    6. Re: SubjectsSuck by Anonymous Coward · · Score: 0

      That sounds cool. I'm going to try that with my girlfriend. Except the marker will be my **** and the marks will be bruises since I'm in a donkey punching stage.

    7. 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

    8. 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.

    9. Re:SubjectsSuck by Anonymous Coward · · Score: 0

      Whiteboards is a cultural shock for everybody since schools use, or at at least used to use, blackboards and chalk.

    10. 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.
    11. 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.
    12. 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 !

    13. Re:SubjectsSuck by Anonymous Coward · · Score: 0

      Vote this up!

    14. 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.
    15. Re:SubjectsSuck by Anonymous Coward · · Score: 0

      #blackboards matter

  10. So, by Anonymous Coward · · Score: 0

    landing a top SWE job is harder (sometimes much harder) than actually doing it. So is getting into MIT harder than studying there. Why is this a problem? The process is not broken, stop whining and go brush up on your O-notation.

  11. I understand this is tough on older programmers... by glenebob · · Score: 1

    What does this have to do with women and people of color?

  12. 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 Anonymous Coward · · Score: 0

      My experience is that Amazon does not pay near enough to bother with them versus any shop in Seattle. It is insane to even bother, which is why they are constantly bringing in people from poorer parts of the country/world and lying about the cost of living here.

    2. 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").

    3. 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.

    4. Re:Same by Anonymous Coward · · Score: 0

      Sorry, but this is why front end guys aren't really coders. You guys don't really know algorithms. It's why backend developers make more money. It's Amazon so they will easily find an overqualified backend guy with the low level algo knowledge to do the work. They can be that demanding even if the position doesn't require it. When the position ceases to exit they can transition the guy into a new roll or just fire him, but probably they'll transition him to avoid the extra cost associated with new hires. That's why you lost out.

    5. Re:Same by Anonymous Coward · · Score: 0

      Google's interview process is to screen out people rather than select viable candidates. And according to someone who was an "interview trainee", sometimes the interviewer doesn't know the complete answer either. He had to jump in (a big no-no for someone who's just supposed to sit and listen) and ask a further question of why the interviewee's code for a non-blocking queue wouldn't work and why since the lead interviewer didn't know that the answer was wrong. When the interviewer is an arrogant dick, sometimes that tends to be the type of person you hire.

      Recruiters seem very surprised when I tell them I won't work for Google. But only one asked why.

      "I'm not a fit for the corporate culture. And anything I do as a sysadmin there has no real-world use outside of Google."

    6. 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.
    7. Re:Same by Anonymous Coward · · Score: 0

      Unless you got specific feedback that you were a great candidate other than the fact that you couldn't code up this specific sorting algorithm, you're going to be better off assuming that you failed your interview for other reasons. I'm sure not knowing how to code that particular algorithm didn't help you, but really think: how did you react when you realized you weren't going to be able to complete the task? How were your interactions with other interviewers? Did you really get the right answers to all the other questions? How did you answer the "soft skills" questions? Is it possible that there was simply a better-qualified candidate?

      Maybe the answers to all those questions mean that yes, you didn't get the offer because of that one question. But more likely, it was one reason amongst others (and maybe not even the most important reason) you didn't get the job. Thinking about how you can do better in an interview, rather than blaming one thing beyond your control, is going to be way more beneficial to your career.

    8. Re:Same by Anonymous Coward · · Score: 0

      OMG, right on. The most important consideration to hire someone is "will they get along with my other team members" period! If not, I don't care if there God I don't want them on my team. I will never have a person under 30 do interviewing. They don't don't have the experience to know what is or isn't important.

    9. 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.

    10. 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.

    11. Re:Same by Anonymous Coward · · Score: 0

      This exactly, although a lot of people here may not like to hear it. Our principal is "if you're not excited to get to work with this candidate, don't hire her/him". We screen out the ones that obviously don't have the skills, but from there it's mostly about personality and cultural fit. We're not big enough to be able to have people hiding in a cubicle somewhere, never talking to anyone, and only doing what they are told. We spend a lot of time together, so let's not bother if seeing you in the morning is just going to put me in a bad mood...

    12. 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

    13. 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.

    14. 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
    15. Re: Same by Anonymous Coward · · Score: 0

      Honestly, even an elementary level programmer would have been able to do what you were asked to do. They tested if you were a properly educate do programmer. You proved you weren't. I don't see what the problem is.

      Algorithms... especially sorting is critical to all programming. If you don't know how sorting algorithms... a very simple topic mind you works well enough to code one on the fly, you can't choose the right way to store and retrieve data based on your dataset.

      Consider that being a person who can write a program but doesn't understand data structures and algorithms will simply choose what is convenient. On the scale of a system like Amazon's a bad choice for algorithms can add up to megawatts or gigawatts of wasted power worldwide over short periods of time. That is financial loss measured in possibly millions of dollars overall.

      Microwatts of wasted power on one computer is irrelevant. But microwatts wasted on a million computers simultaneously adds up to watts. If you waste them quickly, it is an effect that can be globally harmful.

      So let's say you write a piece of code that runs on Amazon's home page which increases power consumption by 5 microwatts per device each time the page is loaded. This because you decided to store data as a list which inserts values without consideration for algorithmic complexity. What do you think the is carbon footprint of your lack of education?

      To be fair, the Amazon.com home page is crap and wastes a great deal of power. But if you were hiring someone, wouldn't you want to hire someone who understand where, when and how to manipulate data more efficiently?

    16. 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.

    17. Re:Same by Anonymous Coward · · Score: 0

      A long time ago during an interview after a half hour of technical questions the interviewer asked "How much does your car weigh?"
      I answered that the curb weight was around 2750lbs and a gross weight about 750 lbs more. We chatted a while about car stuff then he said he asks that question to see if the interviewees had any idea about common things in the world around them.

    18. 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.

    19. 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.

    20. 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...
    21. 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...

    22. Re:Same by Anonymous Coward · · Score: 0

      I used their PHP SDK, it is a bit of a mess.

    23. 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.
    24. Re:Same by Anonymous Coward · · Score: 0

      Ha, exactly the same experience with Amazon.

      Wasn't even that interested, but agent/spammer super agreedive.
      Shit interview. Apparently I failed, but already taken job at bigger company (market cap) in obscure city (London) with obscure company (begins with A, M or G).

      Once a book seller, always a book seller.

      They still invite me weekly to recruitment drives in Geneva/Dublin/Shitsvillee.

      Not interested with your set-top box guys: my colleagues are former employees of yours and not interested either!

    25. 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.

    26. Re:Same by Anonymous Coward · · Score: 0

      The big problem with that, is it's a good way to keep bigotry alive.

      bigot:
      "One who is strongly partial to his or her own group and is intolerant of those who differ."

    27. 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.
    28. 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

    29. Re:Same by Anonymous Coward · · Score: 0

      > I don't need to personally like someone to work with them.

      I sure do!

      I mean, I always try to stay detached and professional in my interactions with them, but you know that saying about letting someone live rent-free in your head? If someone's a jerk it really distracts from my mental process because I'm constantly wondering how to best deal with them or worrying about whether I said the wrong thing.

      If I have to keep working with a jerk, eventually I end up quitting or transferring out. It's just not worth the stress.

    30. Re:Same by Anonymous Coward · · Score: 0

      I have, and you're right.

    31. 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.
    32. Re:Same by Anonymous Coward · · Score: 0

      I been professionally writing coding for 19 years, have a 4 year CS degree, still remember NP and P and would expect anyone I'm interviewing that also has a CS degree to remember this as well.

      Not all CS curriculum is programming, and not all professoinal programmers have CS degrees. If a job prereq is to have a CS degree, that candidate better know NP and P. But if the job prereq is to be awesome in a certain technology for 5+ years and doesn't mention the degree, then it's daft of the interviewer to utilize interview questions like this as a gate.

      I've personally found a bigger issue is that job postings do not reflect that actual knowledge necessary to be successful in a job.

      Example / Rant: As a game developer, I've worked with schools that want to build a professional game programming track, yet they ask for someone who has 3+ years industry experience and a Master's Degree. In our existing studio (avg 150 people) there is no one who both meets that requirement and has a desire to teach. That Master's Degree requirement will not find someone more qualified; they just essentially eliminated a pool of talent that would be stellar for their program. Additionally when they need to lower their standards, they keep the Master's Degree requirement but allow chuckleheads who've only made games as hobbyists through the door, never having to pay rent with the games they sell - these teachers are awful and feed students a boatload of misinformation.

    33. Re:Same by Anonymous Coward · · Score: 0

      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.

      How do you know that's why they didn't hire you? Did they tell you?

    34. Re:Same by tibit · · Score: 1

      It's so dope :)

      --
      A successful API design takes a mixture of software design and pedagogy.
  13. Shocking! by Ergodicity · · Score: 0

    Programmers are asked to program in a job interview - what a ridiculous idea. Perhaps when I hire programmers I should ask them to paint or dance? And then there's the racial/gender/age bias nonsense on top of it. We've been asking programmers to write code in all job interviews, and: about half the team is women (including 2 of the 3 team leads), and about 20% are white (rest are Russians, Indians, Asian, Israelis). Why would asking to code be a bias against anyone except people who can't code? Interviews are never an exact process, and I agree that riddles ("a chicken and a half lays a egg and a half in an interview and a half") and knowledge questions ("what is NP complete") are a waste of time. But if you can't code a sorting algorithm without a reference, or if you can't come up with a simple client server algorithm, or if you can't devise a locking scheme to have multiple threads cooperate on a resource, then you don't have the skills I need. I might be missing people who'd be great on the job if I just gave them a chance, but I can't just hire someone and fire them 2 weeks later if it turned out they can't do the job. A free trial would be ideal, yes, but it's not realistic in our job environment. BTW, I always ask interviewees to write code at home and email it to me - this can count as another way for people who struggle in front of a whiteboard to get a second chance. But I've never seen someone who was great in the email and awful in front of the white board.

    1. 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.

    2. 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
    3. 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.

    4. 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.
    5. Re:Shocking! by Ergodicity · · Score: 0

      I don't disagree with you, but that was only one of the points of the message. The others were about the uselessness of asking coders to code in an interview - here is where I disagree with the post.

    6. Re:Shocking! by Ergodicity · · Score: 0

      Ok, how about reversing a string in place? checking if an expression has balanced parenthesis? I don't care that much what you code, but you need to be able to demonstrate you can code. (and, in my industry - high performance embedded OS - the way you store, search and sort stuff is actually critical)

    7. 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.

    8. 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.
    9. 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.
    10. 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.

    11. Re:Shocking! by x0ra · · Score: 1

      Most of the job is actually architecture, not implementation...

    12. Re:Shocking! by x0ra · · Score: 1

      which probably would only be required for 0.01% of the jobs...

    13. 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
    14. 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
    15. 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.

    16. Re:Shocking! by Anonymous Coward · · Score: 0

      Not sure what language/syntax you're using but "pi*r^2" is probably more accurate.

    17. Re:Shocking! by jordanjay29 · · Score: 1

      Not if you want circumference. If you want area, that's correct.

    18. 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!

    19. 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!

    20. Re:Shocking! by Anonymous Coward · · Score: 0

      Knowledge does not exist in isolation; it tends to build off of other knowledge and lead to further insight and discoveries. Every programmer here has probably coded quick sort at one time or another. If they can't do it now, without a reference, that means they are not fully retaining that knowledge. That may or may not mean anything by itself - any specific sorting algorithm is easily confused with another, so If I were interviewing I'd observe the process by which the interviewee attempted to construct a solution - but it could mean that the programmer is not interested in learning general principles that scale up and apply to all problems. In any case, t is a problem-solving test every bit as much as a memory test. These algorithms are not "hard" by themselves, so you should be able to come up with three or four different "guesses", and defend their logical consistency, on the spot even - if you don't remember the specifics of bubble sort.

    21. Re:Shocking! by jbolden · · Score: 0

      That a radius is 1/2 a circumference and you can move the 2. And yes people miss those sorts of things all the time in interviews. I was also thinking about derivation formulas 4*(1 - 1/3 + 1/5 - 1/7...)

      As for why transcendental matters mainly I was trying to pick something that's only doable with fairly advanced knowledge. Basically this tests the person understands graduate level Galois theory.

    22. 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.
    23. Re:Shocking! by Anonymous Coward · · Score: 0

      Bullshit, people like you are the problem and why I support a BS in CS + passing qualification exams every few years.

      People like you need to get the fuck out. You do realize that sort() has been available for decades and knowing how they work is very relevant and always will be.

      Programming is not a skill for end-users. That is what you are, an end user not a programmer.

      If programming is a black box to you, GTFO

    24. Re:Shocking! by Anonymous Coward · · Score: 0

      Your ability to code a sorting algorithm is extremely correlated with the ability to code the tasks you will be asked to do every day as a programmer.

      They are not testing your ability to sort something, they are testing your ability to solve a well defined problem on the fly which in this case happens to be sorting. On monday of your first day it will be swizzling, on tuesday bazzling, and on wednesday something else that is specific to the particular job and environment. Things you can't look up a ready made answer on stackexchange and will likely be more complicated than sorting.

      If you can't figure out sorting on your own, I have no confidence you will figure out swizzling, bazzling, or the other domain specific problems that it will be your job to solve. Not knowing how to sort is particularly egregious because not only is it a simple problem to solve and analyze on your own with no background, it is also so well known that it is hard to see how you couldn't have been exposed to it at some point.

      I mean, they could ask you to solve some brand new problem, and probably will once you pass the sorting. but if you can't solve the simpler sorting task then it does not inspire confidence.

    25. Re:Shocking! by Anonymous Coward · · Score: 0

      Ding ding ding!

      These fucksticks that can't figure out the 6 lines or so of a bubble sort need to see if McDonalds will hire their dumb asses.

  14. 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 Anonymous Coward · · Score: 0

      i'm not gonna write a comment but you can just imagine some autistic page of drivel where i crap on you for not understanding things that haven't been relevant to your day job in 2 decades, suck on deez nuts boy

    3. 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.

    4. 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.)

    5. 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.

    6. 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
    7. 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.
    8. 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.
    9. Re:I'll answer this one. by Anonymous Coward · · Score: 0

      If it takes you longer than about two minutes to figure out a bubble sort from first principals you're a really slow programmer.

    10. Re:I'll answer this one. by Anonymous Coward · · Score: 0

      I don't have a CS degree but I did learn different sorting algorithms at some point for I think it was a mathematics course.

      I can't remember what a quicksort is, I don't remember how to implement a bubble sort. I learned it, but now I have forgotten it.

      I don't see why anyone would generally be implementing any sort of sort manually as part of day to day life.

    11. Re:I'll answer this one. by Anonymous Coward · · Score: 0

      Playing devil's advocate, he may not remember exactly how to implement it. Especially given the pressure during an interview with no reference material, it is reasonable that many people may not remember the exact algorithms they learned during school. Not long ago I had to write a binary tree print out algorithm from memory and it took me a good ten minutes just to remember the the more common recursive method (and I wrote the pseudo code wrong the first pass and accidentally had a null pointer in it) much less the less memory intensive iterative method. This is after graduating with a CS degree and working in the field for 5+ years.

    12. Re:I'll answer this one. by Anonymous Coward · · Score: 0

      It's actually really easy to *not* know bubble sort and have a CS degree. Sure, you might have learned it at some point in your CS education, but that doesn't mean that you ever needed to use it after those Intro to CS classes.

      If you don't use it everyday, it's useless knowledge and you eventually forget. The important thing is that you remember the basic problem solving skills and logic. You don't need to be able to perfectly implement a bi-directional linked list unless you're working on the STL, Java Collections, or whatever because in the real world you'll already have one available to you. If you don't, then you'll only implement the specific functionality that you need and even then it's OK to look up reference implementations.

      I got a Math Minor with my CS BS degree since it was two extra classes. Back in the day (10+ years ago) multivariable calculus was my jam. Now? I couldn't do a single-variable integral without a refresher. Why? Because I don't do heavy math daily. I don't need to. The same is true for a lot of sorting algorithms. I had to implement Median of Medians for a grad school class last year, today I couldn't repeat that without looking the algorithm up. Same with red-black trees and all those damned rules. I didn't memorize any of them because it would be a waste of time and brainpower to memorize something that will always be easily looked up or referenced on the very rare occasion the knowledge is actually required. Hell, the exams for that class were open book for that exact reason. Knowing how/when to use what was more important than memorization.

      Knowing when to use a given well-known/well-defined algorithm is more important than being able to regurgitate its implementation on command.

    13. Re:I'll answer this one. by Anonymous Coward · · Score: 0

      I learned bubble sort in CS courses nearly 20 years ago. I have never used it in practical application, and haven't spent a lot of time thinking about it since then. Upon seeing this article, I was curious whether or not I could whiteboard it and implement it. I generated 10 random numbers, took out a sheet of paper and did a few steps of bubble sort by hand on them, and then fired up Jupyter and wrote bubble sort in Python. It only took a few minutes.

      I couldn't do quicksort from memory at this point. But I could do insertion sort, selection sort, or merge sort. For whatever that's worth.

    14. 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
    15. 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
  15. 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 Anonymous Coward · · Score: 0

      I'd say you're missing the point.

    2. 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.

    3. 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.

  16. I don't know if this is worth answering. Should I? by Archtech · · Score: 0, Troll

    "Hello my name is Mike, I'm a GDE and lead at NY Times, I don't know what np complete means. Should I?"

    1. Since he works at the NYT, nothing he does matters. The newspaper's output is harmful or nonsensical, so in a way it is better if it isn't published.

    2. Thanks to the wonder of Google, he could find out what "NP complete" means in about one minute. So the question is: does he think finding out would be worth one minute of his time? Further, if not, how good a programmer can be become?

    3. If you think about it, he can't really judge whether he should know what "NP complete" means until he knows what it means.

    --
    I am sure that there are many other solipsists out there.
  17. 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 Anonymous Coward · · Score: 0

      I think I'm actually the trick question guy at my shop. That said, I *know* it's a trick question when I ask it, and the goal isn't to get a "correct" answer. I use this technique to put pressure on the interviewee, get them off kilter, and see how they think and respond during a stressful situation with unknowns. It's not about the destination, it's about the journey, more or less.

    2. Re:Sick of the trick questions on interviews by Anonymous Coward · · Score: 0

      Couple places I interviewed at (and got the jobs) threw in obscure questions about things the average desktop support/sys admin types wouldnt know unless they had been doing that line of work for a good number of years or just knew a lot of stuff. I quite enjoyed being challenged by those questions.

      Once place did a one hr interview with the manager you'd be working for and 3 people from the dept youd be working with. Then a 1hr 30 question written (written with pen and paper (I'm not kidding)) test. Out of the group they interviewed I was the only one to answer all but 2 of the questions correctly - or at least have some idea of an answer. This was a University and it was one of the coolest places I have ever worked.

    3. 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."

    4. 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
    5. Re:Sick of the trick questions on interviews by Anonymous Coward · · Score: 0

      I use this technique to put pressure on the interviewee, get them off kilter, and see how they think and respond during a stressful situation with unknowns.

      That's dumb and unnecessary. Every interviewee is going to be stressed at an interview. Ask a normal algorithm question like everyone else.

    6. 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.
    7. 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'
    8. Re:Sick of the trick questions on interviews by Anonymous Coward · · Score: 0

      That's why I'm going back to school for something other than programming. Yeah, if you're some Stanford Phd in SF then you'e going to have a great time, but for everyone else who just went to a state uni and doesn't live in a tech capital, it's just not worth it. You can go to any shitty school for accounting or pharmacy and have a nice career and comfortable life. These companies always complain that there aren't enough programmers, but then they treat programmers like shit. Why would anyone with the ability to be a programmer put up with the indignity of actually being a programmer? I'm done.

    9. 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 ?
    10. Re:Sick of the trick questions on interviews by Anonymous Coward · · Score: 0

      Oh boy, this strikes a chord with me.

      I was once invited in for a software development job interview at a bank, and was getting a coffee to go just before the interview, when I ran into one of the stalwarts of the local user group for the language I work in.

      He laughed when he saw me, and said he'd have to recuse himself from the interview process because we knew each other already. He said he usually enjoyed interviews, because he'd let the other guy ask the first questions, then hit the candidate with some ridiculously tough technical questions about the language, while the other guy watched to see how the candidate handled it.

      What a dick. The interview was pretty boring, and they didn't call me back. Good riddance.

      Asking stupid technical questions during an interview is such a waste of time. It's like knowing what day of the week January 1, 2001 was. Who cares!

  18. 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 Anonymous Coward · · Score: 0

      I did an interview that included that once.

      I booted up a program that I use to run a side business. It uses several custom controls, manages inventory, calculates taxes, etc. I see so many fools struggle with spreadsheets for lack of C#/SQL skills.

      All they did was nitpick it. For instance, I'd written a plug in system for some stuff like tax rates and commissions that I thought was pretty cool. Well, the dude had a fit that I was using state, not zip code, to determine tax rates for PA.

      The most galling thing is the quality of programmer that these places hire. They're beyond useless. They don't think ahead (forget plugins, these clowns won't even check for null references) and they're utterly helpless without a pile of frameworks holding their hands every step of the way.

    2. 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.

    3. Re:The best interview coding question by Anonymous Coward · · Score: 0

      "Show me an example of a program that you wrote and are proud of"

      Sure - would you sign this NDA first?
      Lucky I got it blind-signed from my current / former place, just by telling them that I'm looking for new opportunities. Or are you hiring only FOSS hackers?
      Also, pride is a cardinal sin. The two best programmers I ever knew would never - even under pain of a job interview - admit they ever wrote anything really good. (Both are awesome teamplayers, proficient in several langues, not "autists"). Only from the 3rd best onwards could I expect pride.

      Wait, did I just hear a wooshing sound?

    4. Re:The best interview coding question by Anonymous Coward · · Score: 0

      "That code look awesome! How does it work?"
      "How should I know? I wrote it two years ago!"

    5. 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'
    6. 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.

    7. 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

    8. Re:The best interview coding question by Anonymous Coward · · Score: 0

      Sorry, it's owned by my ex-employer and i wrote it under a NDA.

    9. Re:The best interview coding question by Anonymous Coward · · Score: 0

      Despite (or indeed, because of) being a professional programmer for 10+ years, I don't have a single program to my name which technically isn't someone else's IP.

      I could certainly talk about what I've done in the past, even in detail, but showing actual code to anyone outside of my previous company? Nope.

  19. 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.

  20. 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?

    1. Re:Missing the Point of those Tests by Anonymous Coward · · Score: 0

      My challenge was to detect if a string was a palindrome. I said I was going to write it in Ruby and utilized string.reverse, they weren't happy with my smart-assery and made me expand on it.

    2. Re:Missing the Point of those Tests by Anonymous Coward · · Score: 0

      Same here. I've interviewed many for mid to senior level software engineer positions, and I also like to ask rather simple questions. "Open and read a text file" or similar. I find it a good interview question since it filters out about 50% of the candidates.

      And like you say, I'm not looking for perfection or if the candidate remembers every API call. Rather, does he or she practice on a semi-regular basis the work they seek to make their full time profession? Most don't, so I'm not sure why they bother applying.

    3. Re:Missing the Point of those Tests by Anonymous Coward · · Score: 0

      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.

      That doesn't sound very useful in terms of gauging a candidate's ability, except that they happened to know that API existed. You would rank someone who gave you that the same as someone who wrote out a correct implementation? What is the purpose of asking that question?

  21. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    Yea because everyday we write bubble sort algorithms. I kind of agree with the P and NP. That is kind of important. But writing algorithms on a whiteboard? Come on that's just not realistic.

    When I get asked this question I'm tempted to ask back "can I use the bubble sort function in the standard library?"

  22. 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 Anonymous Coward · · Score: 0

      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.

      Not everyone drinks coffee. You just failed the "smart enough to be worth working for" test.

    4. 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.

    5. 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?

    6. 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

    7. Re:Not very effective, anyway by Anonymous Coward · · Score: 0

      You sound stuck in your ways. Perhaps you should upgrade your coding tool to one that directly tells you the arguments.

    8. Re: Not very effective, anyway by Anonymous Coward · · Score: 0

      What's worse, is they are eating everyone's time, since that crap can be screened in a two minute phone call.

      If you ate hiring:
      1) post a salary and working conditions. Not TBD or DOE.
      2) post an expected, reasonable and related skillset.
      3) post it online with a url clear contact info

      If you don't do all three if those, good people won't apply, except to practice interviews for laughs.

    9. 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.

  23. 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.

    1. Re:Really???? by Anonymous Coward · · Score: 0

      Says the person who has seen (asked) the same problem over and over again, and thus very familiar with it.

    2. Re:Really???? by Anonymous Coward · · Score: 0

      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.

      whinny?

      Are you a horse?

    3. Re:Really???? by Anonymous Coward · · Score: 0

      It's more of the other way. An experience programmer in an interview would look at you and think, are you're trying to waste 15min for something that doesn't well represent his capability or your real demand for the post?

      Some of those questions essential sort down the hiring to only the A-graduated newbie programmers(because after the mocking the experience programmers would not take the job). It might be good if you want ok cheap labour programmers.

  24. 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.

  25. 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 Anonymous Coward · · Score: 0

      Maybe the problem here is that HR isn't qualified and their department should be burdened with the budget problem of a perm-contract until a suitable employee is hired. This stopped our HR roadblocks in the past and made them part of the solution instead of the problem.

    4. 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.

    5. Re:I lived this another way ... by Anonymous Coward · · Score: 0

      I had the reverse - got asked to take a typing test for a coding job. Now before I lost the use of my left hand I actually could touch type and had the quals to prove it (student summer job). So I wasn't surprised to pass the test . I then hung around enough to tell the interviewer I was no longer interested in processing my application as they had wasted my morning.

    6. 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.

    7. 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.

    8. 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.

    9. 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.
    10. 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.
    11. 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.

    12. 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.

  26. 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: 0

      I learned about government by watching Obama.

    2. 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!

    3. Re:Hello, my name is Donald by Anonymous Coward · · Score: 0

      I look up things like "democracy" and "separation of powers".

      I see no evidence of him ever having done that.

  27. Whingers by Anonymous Coward · · Score: 0

    Hi, I get paid $95+ per hour to fling shit at walls in a top-tier company but I don't want to actually be tested about my knowledge or capabilities. I would fail the test, so the test must be wrong. Yea, that's it.

  28. 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 Anonymous Coward · · Score: 0

      Kind of important if you want your code to run fast right?

    2. Re:What's so Special about an Algorithms Class by Anonymous Coward · · Score: 0

      usually not

    3. 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'
    4. 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.

    5. Re:What's so Special about an Algorithms Class by Anonymous Coward · · Score: 0

      I was asked to help come up with an interview question recently and what I submitted was "What is your favorite sorting algorithm and why?" I made it clear to the interviewer that we didn't give two shits about the algorithm or method they gave us (I made a specific point of saying that a perfectly acceptable answer was something like "the standard library sort because why invent the wheel") but more that they had an answer of some kind. A lot of times it's not intended as a "trick" to trip up the interviewee, but more as a gauge of familiarity.

      Posting anon for obvious reasons.

  29. 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 Anonymous Coward · · Score: 0

      If you do not know it, then you cannot think about it or even search for it. If you cannot work fast and smart, then you should not be in the position.

      Everyone might be a super hero in pc high school and college but not in the real world. Sorry to bust you balls.

    2. 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.

    3. 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.

    4. 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.

    5. Re:No Notes by Anonymous Coward · · Score: 0

      Would you fly in a plane build by someone, who cannot tell sine from cosine without using his notes?

  30. They want you to show you have no life by Anonymous Coward · · Score: 0

    Having no life is a requirement for my job. The hours are bad. If you don't have time to cram for the interview you don't have time to do this job. It's really that simple. That's why they want you to cram for the interview. It not only shows dedication and ability but it shows you have no freakin life which is as important as dedication and ability. Verbal assurances of "dedication" (cramming for the interview is of course also the only way they have to measure your dedication) and actual skill are both irrelevant if you cant actually do 80 hours a week when your employer needs you to do 80 hours a week. If this isn't fair to poor people who have to work 2 jobs or take care of kids while looking for a tech job -- the industry doesn't care and they shouldn't be expected too.

  31. some things should be trivial for any expert by ooloorie · · Score: 0, Flamebait

    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

    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.

    (Personally, I wouldn't ask a candidate about bubble sort because that's so trivial as to be insulting.)

    1. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      When the fuck have you ever written bubble sort? I got an A+ in algorithms and data structures in undergrad (only A+ I got), and I haven't used bubble sort since. I certainly couldn't remember it right now, and I am an expert embedded programmer.

    2. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      On the other hand, when I perform technical interviews I like to lead with the question: In your favorite programming language, implement the mathematical expression (5x+3y)/y as a function that takes two numbers as parameters and returns a number.

      While I don't expect someone to have every algorithm memorized, I expect them to be able to implement something trivial in the language of their choice. You would be amazed at the number of so-called developers who cannot do even that.

      For more advanced questions, we have a laptop and let them use Google -- after all they will when they are at work.

      I once asked someone to capitalize the first letter of a string and they wrote a twenty six case switch statement.

    3. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      I'm sorry, but no. Experts avoid acquiring bubble sort, and you're a fool for suggesting otherwise.

    4. 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.

    5. 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.
    6. 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.

    7. 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.

    8. 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.

    9. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      > If you're an expert pianist, you ought to be able to reproduce a simple tune on the piano, by ear and blindfolded.

      Being able to reproduce a tune by ear would be analogous to be being quickly shown the bubble sort algorithm and then being asked to reproduce it from memory. Being asked to produce the bubble sort algorithm with no prior warning would be analogous to being asked to play Bach's prelude in c major with no prior warning. That's a piece every pianist has played, but may or may not remember exactly.

    10. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      I function significantly better than my peers when it comes to understanding end-to-end systems to a frightening degree. Not tooting my own horn here, but I'm constantly amazed at very smart people who simply don't know much about the basics of the systems outside the scope of their immediate responsibility, much less how those systems actually work at a lower level. I'm invaluable when it comes to system design and debugging, so much so I get called in on a bunch of meetings and it takes away from coding time.

      You'd love to have me on your team. But I would have a tough time (not impossible though) redoing these algorithms from memory, especially in a specific language as I jump between two to four languages (depending on project) every three or so months. I need to train for every interview, focus on specific skills I didn't need before and won't need after. It's easier to think of the interview as an end unto itself (with a large luck modifier) than it is to think of qualifying you for the job you're applying for.

      Despite all your prep, like my Google interview, you'll get Aspergers++ to come in, say "here's your question," stay silent through the interview, say "here's the answer" two minutes before the end, and leave. I didn't do stellar with the other interviewers, but Aspergers++ tanked my chances, guaranteed.

    11. 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.
    12. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      This would be like asking the expert skiier to size skis and mount bindings for someone else.
      It's something the skiier probably learned to do a long time ago and can do it messily (like implementing bubble sort), but the experts at the ski shop can do in a fraction of time and accurately (like calling the sort library instead)

      Now ask the expert skiier to design a world class freestyle course and you'll get better results, akin to asking a world class software engineer to architect a project. You wouldn't ask the skiier to pick the materials for the boxes and rails, like you wouldn't ask a professional developer to reimplement bubble sort.

    13. 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
    14. 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.
    15. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Why? do you use bubble sort regularly? I don't. An expert skier skis every day. An expert programmer doesn't use bubble sort regularly. Stupid.

    16. 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.
    17. 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.

    18. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      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.

      Actually no, this is completely wrong. If you are an expert programmer you should know NOT to use bubble sort (ever) and any programmer that has memorized how to quickly implement bubblesort - on a whiteboard - under pressure has wasted time on meaningless knowledge.

      Relatively few programming jobs require the development of algorithms while almost all require the use of algorithms. I would argue that testing the candidate's understanding of which algorithms to use, and when, is much more salient than how to implement a useless algorithm.

      I wouldn't hire the candidate and I would likely fire @ooloorie, but then again I am just an AC and my opinion isnt worth much.

    19. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Amm... no.

      Library sorts are written by folks with specific needs---you specify a comparison function and they just work ("not your program to worry about").

      For very specific needs, radix sort often outperforms any comparison based sort. Unless you know what a radix sort is, and understand your problem domain, you've got no chance of even realizing that your "just call sort on that vector" can be improved by an order of magnitude (yah, most times it doesn't matter---but good programmers must be aware of these things for the times when it does matter).

    20. 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?

    21. 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
    22. 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?)

    23. 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.

    24. 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.
    25. 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."
    26. 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.
    27. 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.

    28. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Better questions these days.
      1. What is recursion. How would you write a recursive function? Write a a sorting algorithm based on recursion.
      2. How is http structured, what verbs are involved. How would you write a basic http server for CRUD ops?
      3. Explain hybrid and symmetrical encryption in use today.
      4. What are your favorite approaches to web services?
      5. What is a hypervisor, what is cloud computing?
      6. What is packet filtering?

      Wouldn't hire a programmer that couldn't talk to me about these.

    29. 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.

    30. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      I think it's more like asking a career Musician who's spent the last 30 years as a pianist to play something on the trumpet. Good luck.

    31. 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.
    32. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Ok:

      std::sort(std::begin(data), std::end(data));

      Because no company, so far, has indicated a willingness to pay me to develop a largely defect free sort of any kind, so my "expert programmer" experience doesn't include it.

    33. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Actually, real experts not only use the sort function in the library, but they usually know how it is implemented and what performance they could expect from it on which type of data.

    34. 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.

    35. 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; }
    36. 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; }
    37. 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.

    38. 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
    39. 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.

    40. 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.

    41. Re: some things should be trivial for any expert by Anonymous Coward · · Score: 0

      I once asked someone to capitalize the first letter of a string and they wrote a twenty six case switch statement.

      Meanwhile, the previous interviewer said they were not allowed to use .toLower for the reverse of that question...

    42. 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).

    43. 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.

    44. 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.

    45. 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?

    46. 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.

    47. 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?

    48. 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.

    49. 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.

    50. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      When the fuck have you ever written bubble sort? I got an A+ in algorithms and data structures in undergrad (only A+ I got), and I haven't used bubble sort since.

      And that's why people ask this question: it's an algorithm and a specification you understand, but you haven't memorized it. It's a test of your ability to produce correct code.

      I certainly couldn't remember it right now, and I am an expert embedded programmer.

      Or perhaps not.

    51. 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.

    52. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      ok...

      if an expert painist can reproduce a simple tune, an expert skier can ski backward and ski on one ski, an expert chess player can memorize any chess board, and an expert mathematician can do simple integrals,

      then how many expert programmers do you need to screw in a light bulb?

      The answer is none because the debugger didn't return an error.

    53. 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?

    54. 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.

    55. 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.

    56. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Computers are so quick these days that the sort usually doesn't matter unless your data is literally fantastically huge. I typically sort by using quick sort usually as its fast enough for most things given a quad core processor with 16 gb of ram and an ssd hard drive. I have even in some companies implemented sorts by using a tree struct then copying the unsorted data to it, then copying it all back in order. I think in this day and age computers are so fast and data is usually not too significantly large to be a bit sloppy but also get it done faster without having a meeting on the best way to sort x database today. That is all yesterdays problems, today we discuss how to code our AI or new siri bot better.

    57. Re:some things should be trivial for any expert by enjar · · Score: 1

      No ... agreeing with you

    58. 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?"

    59. 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.
    60. 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.
    61. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      If your example the pianist is the end-user. The tuner is a low skill IT person and the person who designs and builds the piano is the programmer.

      If you can't implement something simple like bubble sort you need to get the fuck out. Just because you read PHP for Dipshits and can write a third-rate website that gets owned by script kiddies 50 times a day doesn't make you a programmer.

      You are not a programmer, you are an API monkey that treats everything as a black box.

      A programmer is well educated and understands how algorithms operate on various data structures.

      GTFO

    62. 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.

    63. Re:some things should be trivial for any expert by Anonymous Coward · · Score: 0

      Last time I wrote a bubble sort was in 2005 in college. If asked, I could write it out within 5 minutes and would be as optimized as possible.

      It is trivial, if you can't do it: GTFO

  32. 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; }
  33. Re:I don't know if this is worth answering. Should by Anonymous Coward · · Score: 0

    But can he determine if it is useful or not in polynomial time? That is the question we should be asking.

  34. 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.

  35. 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.

  36. 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.

  37. 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.

  38. 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.

  39. NP complete by Anonymous Coward · · Score: 0

    I don't know what np complete means. Should I?

    Hell yes.

  40. 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.

  41. Re:Discrimination by GuB-42 · · Score: 2

    How does a programming interview discriminate against "people of color"?

    Red-black trees I suppose.

  42. If not that then what? by Anonymous Coward · · Score: 0

    I interviewed with amazon recently, 4-hour interview, 4 different sessions, and I got an SDEIII job offer, woohoo. They do expect you to know well-known algorithms, including algorithms for sorting and searching, along with knowing which data structure to use when, and how those structures work internally.

    But I can say without any hesitation, that the interview was more about how your thought process and approach to problem-solving works as opposed to just jotting down a depth first search that you've memorised.

    Those things, along with things like object-oriented design and Big-O notation, as examples, are the very basics of computer science. If you can't answer questions about those and use that knowledge in solving the problem they present you in the interview, then what should they ask you?

    1. 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.

  43. 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?

  44. Sorry by Anonymous Coward · · Score: 0

    "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?"

    Ok, the first one is kinda meh. Remembering all of those sorts is a pain, and proving that you know a bucket sort from a quicksort isn't very useful.

    But those other two are inexcusable.

    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.

    And NP-completeness? I don't expect a programmer to to be able to do a proof of NP-completeness, but if they are to touch ANY programming AT ALL, they should AT LEAST have an inkling of what NP completeness means for their line of business, along with other fundamental concepts (big O, etc).

    Otherwise they aren't "programmers", they are code monkeys. They type a lot of code that some times works, be it by sheer luck (just don't pass any strings with more than 128 characters, and make sure every string starts with an '*') or by brute forcing the problem. That is, they write a lot, but produce very little. And then you end up with another openssl, a clusterfuck of epic proportions.

    1. 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.

    2. 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.

  45. 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.

  46. 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 Anonymous Coward · · Score: 0

      In any event, rule # 1 is paramount. Get the job Done. Everything else is value-add, at best.

      Well, thank you for clarifying why we have so much shitty code in the world today. Yes, I'm sure it can be fixed later. Just keep piling the shit higher, eventually you won't smell the problems at the bottom of the pile, right?

      Oh, and fuck putting security as any kind of priority, 'cause you know that's just value-add, at best.

    3. Re:Missing the point (as usual) by Anonymous Coward · · Score: 0

      I haven't used bubble sort since University. If you are using bubble sort you are using the wrong algorithm. Seriously, what is the fascination with bubble sort?

    4. Re:Missing the point (as usual) by Anonymous Coward · · Score: 0

      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.....

    5. 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.

    6. 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.

    7. Re:Missing the point (as usual) by Anonymous Coward · · Score: 0

      Some of us have higher standards. Get the job done today and spend four weeks dealing with support issues, or get the job done tomorrow with a thought out design and spend 3 days on support issues. Rewrite the entire project when adding a feature or drop-in a plugin on an actor-based system? When you need to change a profile, do you have to hunt for all the options scattered throughout the code or can you modify one file or one config file? Did you save a keystroke by typing [=][=] instead of [Shift+][=] at the cost of a major data leak and bad PR 8 months down the line?

      Clean and efficient code lets you get two jobs done while the other guys are still trying to support their first 'fast' job.

    8. Re:Missing the point (as usual) by Anonymous Coward · · Score: 0

      Agreed. In one interview the question was to write an implementation of atol(). The interviewer was concerned that the implementation used multiply instead of several bit shifts to adjust the significant digits. His argument was that it was important to keep optimization in mind. In a desktop environment or with a good compiler this wouldn't be an issue but he chose to harp on that anyway.

    9. Re:Missing the point (as usual) by Anonymous Coward · · Score: 0

      clean and efficient is a bonus? efficient means you understand the problem and clean means you understand maintainability.

      do you work for mcdonalds burger and code hut?

  47. 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 Anonymous Coward · · Score: 0

      When Python is among the 10+ languages you know, you might need a reminder which method of getting the length is used in Python.

      Well, then you may be an experienced programmer, but you're not an expert Python programmer. An expert Python programmer means that you know the Python libraries, runtime, and object model inside and out.

    8. 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__()

    9. 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.

  48. Please retitle this article. by tlambert · · Score: 0

    Please retitle this article.

    The correct title should be:

    Someone who 'graduated' from a 'coding academy' butt-hurt about not being able to land a job at Google; and something something: Diversity.

    1. 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

    2. 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!

    3. 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!

    4. 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. ;)

  49. 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
  50. 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 Anonymous Coward · · Score: 0

      You've just probably run into the guy who thinks the GCC/Clang team didn't hook up the __builtin_popcount() to the actual asm instruction and therefore thinks all builtins are bad

    2. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      You probably found the guy who thinks the clang/gcc devs never hooked up __builtin_popcount() to map to the instruction itself. Therefore all builtins must be bad(tm)

    3. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      x86 does support POPCNT now

      But yeah, that lookup table could be implemented in a single cycle in hardware. That's what hardware is good for - doing bit manipulations.

    4. 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-...

    5. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      x64 has had popcount since Nehalem.

    6. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      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)

      How many years ago? x86 has had it since the introduction of SSE4.

      https://en.wikipedia.org/wiki/SSE4#POPCNT_and_LZCNT
      http://www.felixcloutier.com/x86/POPCNT.html

      (and yes, it is faster than other methods, see http://danluu.com/assembly-intrinsics/)

    7. Re:Interviews need training, too by jbolden · · Score: 0

      That sounds like a bad interviewer and a good question. Google is going to be imperfect in their staffing that doesn't mean it is a bad place to work.

    8. 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."
    9. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      The POPCNT instruction is in SSE4.2 supported by both Intel and AMD since about 2012 on.

    10. 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.
    11. 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.
    12. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      wow you realized all that from one question from one guy? talk about jumping to conclusions

    13. 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.

    14. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      "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)."

      FYI x86 (Intel extensions) has popcnt and fshufb.

    15. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      Thank you for this. I've been in that kind of interview, and it's nice to hear that I'm not the only one.

    16. 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.

    17. 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.

    18. 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.

    19. 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.

    20. 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.

    21. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      popcnt instruction might or might not be faster, see

    22. 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

    23. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      You should not program outside your mono alphabetic world; there is no such thing as "extended ASCII". You have demonstrated that you do not understand the modern world of encodings, and you would make dramatic mistakes once you left your safe little world of Romance languages.

    24. 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.

    25. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      Looks like you optimized away your link!

    26. 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.

    27. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      > 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.

    28. 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.

    29. 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
    30. Re:Interviews need training, too by Anonymous Coward · · Score: 0

      When did you decide that including your first name in the body of your post was relevant to the discussion? Most people here are smart enough not to make that mistake, you'd know that if you'd read some posts.

    31. 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.
    32. 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.

  51. 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 Anonymous Coward · · Score: 0

      Oh, it could be worse. You could be knowingly testing for the wrong things...

      I work QA, and our new director is shaking things up. A number of people let go (several who needed it, mind) and we've got lots of positions to fill. Only problem is, the primary criteria they're interviewing for is coding skills, including the whiteboard tests in TFA. He's pushing "Automation! Automation! Automation!" uber alles. Nothing wrong with automation, but none of the people hired so far could test their way out of a paper bag. The can code, and they want to rewrite the test automation framework, but so far all their design gripes have just been indications they haven't got a clue how our product works.

      Dunno. Stupid Management Tricks seem to define the industry anymore.

    2. 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.
    3. 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.

    4. 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.
    5. 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.

  52. You don't know what CS is. by Anonymous Coward · · Score: 0

    ...or can't figure out how to get a length of a string in Python, you shouldn't be hired.

    Computer Science is learning how computers work, algorithms, operating systems basics, networking, theory, data structures, and other topics.

    Depending on your program, you may implement those ideas and concepts in the language of choice. When I went to school, it was Turbo Pascal. When you got a job, many employers at the time had a training program where part of it was learning the language they used. COBOL in the case of the big Hartford Insurers.

    Anyway, a language is just syntax. If you need the "right tool" for the "right job" to implement an algorithm, then you are a code monkey.

    Now, what you would be looking for is a code monkey. Someone who knows a language and it's libraries and gets the job done. There are plenty of folks out there like that - they are a dime a dozen and if anyone has a hard time finding qualified people like that, there is something horribly wrong with one's recruitment process.

  53. 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".
  54. This is something that can work and work well by Anonymous Coward · · Score: 0

    I have seen this used very effectively. When used effectively, it is not to see if someone can remember some algorithm that they may have heard about or even seen used sometime. It is about them writing a simple function to do something like convert an asciii string to an integer.
    It is an exercise in seeing how they think. Do they check for errors? Do they handle error conditions? If so, how? What assumptions do they make? Is the code reasonably efficient? Is it readable? Do they do test cases for themselves? Do they ask questions of the interviewer to make certain of the requirement?
    It is not about remembering some algorithm, it is very useful in seeing the thought process and mindset they use in answering a question and providing an answer. Showing attention to detail. Something they will have to do everyday on the job.

    How anyone thinks it has anything to do with gender, race or age is beyond me. But then again I am on the higher end of average programmer age these days.

  55. So? by Anonymous Coward · · Score: 0

    Soooo. We are supposed to hire now based on age,sex or race. Not on who can do the job best? Sorry but if the 22 year old out of college who may be white can do the job better than the 55 year old black guy in a quarter of the time saving the company money and doing a better job, I'm going to hire him. We need to quit trying to base things on stats like age or sex.The person that does the job the best and the fastest is best for the company. While it makes us feel good and want to sing kumbaya by the campfire to hire the older person of a certain race, it doesnt do anything for the company's bottom line.

  56. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    No the fucking job is writing code to accomplish business processes in a efficient manner. The best code is not the goal of the business units you work for, maybe your dev team mates have that as a goal, but it is really a dream.

  57. 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
  58. 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.

    1. Re:Boeing by Anonymous Coward · · Score: 0

      That's why I go to interviews half drunk and stoned.

    2. Re:Boeing by Anonymous Coward · · Score: 0

      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.

  59. 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.

  60. Re:diversity?? by Anonymous Coward · · Score: 0

    Relax, kiddo. There can be more than one problem with something. Recognizing Problem #2 isn't a denial that Problem #1 exists.

  61. Tests the Interviewer not the Interviewed by Anonymous Coward · · Score: 0

    Classic example of box checking by the Interviewer and not understanding the content or context of the problem. Actual supervisors who use this method fail to see they are blindsiding themselves through recent personal experience and not actually looking at the skills of the person at the blackboard. Its holding a mirror up to the person conducting the interview... as in the Interviewer "fails" if they actually ask another person to step up to the blackboard/whiteboard.. they are not paying attention to the person in front of them.. they are navel gazing.

  62. 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.

  63. 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."
  64. Re:CS Fundamentals are important by Anonymous Coward · · Score: 0

    The issue really is can you figure out how to do these things when necessary, not that you have all this knowledge stuffed into your brain. I want to know how you deal with stuff you don't now off the top of your head, because nobody knows everything.

    BTW... Who on earth implements a bubble sort these days anyway? What a waste of programming time. Most of these "common" algorithms already exist in libraries where the implementation is better than most programmers can produce and take a LOT less time to use.

  65. 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.

  66. My Sin.Sloth,I dont try todo these silly things! by mr_java66 · · Score: 0

    I don't know proper variable naming rules. (_, Ucase, camel?). I have a tool for that. I don't remember how to spell the names of properties, fields, or functions I use. I have a tool for that. I don't know how to write elegant linq queries. ... I have a tool for that! I don't code without checking example code for how to do things. (I don't have the time to learn off of my mistakes, I'll use yours). I have tools for that. Blogs, Stack, Vendor Documentation. Stop! Hassling me with your insipid questions that only serve as a demonstration of memorization of facts that are easily accessed in real time.

  67. 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.

    1. Re:When All Else Fails, Honesty Works by Anonymous Coward · · Score: 0

      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.

      Most of the time it's about social fit, and a base level of skills. No one knows everything, but if you can work with others and have the aptitude to learn that's good enough.

  68. 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.

  69. "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 Anonymous Coward · · Score: 0

      Yes, they will be drawn and quartered... and then gassed, probably. That is what you get when you put the evilest man in history that is literary Hitler incarnate in charge of the shittiest racist white male country in the world!

    2. 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'
    3. 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.
  70. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    Unless you're submitting papers to journals and obtaining patents daily, then no, you're not coming up with new algorithms. You're mashing together existing algorithms to do stuff.

  71. 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.

  72. "Hi I James. I can't inherit or overload shit.... by Anonymous Coward · · Score: 0

    But I have no problem keeping track of a matrix of quadruple pointers."
    "I'm sorry, we were looking for someone who can actually code and don't speak mumbo jumbo."

  73. 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.

  74. 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.

  75. 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.

  76. 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.

  77. 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.

  78. 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".

  79. 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.

  80. 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.

  81. 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.

    4. Re:Best way: Code review their github repo by Anonymous Coward · · Score: 0

      The difference is, the artist's portfolio is built up with their paid work.

      Only partially. When you don't have a professional design job, it starts off with school and hobby work, same as programming.

  82. Huh? by Anonymous Coward · · Score: 0

    I'm a 42 year old who never finished college and none of those three questions were anything I needed to look up and I have a total of 3 hours Python coding experience.

    None of those questioned needed preparation or cramming. I might google the answers in a work environment to double check my memory or facts, but bubble sort is something you learned by playing with Microsoft QBasic demos back in the late 80's as well as insert, quick sort and others. NP complete is something you learned by watching piles of TV shows that are obsessed with P=NP such as N3mbers and then performing a brief Google and reading a while. Finding the length of a string in Python shows up in pretty much even code sample for Python ever written.

    Honestly, while I wouldn't bother asking such silly questions as they are all kinda lame, I might instead present an algorithm and ask for an optimized version with possible Big-O justification as a bonus, all of those questions were perfectly reasonable.

    I would expect pretty much anyone worth their salt to consider those relatively trivial questions to identify whether the person has any education or experience.

  83. 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

  84. 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.

  85. 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.

    1. Re:We do, by Anonymous Coward · · Score: 0

      Sounds like an entry level position to me. You know, the ones everyone outsourced to India years ago and now can't find anyone in the US with experience in an entry level position?

  86. Bullshit by Anonymous Coward · · Score: 0

    "in other words, it doesn't help diversify the field with women, older people, and people of color."

    I'm sorry. This is just a lie. How does being a recent college grade make it detrimental to women? Women make up something like 66% of all college graduates. I would say that favors them SIGNIFICANTLY.

  87. I has a sad by Anonymous Coward · · Score: 0

    I can write bubble sort, binary recursive sort and more and I couldn't get an entry level job so I work as a stock boy.

  88. Re:SubjectsSuck - RACIST by Anonymous Coward · · Score: 0

    That is just Racist, why can't we have any Blackboard questions?

  89. 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.

  90. One simple rule for good interviewers by Anonymous Coward · · Score: 0

    As a retired programmer / manager, I've seen the best and worst of the interview process. After taking an internal class, I learned one simple rule for good interviewing: only ask job-relevant questions. This may sound obvious, but it really isn't to a lot of people. Not only does it help you avoid legal trouble, it helps you hire great people by focusing on what matters most and treating the interview seriously. For example: if you need somebody to work on your custom sorting logic, then great, ask about how to implement a sorting algorithm. Otherwise, don't ask about sorting and find a more job-relevant question.

    From the perspective of "only job-relevant questions", then a lot of the tech industry's favorite questions/puzzles/riddles are laughably bad because the only purpose of the question is to make the interviewer look smart (and therefore are a complete waste of time for all involved).

    As an interviewee, you can and should keep the "only job-relevant questions" test in your head too. It lets you quickly assess during the interview process how well or how poorly the hiring company is run.

  91. Contract or do something else by Anonymous Coward · · Score: 0

    If you're coding as an employee, you're going to be subject to this and worse in the future. Salaries do not scale commensurate with ability or effort, and once you've got the grey hair, you're done. I'm 40, and am happy I exited; I easily have more than a million lines of code in production still, much of it decades old at this point.

    If you don't want to be abused, if you're a good programmer, you're probablquite intelligent.

    #1: Do something else. If you're smart, other things pay very well. Once you have substantial savings, your options increase.

    #2: Start a company. If you're as good as you think you are, bang out the code and see what happens. Computers are cheap and AWS makes scaling trivial.

    #3: Contract. If you can deliver on time, this is the best option if you're actually good and don't want to run a business.

    Otherwise, enjoy the outcomes of the golden rule.

    I opted for #1 - formerly an EE, moved to finance, can move back to engineering if I want after a decade of working in finance, having accumulated enough fuck you money to not worry.

    Stop being a victim.

  92. 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.
  93. Re: I understand this is tough on older programmer by Anonymous Coward · · Score: 0

    So you are saying america is not a democracy but a stupid totalitarian slavery. Was there a point of immigrating from a better social model into more inferior?

  94. 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.

  95. 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...

    1. Re:cs trivia and affinity bias by Anonymous Coward · · Score: 0

      > The only job interview-style that I actually like is "Get out your laptop, here, can you write code to do this?"

      What I would watch for is if they start designing before jumping in and coding. A piece of paper and pen/pencil is the best place to start on any programming problem.

  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. 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.

  99. 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?
    1. Re:No. Wrong. by Anonymous Coward · · Score: 0

      I have taken one CS class in my entire life (Intro to Programming in C at a community college when I was 16) and this one time I am sitting with a team that includes several people with masters in CS and we are going through a list of hundreds of stories in the backlog to remove all the dead wood and it comes up that we are looking for something in the list which happens to be ordered and the person driving is going through the list one by one. I suggest that we jump to the middle of the list and work are way back from there (binary search) but nobody in the room gets it. I try to explain how to do it again and nobody gets it, so I leave to go get a Diet Coke. When I get back the Director of Engineering has explained it to everyone and they have found what they are looking for. That is what education gets you: a bunch of people who can recite what an algorithm is but lack the ability to apply it to novel real world circumstances.

    2. Re:No. Wrong. by Anonymous Coward · · Score: 0

      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.

      This is a real problem. I've seen lots of very good programmers fail at significantly mundane tasks in an interview context.

      That in itself will tell you a lot about their personality, and how they cope with stress, which is quite par for the course in this industry, so you better test them in that regard. But it will throw away all your technical proficiency tests in unpredictable ways, and I have never found a way to ease the stress from the situation.

      More time doesn't work, flexible time doesn't work, letting them know you don't expect perfection in an exam context doesn't work. It's probably the time constraint plus the stakes involved that builds up all that paralizing stress. Dumbing down the questions isn't acceptable, so I just learned to look at exam results with a stress-colored lens.

      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.

      Pattern matching problems isn't bad, unless it's compulsive (as people apply sometimes programming patterns compulsively, naming all their classes XObserver, XVisitor, XProxy and XFactory). But explosive choices are. If you give a problem that has too many solutions, your test may backfire for many reasons:

      They may choose a solution that doesn't provide the insight you wanted about the individual (ie: a trivial solution you didn't think of). No, the fact that they found the trivial solution is no help. In real situations that solution might not exist, you wanted to see how they solved X, but since you had a loophole in your test's wording, now you have a solution to Y, which tells you nothing.

      They may freeze or waste tons of time at the preponderance of choice. Time is limited, and some people, especially under stressful conditions, may freeze trying to come up with an answer. When I do technical testing, I leave a question with a very open-ended wording for a problem with an exact and optimal, but little known, solution. I know most won't know the exact solution, let alone be able to code it from memory, so I want to see how they solve it otherwise. Even though the wording of the test is specifically chosen to allow trivial solutions (ie: bail-outs), a lot of people won't even answer it at all. Not even with a trivial solution they could write in 2 minutes. Because they froze.

  100. Re: Honesty = Value by Anonymous Coward · · Score: 0

    I have interviewed a lot of people. I have a range of questions from the trivial to the impossible. This lets me see where the person is on the range. It also lets me see if they will try to BS their way through or if they will give an honest "IDK". Being honest makes up for a lot. I will take an honest hard worker over a genius BS artist EVERY DAY. I also do not have hours to spend talking to each candidate or a spare machine to leave them for hours with a problem.

  101. Yes, exactly. by Anonymous Coward · · Score: 0

    There is a large group of people who want a programmer's salary, but don't actually have a programmer's skills. They can do basic scripting and can google for answers, and as such they can easily glue together third-party components and solve the simple problems. They think that is what it means to be a programmer. So when you hit them with something that requires actual programming, they get all miffed and insist that such skills are not needed in order to be successful.

    I don't hire people like that.

    1. 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.

  102. A feature, not a bug by Anonymous Coward · · Score: 0

    Does anyone here see a pattern? "I contributed to ... I built ... I have a github which is used by ... and now I can't get hired ..." I've noticed in my career that the minute I put actual products, that people could see, on my CV, the level of hostility I got in these types of interviews ratcheted up.

  103. racist Karla by frovingslosh · · Score: 0

    Karla Monterroso, VP of programs for Code2040, an organization for black and Latino techies,

    In other words, a racist organization. What outrage there would be if I ran a similar organization for white programmers. But this is apparently not only OK, I expect that I'll also get modded down for even mentioning it.

    --
    I'm an American. I love this country and the freedoms that we used to have.
    1. 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.

    2. 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.
    3. Re:racist Karla by Anonymous Coward · · Score: 0

      You weren't proven right. You were modded down for baseless accusations, not for "mentioning" something.

      You knew that's why you would be modded down, and you knew that this downmodding would be entirely deserved. This is why you invented an alternate excuse for your inevitable downmod. You were hoping that it would prevent you from getting your (richly deserved) downmod at all, and if it failed to accomplish that then you could fall back on the convenient strawman motivation you set up. This, in your mind, allowed you to avoid taking responsibility for what you know to be a very stupid and ignorant opinion. That is important to you, because you violently hate the very concept of personal responsibility (even as you reluctantly pay lip service to it).

      You will now prove ME right.

  104. 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.

  105. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    Lol. You've been drinking the coolaid. You know what you sound like? Someone who got thier first job.

    The reality. Business doesn't trust you. If you even know what trust means. You are a risk to get the job done or not done. You're just a lower risk then somebody else. If soon as you don't meet the deadlines you are fired. They're not your friends that trust you and love you and hold your hand they do not give a fuck about you

      As far is you see the best code and then you say good code because you realize that the passcode is a matter of efficiency. If you know anything reaching 90% efficiency is pretty easy but getting that last 10% is so expense or impossible. So good code yes that's a requirement the best code means that you were the best programmer and most of us have a never met a best programmer.

      All that other crap about being the fastest running time and most efficient and using the least amount of memory. It's clear you don't understand the technical requirements from the business requirements.

      You just sound like I'm a naÃve little child that got their first job and think they're going to work there forever and everybody loves you.

      When you find your next job, you'll barely or not at all talk to your former workers and they will not give a shit about you because they have to be concerned about their own lives. You must be one of those millennial's or something because you're not living in reality.

      Don't worry, you'll get your dose of reality soon enough. Whether you decide to move onto another company and see how much the last company really cares which is not at all it is a company it is a legal entity it is not a person that cares about you.

  106. 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.

  107. Google interview nightmare by Anonymous Coward · · Score: 0

    I work at a research center in one of the big companies in the bay area and many people in my company have left for google research. They usually spend a year learning the same tired old coding questions because that is what google asks regardless of what position you are applying for! My colleagues are not going for engineering positions and they are not engineers! We all have PhDs from top schools in the country and our job is research and coming up with new algorithms, yet we have to do bubble sort in the interview. It blows my mind. What the hek is wrong with google!

    1. 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.

  108. Re:CS Fundamentals are important by jbolden · · Score: 0

    AWS is just a bucket for storing my website assets over the Internet.

    No it vastly more than just a big hard drive. There are 3 main computational theory about parallelism and AWS introduces specific complexities. This is not an easy topic.

    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. ;)

    The point isn't if you can read the book. The point is how much you already know. I can read French with a dictionary I can read English without one.

  109. 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.

  110. Had a similar experience recently by PontifexMaximus · · Score: 0

    Even though I've semi-retired from IT, I browse crap I get from recruiters in my email just to see if there is something that might strike me as interesting enough to look into. I've 'retired' twice and my ADHD keeps me from sitting on my ass more than a few weeks before I get bored doing nothing.

    Anyway, I saw a Systems Analyst/Engineer position that seemed interesting, did the phone interview and they were impressed enough to want an in-person interview and mentioned to the recruiter that I'm so qualified 'they were afraid I'd get bored with the job'. So far so good. Now, a suit was required for the interview, which is unusual in my experience (I live in the South and it's usually too damn hot for a suit, even a light one.), but I need a new suit anyway.

    I go to the interview and trampled all over the technical and 'how would you handle blah blah blah' personality/communication skills questions. Then I'm asked to look at the white board behind me. On it was drawn was looked like a game of hangman, and a large square with a + in the middle to break into 4 smaller squares. They asked me that if the lines of the box were matchsticks, how could I move 2 and double the larger square.

    The 'hangman' drawing (which wasn't hangman, it was a very badly drawn scale) was 'if you have 8 widgets and one is heavier than others, how would you find the heavy widget in the fewest number of weighings'. Both of these are straight off MENSA tests (at least variants thereof). I've never done anything more than just suck at the matchsticks puzzle, and even though I got the 'heavy widget' one 'correct' I wasn't offered the position. Why? Because they didn't like how I thought my way through the puzzles. (The matchsticks one, I flat out told them that I'm no good at those type puzzles as I don't think the right way to come up with an answer for it.

    In neither case were those questions relevant to the position, or my ability to do the job. Being able to answer MENSA puzzle questions doesn't make you qualified to do the job, just that you can answer puzzles from the back of the evening paper. Needless to say, I let the recruiter AND the company doing the hiring a very long (but polite) ass-chewing email after I was not offered the position. Not that I would have taken the job had I been offered it. I wasn't angry about not being offered the job, since I am independently wealthy and work just because I want to and feel I can still contribute to the right organization, most times at lower compensation than others would. I was pissed because shit questions like that are MEANINGLESS as to whether you can do the job.

    Of course, you can thank Google for this type of bullshit nonsense. Their interview questions are notorious for silly shit like this and others think its cool to do the same. Actually, they just look ridiculous and will almost always turn down the best candidate because of puzzle questions like that.

    I shake my head every time I see crap like that going on.

    --
    Pax Vobiscum
  111. 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.

  112. 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".

  113. 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

  114. 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 Anonymous Coward · · Score: 0

      "What you didn't seem to realize is that in the real world cash balances on individual accounts go negative sometimes."
      Maybe because the backend is implemented by shitty programmers than you.

    2. 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 /.
    3. 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.

    4. Re:Hello, my name is... by Anonymous Coward · · Score: 0

      My Bank account goes negative for a day before it is swapped into my line of credit account.
      It is a common scenario. I'm pretty sure there is a flag somewhere to allow or not negative balance on an account and some check if the line of credit is full. It isn't hardcoded for sure..

    5. Re:Hello, my name is... by Anonymous Coward · · Score: 0

      I had multiple accounts at that firm with a net value of well over a million dollars and cash balances

      Can I be your friend? I swear it isn't about the money.

    6. Re:Hello, my name is... by Anonymous Coward · · Score: 0

      Asking open-ended and under-specified questions is important, because I can learn a lot from the assumptions you make and the questions you ask.

      For example, I wouldn't mention locking -- you'd either ask, make an assumption, or forget it entirely. If you don't mention it, I'll ask what happens if there's another simultaneous transaction with that account. If you come up with a naive locking algorithm, I'll ask about deadlock.

      In this case, the fact that your function is supposed to return the amount transferred is the indicator that it might not be the amount requested. You're then supposed to ask why, or intuit that it's to prevent negative balances.

      That said, it sounds like the interviewer was an idiot, though, for not presenting the requirement properly.

      dom

    7. 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 /.
  115. 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
  116. 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.

  117. Re:Discrimination by gatkinso · · Score: 1

    Red-Black trees.

    --
    I am very small, utmostly microscopic.
  118. Ummm... by Anonymous Coward · · Score: 0

    Would you hire a surgeon based on how he talks about the surgery, or actually performs it?

    1. 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?

  119. 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.

  120. 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.

  121. 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.

  122. 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.

  123. 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?

  124. Let's Face It by Anonymous Coward · · Score: 0

    These interviewing techniques are the product of (Multiple Answers Accepted!):

    1). Lazy interviewers;
    2). Fad-driven evaluation processes;
    3). Major, and usually invalid assumptions about "what programmers/analysts/whatever MUST know, or else they just aren't real, authentic, competent programmers/analysts/whatever";

    My major programming skills are:

    1). Being able to imagine, then design and build, the end state solution;
    2). Workflow analysis;
    3). Making users comfortable that I know what I'm doing and they can trust me;
    4). Simplifying as much as possible, and then knowing to stop right there. There are both necessary and unnecessary complications and you need to know the difference;
    5). What kind of problem am I working on, what kind of organization is this, and what are their expectations in relation to these attributes? A bank or hospital is very conservative. A rock band or MIT Media Lab might be more adventurous;

  125. 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.

  126. Same experience here... by Anonymous Coward · · Score: 0

    I've been developing software for 20 years. I had an interview for a contracting position at Microsoft and had a white board interview. The interviewer kept asking me to implement a queue with a few variations. I didn't do too well. All throughout the interview, I thought the whiteboard exercise was so pointless. Most of these algorithms are just a search away. No one needs to memorize this anymore. It's a complete waste of brainpower. Additionally, the interviewer was so focused on the whiteboard he didn't ask me about the many other skills I brought to the table. Not one question about unit testing, agile, dependency injection, accessing databases, etc. He didn't even ask about my previous experience very much. After the interview, I decided that Microsoft was not a place for me. As Danny Glover said in Lethal Weapon: I'm too old for this shit.

  127. scriptkiddies at best by Anonymous Coward · · Score: 0

    Hello, my name is T and have been coding for 20 years, I can write code without internet in notepad. This used to be the norm.

    These days a lot of people who are very skilled in copy pasting other people's work, they are very good in trying 20 solutions from stackoverflow without really understanding what they do. Although these people deliver, they don't deliver quality. These people aren't coders, they are scriptkiddies, no matter what their professional title says.

  128. 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)
  129. 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.

  130. 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
  131. Big O? by Anonymous Coward · · Score: 0

    Typically, I would implement a quick sort down to groups of 16 recursively, then perform a merge sort on the small groups.

  132. Bias much by Anonymous Coward · · Score: 0

    > 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.

    So you're telling me that women and people of color cannot be young CS grads from top-tier schools who have had time to cram?

  133. 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.
  134. 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.

  135. 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.
  136. 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.

  137. 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.

  138. I agree! by Anonymous Coward · · Score: 0

    I agree with them (posted quotes). I still look up examples / syntax online when I encounter issues as well, even after 10 years in the field.

    It's not the syntax or language that matters, it's the mindset. I know what I want to do, I know or believe that the language can do it, I just don't have the syntax or structure I need to achieve it. From schooling, I understand the algorithms and their general implementation, which ones will accomplish what I need them to do and I can pseudo code on paper down to a level low enough where I can search online and identify the code / functions / etc. I need in order to accomplish the development task.

  139. Multi level questions by Anonymous Coward · · Score: 0

    The correct answer is not always the literal answer to the question.

  140. I'm not a dummy by Anonymous Coward · · Score: 0

    Absolutely. Been job hunting the last 8 months in the Bay Area and every company/recruiter haphazardly sends out "coding tests or homework". It basically turns you into a metric and less of a person. These tech questions and coding exercises can take hours. One recent homework assignment was to code a whole project using Youtube's API from start to finish. I spent 4 days on it. Then after 3 weeks I get a standard rejection letter. I tried to get any feedback on my work, but nothing. I'm done taking these tests.

  141. 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.
  142. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    I doubt you have come up with a new algo in the last year, much less every day. Maybe you THINK you invented lots, but your ignorance doesn't make it so.

  143. 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?

  144. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    That is creimer the troll's best post to date. He thinks that if a language shares 45% of root word origins, that you can speak it. Apparently we all speak Spanish, French, Italian, and Latin as well as English.
    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!
    Dur dur dur

  145. Re: CS Fundamentals are important by Anonymous Coward · · Score: 0

    The business side is interested in outcomes not how you got there or if it took a few more cpu cycles to get there. This is not the time of servers with only MBs of memory. Well their trust in you I am guessing is because they have no basis on how to make such a choice. They are just hoping you choose wisely. I have meet a few developers that really knew everything, but they seem to lack the ability to get things done by deadline. After all, deadline is all that matters to the business side of things.

        They way I see my work is, I am usually like most of the programmers on here, hired to do client server applications. That require me to either do back end server and/or frontend client work. The skills needed that I think are most often missing even from CS majors are client/server issues. The ability to setup a server, debug a network issue, and understand tcp communications.

  146. 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.

  147. Re:I understand this is tough on older programmers by Anonymous Coward · · Score: 0

    Makeup of college CS programs.

  148. A *much* better method by Anonymous Coward · · Score: 0

    I point interested parties at my (online) resume, which in turn has links to the applications and documentation I've written (many, at this point.) I tell them both directly and at the very top of the resume that I only do remote, and that I will not be visiting their campus, but they can visit me any time.

    I haven't had a break between contracts in four years.

    You don't have to tolerate the kind of bullshit HR drones are cobbling up if you have real chops. What you need to do is get some real high quality work done, make it public, and that puts you in the position of setting terms. Google won't hire you? Congratulations, you don't have to live in an area where the cost of living will chew your income down to McFryCook level.

  149. Re:CS Fundamentals are important by Anonymous Coward · · Score: 0

    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.
    Even knowing about P and NP can help you avoid trying to find solutions that may not exist. Or at least help you know when to solve a restricted subset of a problem instead of looking for a general solution.

    The other day, my ClickOnce deployments stopped working. Sadly, neither bubble sort nor the length of a string in Python fixed the problem.

  150. 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.

  151. 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?

  152. 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.

  153. why can't they... by Anonymous Coward · · Score: 0

    A company I was interested in sent me a pdf with instructions to solve a problem if I could or do as much as possible in the course of a couple hours and email it back.

    I think that's a legitimate method of testing for coding ability.

    If it's perfect and complete then something is fishy assuming the problem is hard enough it can't be completed in the time allowed.

    I got some parts of it done and I did get a call for an interview, unfortunately they took a long time to call me and I had already accepted someone else's offer.

    (on a side note.. the thing that really makes me angry is I'd done exactly what they had wanted about 5 years before but didn't recognize the problem until too late and my old code was pre-college and a mess)

  154. Build me a house ... by Anonymous Coward · · Score: 0

    So how many of you supposed interviewers own a new house? When you bought it did you have the builder create a Lego House in front of you using no references before committing? (Apologies to Ed Sheran) Or how about having that builder make a birds nest with an unrealistic time constraint? did you ask him to play some perverted version of the kids game 'Battleship' where you lob random questions at him to _guess_ what his/her skillset covers? Or did you just ask "What have you built and how did you do it -- i.e. show me?" "Can you connect me with your satisfied customers?"

    I'm currently on the receiving end of this kind of crap as a senior developer. It's completely and utterly inexcusable as a selection process, and obviously based on flawed assumptions (doing atypical things in atypical settings doesn't tell you anything useful about day-to-day behavior.) But does seem to fulfill certain individual's need to feel self-important: "Ohhh, I'm so smart that you couldn't answer my puzzle and so are unworthy of working with me".

        You gotta be kidding ...

    1. 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.
  155. 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

  156. 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.

  157. IQ testing by Anonymous Coward · · Score: 0

    Is actually very reliable.
    It's been attacked as racist because it reveals differences between races.
    But they tested it in many different ways and it's totally accurate.
    It would say much more about your ability than theoretical questions.
    Another way government reducing freedom is bad.

  158. 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.
  159. 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.
    1. Re:Let's all race to the BOTTOM! by Anonymous Coward · · Score: 0

      Perhaps the economic model aligned from the employees' side would produce rather different results?

      you would have to undoliterally centuries of "Fractional reserve banking".

      they make the money. out of nothing. you chase it.

      "Cash" is gone. just debt. encumbered. no specie or actual money, only "credit".

      basically, that is not just a "job site" "job search" "employee/employer" thing, although those are all related......the bankers and "aeconomists" decided that "Employees" would have no say whatsoever.

      basically the "Economic model" is they create things out of nothing, run up a huge debt on "your" credit (and the "Credit of the nation") and then stick you with the bill.

      so......i do not disagree with you............that is kind of like trying to implement cloud computing on MS-DOS ......the underlying lower level layers were never designed for that, let alone even "networking"

      that would need a whole new economy, and THEN, after doing that, we could see if "employees" are worth having any say whatsoever or not.

      from what I can see, "finance" and "Economics" are essentially fancy words that mean " i am going to counterfeit money, and stick you with the bill. i have no coins, i did not work for anything, but i legally have the right to do this."

      usury runs all.

    2. Re:Let's all race to the BOTTOM! by Anonymous Coward · · Score: 0

      you're walking through the dessert and you find a tortoise on his back.

      what's a tortoise?

      its a turtle Leon, do you know what a turtle is?

    3. Re:Let's all race to the BOTTOM! by Anonymous Coward · · Score: 0

      "Dessert? What's that?"

  160. hello anonymous bank employee here by Anonymous Coward · · Score: 0

    negative account balances are a fundamental concept of banking going bank hundreds of years.

    let us all be glad this company does not exist anymore, god knows what they would have done to their customers.

  161. 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.
  162. All Recruiters Are Idiots by Anonymous Coward · · Score: 0

    I like telling recruiters to go fuck themselves with a dictionary and sharpie pen.

  163. It depends entirely on the level of competition by Anonymous Coward · · Score: 0

    If you get 10 applications for a position, it's enough test if they can do their actual job well. But what if you get 1000s, which I presume is the case with the likes of Google? If the position is something like "Python developer", how else do you filter applicants?

  164. 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
  165. Complexity Theory by Anonymous Coward · · Score: 0

    I'd probably laugh if I was in a job interview for something that was about engineering / applications and not about fundamental research and the question about NP completeness came up. Asymptotic complexity are useful to know, but if you want to apply your knowledge in the form of efficient code that does a particular job well and doesn't solve the most general case of the problem at hand, you will have to know a lot more than, say, a definition of the classes PTIME or NPTIME. There are NP-complete problems that can be solved very efficiently in practice because the really bad instances never come up or rarely enough that it doesn't matter (here, it's more about precisely knowing the kind of problem you're solving and also knowing your inputs and their encoding in detail), SAT and its many applications being a prime example. And there are PTIME algorithms that perform worse in practice than their NPTIME counterparts (take linear programming or primality checking as examples). If you want to know the performence of an algorithm it is not sufficient to consider its asympotic time or space complexity and in some cases (probably the ones that are interesting in day to day operations) it can be actively misleading. Often, these types of theoretical considerations can only provide the same level of information as the gut feeling of any reasonably competent programmer can (e.g. multiple nested loops that on average all iterate over at least half the input can be bad). There is one exception that might be useful in practice as well as theory: If you have an algorithm that claims to solve problem X with complexity C and you know that the lower-bound for problem X is actually C' > C, then you can automatically declare the algorithm faulty without further inspection. Probably not the kind of application of theory that most people readily come up with. I think it would be much better to ask the candidate a question like "How do you make sure that your code is optimal for your problem?" And then see if they begin to methodically address the question by first defining what they think optimal means and when a certain kind of optimality matters or not, what theortical and practical tools they know and use, when and why they use them, give some concrete experiences with their own or someone else's code, etc. That it, unless you are looking for a theoretician and have a certain task in mind that requires deep knowledge about complexity theory (not just the stuff that's taught in some intro level algorithms course).

  166. Interviewers != Interviewees by Anonymous Coward · · Score: 0

    Recruiters and HR people generally don't know the details of what it means to be a software developer. I think the issue lies there. To a certain extend, as a software developer, you are interviewed by computer illiterates that cherry pick stuff on the internet, expecting you to know it all because they surely don't understand.

  167. LOL "an organization for black and Latino techies" by Anonymous Coward · · Score: 0

    So can we have "an organization for white techies"?

    Oh, I see... "black and latino techies" aren't as intelligent as white ones, so they are failing to get jobs... this is just another shakedown.

    Nobody is stopping you from setting up your own software companies. Nobody is stopping you from moving AWAY from white people, who apparently are ruining your lives. Why aren't you moving?

    Oh, and you get to KEEP your own races' countries, while white people have to GIVE UP ours, to the rest of the world...

    Why are you here? Why don't you want to live around your own kind? If you don't want to live around your own kind, why should white people?

    Why are you 'good' when you try to move AWAY from your own race and into white people's countries, but white people are 'bad' when we merely suggest that we want to get away from your race too?

  168. This is a shakedown... by Anonymous Coward · · Score: 0

    From the article: "“Whiteboard” interviews are widely hated. They also discriminate against people who are already underrepresented in the field."

    The magic word "discriminate", which means "choose".

    So "don't discriminate" means, quite literally, "don't CHOOSE".

    So don't CHOOSE who you have to live around, or work with, or go to school with, or that would be "discrimination".

    But freedom of NON-association is the most fundamental of ALL human rights - the right to NOT live around people whom you don't want to.

    But apparently, their right to FORCE themselves into your living space is more important than your right to simply have nothing to do with them. And if you want nothing to do with them, they call you "racist", because they can't stand the thought of you simply GETTING AWAY FROM THEM, and having no effect on their lives ever again.

    This entire article is about the usual suspects - non-white parasites who can't compete in a white country, moaning and whining so they can be given jobs that they are UNQUALIFIED to do, thus bringing the host (white) country even further down.

    Or would anybody care to tell me why I'm wrong? Because very soon YOU'LL be affected directly by the plague of non-whites who are destroying your country from within.

  169. These people are idiots... by Anonymous Coward · · Score: 0

    Because back in the 1980s, when the ZX80, ZX81, Spectrum and C64 came out, teenage boys (WHITE boys, by the way), in their bedrooms, were teaching themselves MACHINE CODE, and writing games in MACHINE CODE. This article is plain evidence that we are surrounded by idiots who can't even fucking code without looking everything up.

    "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.”

    Get that? "learning the cultural norms necessary" Which translates into: "Waaahhh!! Racist!!! White people too intelligent for me to get a job!!! But waaahhh! I don't want to live around my own race, in my own country, because I know how useless they are!!!"

    Anybody got a better explanation?

  170. It's a Bolshevik magazine... by Anonymous Coward · · Score: 0

    The next article is about Twitter, it says: "And if you’re creating a small army of accounts to harass, say, a female game developer, it saves time not to have to pick out photos"

    Yes, that would be it... female developers are being "harrassed", and we must silence EVERYBODY who isn't 'politically correct', or who uses "hate" speech (LOL), which means "anything the Jew doesn't want you to hear"...

    The denial of free speech is the first act of tyranny.

    What happens when white people become minorities IN OUR OWN COUNTRIES? Will these whining non-white parasites give up their demands for 'special treatment' and free jobs that they aren't qualified for? Hell no, they will ramp up their endless demands. They hate us because we're white.

  171. HaHaHa...I've been rejecting interviews for years. by Anonymous Coward · · Score: 0

    My first interview with this testing mentality was with MonkeyWards (for those of you youngsters that was what Montgomery Wards was called!). I was 19 at the time, graduated from the U of Chicago and was asked to write a program. I got up and told them to go to hell and walked out. That was 1969.

    Because of my experience in starting 6 companies and building complex real-time systems I was asked to interview with Google, Amazon and Facebook. I walked away from them all because they have stupid interview requirements like mentioned in the article. I walk away because they don't really understand but are more concerned about process! As some one that has been on both sides of the table I found it wasn't being able to write programs that mattered but how well you could solve problems that was important.

    As an first year college student I had to take a class on how to use the library. I asked 'Why?' and was told you were being thought how to find the answer. That is how I think about programming and programmers. Does one think clearly enough to understand how to find a solution to the problem at hand. That is the important point.

    Personally I think this "testing" mentality was put together by HR people because they don't get it. One good programmer can recognize another good one.

  172. 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.

  173. 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.

  174. 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.

  175. what we do by Anonymous Coward · · Score: 0

    We (I, well I am returning to HQ so this project isn't mine anymore) follow

    http://tiny.cc/trivagoU

    pre-assessment, no interview, job given if you finish the pre-assessment.

    probation period is more like a long interview, where we go through all parts of expectation (for both employee and team mates).

    We have a very high acceptance rate and scalable growth!

  176. Thanks but no thanks by Anonymous Coward · · Score: 0

    That sounds worse honestly. When I go to an interview I'd like to discuss my subject matter expertise with another subject matter expert. I can talk about projects I've done and problems I've solved. If by the end of that discussion you aren't convinced, simply pass. I don't want to spend hours working on some contrived test.

  177. 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.

  178. Grow the fuck up by Anonymous Coward · · Score: 0

    I'm not going to solve your fucking riddles. If you want riddles, go watch an old episode of batman.

  179. Re:HaHaHa...I've been rejecting interviews for yea by Anonymous Coward · · Score: 0

    My little brother graduated from U of C, his first job back home was overnight operator. They were transitioning from a PDP-11 to a S/32, and everyone else involved explained the prob,ems converting charsets and how it would require rekeying data. He wrote the routines to move the data in his slack time and showed his supervisor in the morning. Promptly fired.

    He got a call mid-morning from the business owner, asking if he would have lunch with him. Yeah, the boss apologized that his IT director was so hasty and offered a job as entry level programmer on the S/32 (which at UofC he studied RPG) which my sharp little brother accepted, despite having to work with a prick of a supervisor. He had that job in 3 years.

    This is the little brother who was overnight operator at UofC when the flood came. On the phone to his boss giving minute by minute updates on the water under the machine room floor, they survived without cutting power. He's had fun in the industry and still works with RPG despite IBM's insistence that it's obsolete. He hires programmers who have a portfolio and can explain their code, can identify the gotchas in the platforms he uses, and can explain their high-level solution to a hypothetical, usually a payroll problem, because, as he puts it, the three great lies are 'the check's in the mail', 'you're the most beautiful...', and ' I can write a payroll system for less than 30 employees that is better and cheaper than anything you can buy'.

    My good friend who interviewed for a web services job at a very well known company here in Phoenix where he was sat in front of a workstation and asked to create a basic business web page in an hour. He apologized that the page lacked a bunch of stuff he couldn't quite figure out having just their internal dev tools which he was learning on the fly. Hired on the spot. Most applicants never got anything to load in a browser, but the point was just to see if they could rationally organize their work. He worked around a Javascript flaw their tools induced. Winning.

    And I am once again glad I am not a working programmer.

  180. 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.

  181. 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
  182. 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
  183. 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.

  184. Whiteboard interviews by Anonymous Coward · · Score: 0

    I conducted a lot of whiteboard interviews, but I never cared about arcane topics or classic tests like string reversal, Fibonacci, etc.
    In my eyes, it is interesting to see the thought process of the person and I'd set up a complex problem and ask them how they would solve it; at the end of the session, we'd end up with a bunch of graffiti and pseudo-code.
    You can see that some people are very creative and come up with smart ideas, at the opposite some just give up right away and tell you they don't know and no matter how much you actually try to solve the problem step by step with them, you can see they don't have it.
    Since this is highly interactive, as we chat together possible approaches, etc, you get to know the person as well, laugh with them, etc which is very important since I always tell them they're going to spend more time with me than with their girlfriend.

    I've been programming since 1984, worked on quite a few top game franchises and I'm still googling things every day and I'm using stack overflow all the time.

  185. 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.

  186. 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.
  187. 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).

  188. Re:CS Fundamentals are important by Anonymous Coward · · Score: 0

    Sounds like you wouldn't make it anyway. There are enough egotistical programmers in the market. ;)

  189. 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?"

  190. Re:CS Fundamentals are important by Anonymous Coward · · Score: 0

    if you're waiting to see what fails at execution you need a better editor / IDE. It's not 1980 anymore, use something better than a basic text editor.
    Oh, wait ... Real Programmers don't use IDEs, right? well you keep being a "real" programmer, I'll keep being productive (and I won't have to google the name of object methods or the order of arguments, or even the various overloads)

  191. Technical questions are bad now? by Anonymous Coward · · Score: 0

    What the fuck has gone wrong here?

    If a programmer doesn't understand recursion, pointers, architecture, data structures, algorithms etc they are not a programmer, they are an API monkey at best.

     

  192. 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.

  193. Re:I understand this is tough on older programmers by Anonymous Coward · · Score: 0

    duh, women and ppl of color can't go to school and therfor won't have graduate level knowledge of anything except cooking and cotton.

    not to be insensitive, just agreeing that that part of the summary was absurd

  194. whinging BS... by Anonymous Coward · · Score: 0

    "that relies heavily on technical questions." - like a computer science graduate should know. Look at the last sentence referencing black and latino techs (you notice it does not state programmers). There area many "universities" and "colleges" and they simply are not the same quality, so firms want to weed out the useful from the certificate holders. A Harvard CS grad will of written these algorithms by hand at some point, programmed them individually and had to use their first year implementations as the library for their third year project. The San Diego junior cheap college graduate will have heard the word in a lecture and told where to press a button in the program. Which one can handle it when something goes wrong?

    1. Re:whinging BS... by Anonymous Coward · · Score: 0

      Hey! Some of the best instructors I ever had were at San Diego junior cheap college.

      Unfortunately, also some of the worst were there too!

  195. Why does everything have be a social experiement? by Anonymous Coward · · Score: 0

    Best programmer wins, period.

    Whether that is a white guy, or some woman of color is immaterial.

    If you can't problem solve, you are not a programmer.

  196. 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... ---
  197. 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.
  198. 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.
    1. Re:what if they know about asm.js? :-) by Anonymous Coward · · Score: 0

      Despite the cute name, asm.js is not really assembly language. It's an intermediate language targeted by the emscripten compiler.

  199. 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.
  200. 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.
  201. 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.