News for hackers. Stuff that matters.
Re:How to Pass a Programming Interview by quanticle on Tuesday March 08, 2016 @02:23PM (#11247773)

    Being a good programmer has a surprisingly small role in passing programming 
    interviews.
And that just says it all, doesn't it? I agree that interviews should test candidates on certain basic skills, including (time/space) complexity analysis. But do you really learn anything by asking the candidate if they can recite the time complexity of a moving window average algorithm (as I was asked to do by an interviewer yesterday)? What does the candidate's ability to code a palindrome checker that can handle punctuation and spaces tell you about their ability to deliver robust, maintainable code?

I don't have the answer, but I just don't see how the questions typically asked in programming interviews give you a good picture of the candidate's actual programming ability. I much prefer "homework" projects, even if they involve me working "for free", because I feel like they ask for actual programming skills rather than the "guess the algorithm" lottery of phone screens and whiteboard coding.

Re:How to Pass a Programming Interview by lewisl9029 on Tuesday March 08, 2016 @03:05PM (#11248122)
I personally also prefer take-home projects over being grilled on my ability to solve obscure algorithms problems under pressure.

However, this second route also comes with a number of issues. The most annoying of which in my experience is the amount of time investment each interview requires from the candidate.

At least in the traditional technical interview, interviewers and candidates tend to be roughly equally invested in the interview process in terms of time spent, so interviewers have to value candidates' time because failure to do so will end up wasting their own time as well. In take-home projects, this balance in time investment completely breaks down, and thus there's very little left to discourage interviewers from issuing ridiculously time-consuming projects.

I've done a few of these in the past, mostly to get some practical experience with a new framework & ecosystem I'm not too familiar with yet, but I think in the future I'll likely just politely decline any projects that looks unreasonably time-consuming, or at least try asking for certain adjustments to the spec first.

Re:How to Pass a Programming Interview by SonicSoul on Wednesday March 09, 2016 @07:54AM (#11252655)
I've gotten a take home test that took all Saturday. I finally finished it happy with myself and with my work and emailed it in. The response was "thanks, are you ready for the next exercise?" i was like.. um.. I really need to get on with my weekend. This was deferred to the big boss who said "It's ok just do it whenever you have time next" .. ook so that was my next Saturday. Worst part is that after turning that in, and I am fairly certain both were done really well, I never heard a word back from them. I was frustrated as hell but you know, that's all part of the job. Sometimes you waste a little time while you look for work. Look at other industries such as acting, actors could easily spend a day going to auditions waiting in lines preparing for characters and never getting a callback. My dad is in construction and for him to make an appraisal he has to study the house and waste a ton of time doing crazy calculus mapping out exactly how much area it takes and how much siding it will need considering the weird shapes around the chimney and how many hours it will take to cover it. You want to give yourself some padding but then he most likely won't get the job because the owner will go against other "free" appraisals and take the lowest bidder. If he goes too low he's risking working extra days for free or earning very little on the job. So doing all that free work is pretty much part of his job. As I hiring manager I try to waste as little time as possible, but at the same time I feel like a lot of programmers are spoiled and quick to complain about their time and pretty much expect to just get hired after 2 hr interview. This is someone you're hiring potentially for years (and any mistakes are hard to fix later) so yes, time will be wasted on both sides to try to ensure a good fit.
Re:How to Pass a Programming Interview by smalltimeboss on Wednesday March 09, 2016 @08:48AM (#11252891)
As somebody who regularly employs developers, and being a developer myself, may I suggest you put your Saturdays' effort into an open source github repo or something similar? Sure, this takes time too, but afterwards you can just point your prospective employer to your superbly styled and documented code on github. Both parties win: you don't have to spend time on stupid exercises anymore, they can get a very decent impression of your coding skills.

[Edit: corrected typo]

Re:How to Pass a Programming Interview by SonicSoul on Wednesday March 09, 2016 @03:48PM (#11255638)
I was thinking about posting some of the solutions to past problems on github. The problem is that new employer has no way of knowing it was me alone that provided the solution and how long it took, so I couldn't blame them for not just accepting my public repo as proof of my ability.

For example I had one interview where I struggled to complete a WPF test project simply because it was coded in a way i've never done before using controls I've never used and the test was estimated to take 10 min. Meanwhile in my bag on my laptop I had a complex WPF solution i've been working on in my free time for months as a possible product to market and sell which more than showed my competence in the platform. People in my interview didn't even want to see it on pretext that they have no way of knowing it's my code.

Re:How to Pass a Programming Interview by antoniuschan99 on Wednesday March 09, 2016 @10:42AM (#11253554)
It's just that with the programming tasks that you bring home, the hiring manager isn't wasting the that time with you. With programming tasks that you do during the interview, they are at least wasting the time with you.
Re:How to Pass a Programming Interview by pascalo on Wednesday March 09, 2016 @04:30PM (#11255873)
Or, like when I interviewed once at a very large broadcasting org, they put you in a meeting room with a laptop (windows 7 which I never used before, bad keyboard, bad editor, no internet or reference), give you some half arsed questions and piss off for 30 minutes without you being able to ask what they actually want. Then 10 minutes later someone else comes in and asks you what the hell you're doing in that meeting room, you have no way to contact your interview partner, no idea where he went, they hassle you for about 10 minutes about it, and when your interviewer comes back you haven't been able to even get into the task, let alone write some code ...

Waste of time also, especially if you factor in a 2 hour commute each way.

Re:How to Pass a Programming Interview by tracker1 on Wednesday March 09, 2016 @02:16PM (#11255072)
+this ... it's exactly why, when I do "favors" for people, my requirement is that they're in the chair next to me... even if they aren't doing anything and are bored as sin... so they understand the time/effort that it takes.

It's generally inappropriate for someone to ask you to do more than a day of work for a take-home hiring exercise.

Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @12:37PM (#11260567)
Simply because it is quite difficult to explain the concept in writing.

They might have a different point of view as to the quality of your work. Or they may have taken other factors in consideration (your portfolio, communication style, etc).

But not contacting you with any kind of a status afterward is definitely shabby, on their part.

And asking you to do a second assignment without taking a moment to evaluate your first (and apparently without bothering to tell you in advance that not one, but two or more "quick" assignments would need to be done), all the more so.

Re:How to Pass a Programming Interview by sudo-i on Wednesday March 09, 2016 @10:55AM (#11253651)
Add them to your portfolio and showcase them. Not a waste.
Re:How to Pass a Programming Interview by cloudjacker on Wednesday March 09, 2016 @01:31PM (#11254725)
You can also recycle components of coding exercises. For instance in a project with a front end visual component, it is no longer just the bare bones functionality, as you've implemented fonts, networking layers and data models, and co-opted some design patterns from one company's UX person (but changed the assets) during that interview.
Re:How to Pass a Programming Interview by rhinoceraptor on Tuesday March 08, 2016 @04:17PM (#11248734)
> there's very little left to discourage interviewers from issuing ridiculously time-consuming projects

There's also no disincentive for interviewees to spend an unreasonable amount of time on the project. So the test is biased against employed people and/or people with kids.

This can be easily countered though. Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

Re:How to Pass a Programming Interview by kafkaesq on Tuesday March 08, 2016 @04:41PM (#11248926)
Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

Except that these places very frequently tend to either (1) misstate the problem in some major or minor way, or (2) wildly underestimate the time required to produce a professional quality, bug-free, bulletproof-tested solution. Which can be easily countered by having one of their own team members sit down and take the test first. But of course, none of these places ever do that.

(Well, not "none." I'm being hyperbolic. I just mean in that in general, they probably estimate the round-trip time on these programming guizzes the way they do micro-projects on their own jobs -- as in, "Oh, I can do that in an hour" -- but in real life, it often takes 2x-3x longer).

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @03:59AM (#11251775)
Yes, I got one recently:

Pull down this data from Instagram API and create a tagcloud. Should only take a couple of hours.

Except working out how to register and authenticate Instagram's API took me over two hours, than after faffing about with it I realized I only had some sandboxed version that returned metadata and not the actual data I was looking for.

The task would probably only take a couple of hours if the whole environment was set up, but the set up was the problem.

Re:How to Pass a Programming Interview by ajeet_dhaliwal on Wednesday March 09, 2016 @05:21AM (#11252057)
I have never used the Instagram API and had to look up what a tagcloud is just now. I can immediately say this will take more than 'a couple of hours', whenever I work with a new API it takes time to setup the environment, digest how it works and research the appropriate APIs I need to use. I am not surprised by your experience. Actually makes me angry that someone thinks a reasonable person could do that in two hours with the background I have described. Yes two hours is the environment is setup to make calls to the API and perhaps you have some familiarity with it - so I can see why the person who asked the question would think 'I could do it in two hours, on my Macbook where the environment is already set up and where I know exactly what API is required and what the data format looks like in the response'.
Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @10:01AM (#11253315)
This seems to happen on around 50% of the take home tests that I have been given. Funnily enough I only take the time to do 50% of them.

Hackerrank is even worse. They have strange ways of wording the questions. I have to Google around to work out how to use their input and output (I work with databases all day long, not reading and writing to STDIN/ STDOUT). No step through debugger (which makes a lot of sense for the algorithmic type questions they ask). Cut and paste only works in some browsers.

No one expects you to set up a database and connect to it in that sort of timeframe - yet I would probably manage it better as I do it regularly.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:28PM (#11254702)
This seems to happen on around 50% of the take home tests that I have been given.

That was my rough estimate for the prevalence of this craziness, to.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:32PM (#11254742)
My personal favorite, was when, after I had apparently survived a 4-hour interviewing + whiteboarding stint, and thought I'd be able to head out onto the street (as it was already quite late in the day)....

...a math PhD told me "hey, I got one more ya..." and proceeded to give me a mis-articulated mathematical search problem which -- going by his own statement of the problem, ended up having as its "solution" -- an empty class.

Re:How to Pass a Programming Interview by autarch on Tuesday March 08, 2016 @07:56PM (#11250070)
> Which can be easily countered by having one of their own team members sit down and take the test first. But of course, none of these places ever do that.

At my employer we send out homework exercises, and I personally did the backend developer exercise before we sent it to anyone. I did this specifically to test how long it took. (For the frontend exercise, we didn't have anyone skilled enough on staff to do it, which is why we were hiring a frontend dev).

Re:How to Pass a Programming Interview by dpark on Tuesday March 08, 2016 @11:31PM (#11250946)
Did you do the test blind? i.e. Did someone give you the problem without you knowing/hearing it before? If you wrote the problem, or even heard it before you had to solve it, you had a big leg up on someone who's never heard it.
Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @12:19AM (#11251081)
Fair points. FWIW, we've asked people how long the problem took and they all said it took a few hours, so I think it's the right scope. It really is a fairly easy piece of work.
Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:54PM (#11254909)
Actually, I think this whole fear of candidates pervasively lying about time-to-completion is something of a red herring.

(1) It may seem counterintuitive to some, but my own general policy is, when it comes to little stuff ("how long did it take you to do X"), you just have to trust people, to a certain extent. Sure, some people may blatantly or grossly lie. But most likely these people will reveal their slipperiness in other ways, very very quickly.

Meanwhile -- and I think people are quick to overlook this -- playing the "policeman" role in every transaction with the candidate brings substantial negatives. By definition, it's adversarial. And generally there are (nearly always) non-adversarial ways to get the same information about the candidate ("Are they basically honest?") you're looking for. They take creativity (and an ability to read emotions and pick up on other signals), but they're there.

(2) Much bigger -- really, there's no need to sweat about the time to completion at all. Just look at the quality of the code.

It all just comes down to the fact that everything is interconnected: Good people generally turn out good stuff in reasonable amounts of time. When you're looking at good code, there is, I find, an intrinsic aura of ease and comfort which shines through it -- such that you just can't imagine it took them very long to produce it. Everything just flows -- just like it does when you talk to them.

Mediocre (and dishonest) people, on the other hand... never produce good stuff in virtually any amount of time. Sure, they can take the whole weekend to polish off their code... but it will still look bad, or at best, "Meh".

There might be some false positives (or outright frauds) by this approach), but I suspect very few. And those that do slip through, are easy to spot by other means (such as asking them to talk about their solution, for even a couple of seconds).

Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @04:21PM (#11255807)
I think the concern is that the homework task could be too large and because people have an incentive to appear competent, they might lie about that to make themselves look bad. That means that we're giving too hard a task but we'll never find out.

As to how likely it is that people will lie, given that we've hired several people who did this homework and they've proven to be as competent as we believed, there's at least some anecdotal evidence that some people have not lied.

Re:How to Pass a Programming Interview by inanutshellus on Wednesday March 09, 2016 @10:29AM (#11253492)
You can't ask a candidate how long it took, they have no incentive for truth here. Either they say it took all night and you think poorly of them, or it really did take a few hours.

You have to ask someone with no skin in the game.

Re:How to Pass a Programming Interview by dpark on Wednesday March 09, 2016 @12:32PM (#11254293)
As others have pointed out, your interviewees have little to no incentive to give you an accurate time estimate.

Beyond that, I think "a few hours" is a bit too much to ask for, especially since you are presumably following up with an in person interview centered around the assignment. That's a big time commitment, and the commitment on the assignment especially is very asymmetric.

I'm not a big fan of assignments for this reason. They are just so asymmetric. I've been given interview homework that was supposed to take "about an hour" and it was more like 4 to 5 in reality. It felt like an unreasonable time request. I did the assignment, and did in fact tell them it took considerably longer than their resonates. I was invited for an on-site after all that, but declined for other reasons.

Re:How to Pass a Programming Interview by popmystack on Wednesday March 09, 2016 @10:35AM (#11253520)
You are begging for people to lie to you.
Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @05:45PM (#11256222)
If that's the way you think people are... then those are the kind of people you'll attract.

It's how the universe works, basically.

Re:How to Pass a Programming Interview by bogomipz on Wednesday March 09, 2016 @12:33AM (#11251133)
It took a few hours and "it really was an easy piece of work?" How considerate of you. Who was it an an easy piece of work for, someone with unlimited free time. An unemployed person. What a joke. Any problem is easy when you yourself contrive it. Here's an idea, how about you pay someone for the 3 hours or work you are giving them. Say a lot about you.
Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @01:20AM (#11251264)
I would prefer that we pay people to do this, but unfortunately that's not my call. That said, no one seems to complain so bitterly about the all day interviews that places like Google do (and insist you fly out for in person).

Isn't asking people to fly out for 6-8 hours of interviews (which effectively takes 3 days minimum out of your life) a much greater burden than spending 2-3 hours on some coding which you can do at a time of your choosing? (Followed by 2-3 hours of video chat interviews spread across multiple days, no flying required).

Also, just to clarify, the homework problem is _not_ something related to our business. The solutions are of no business value to the company.

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @04:06AM (#11251806)
Are you paying as much as Google? Is your job going to give the same prestige as having "worked for Google" on your CV?

I am not saying that you are wrong, but applying to Google does sound like it will have many benefits above your average company.

Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @04:25PM (#11255827)
Google is hardly the only company to do in-person all day interviews. I've had several in my career, none of them with Google. IIRC, they were with Shopzilla and Grant Street Group, and Livetext (not exactly Google-famous companies). I wasn't thrilled about flying out for 6 hours of interviews, but at the time I thought it was reasonable for them to ask for this. I'm not sure I'd do it again unless I was incredibly excited about the position in question, but I'm older and more jaded now.

As to how much we pay ... Our pay is very good, and all but one of the positions for which we've had the homework requirement have been telecommuting as well. It's actually a pretty desirable place to work if you like good pay, telecommuting, working at a small company, a low pressure environment (we've been profitable for many years), and various other perks (training budget, flexible hours, blah blah blah).

Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @02:04PM (#11261317)
And the above poster would seem to have an eminently sensible interviewing style, himself:

http://blog.urth.org/2016/03/08/tech-interviewer-theory/

Re:How to Pass a Programming Interview by tracker1 on Wednesday March 09, 2016 @02:31PM (#11255174)
The last time I was in the hiring side of the process... I had what I considered a pretty easy assignment... it was for a full-stack JS developer (node). The assignment was to read in an XML file (preferably via an input stream) and write it out to a JSON file of a predetermined object structure.

There were no other limitations put.. "bonus points for stream based input" "bonus points for test cases" ... only a couple people actually delivered a "working" solution (one that ran and outputted anything), none of which had the correct output (one was close enough), and none had any tests.

It was truly something that should take a "skilled" developer a couple hours. And not something that should be entirely alien. To say the least, I was really disappointed with the results. I did the project myself in about 2 hrs, with test cases, 100% code coverage. (before I even gave it out, it was as trivial a challenge as I could come up with for a real world problem).

Why should I have to pay the couple dozen people for their 3 hours, when none delivered a correct solution?

In the end, the person with the closest to correct solution, was the one with the least experience... that person got the job.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:35PM (#11254774)
Well you're one of the brave and true, then.

And I had someone on my previous team make a point of bringing up this fine point at a meeting, also ;)

Re:How to Pass a Programming Interview by pkaye on Wednesday March 09, 2016 @12:30AM (#11251115)
I actually do what you suggest. I pick problems I've never did before and try to solve it in less than 1/3rd the time I allot for the interviewee to account for interview time pressure. Even then there are probably biases because I pick problems that I can solve so I periodically review the candidate success rates on problems and change them out if they are too simple or too complex.
Re:How to Pass a Programming Interview by lewisl9029 on Tuesday March 08, 2016 @04:31PM (#11248849)
> Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

This honestly sounds like a great idea to me, except maybe with a slightly longer time allowance to remove some of the pressure. Definitely hoping more interviewers will start to adopt this method for take-home interviews.

But this method also hinges on the interviewer's ability to design projects that can be completed in a reasonable amount of time and still give good insight into a candidate's skills. I think it's safe to say this will be a difficult task for most interviewers.

Re:How to Pass a Programming Interview by nsxwolf on Tuesday March 08, 2016 @05:15PM (#11249228)
A day or two should honestly be fine. Have them talk about the solution after turning it in. It's a lot easier and more interesting to talk about code you just wrote than it is to make someone whiteboard something on the spot.

It doesn't need to be a time trial. If you're impressed with the code and hire the candidate, worst case is you get someone who takes a little more time but writes great code.

Re:How to Pass a Programming Interview by lewisl9029 on Tuesday March 08, 2016 @07:40PM (#11250010)
The time requirement doesn't just set a limit for the candidate though, it also serves as a limit to consider for the interviewer when speccing out the project.

Having a time limit of a day or two is fine if the actual project should reasonably take a couple of hours, but if the project actually takes more than a whole work day to complete, then that's a different story (in my humble opinion, anything that would take more than a couple of hours is an unreasonable demand on the candidates time unless you offer some kind of compensation).

Re:How to Pass a Programming Interview by draw_down on Tuesday March 08, 2016 @04:33PM (#11248866)
> There's also no disincentive for interviewees to spend an unreasonable amount of time on the project.

I don't see any problem with this, as an interviewer. The take-home is supposed to be an example of the work the candidate does, they should take however long to do it. I want to see the best-case scenario of the code they write (given the problem at hand, etc, of course). The entire idea is removing the time pressure.

Re:How to Pass a Programming Interview by rhinoceraptor on Tuesday March 08, 2016 @04:47PM (#11248977)
Right, but workaday programers with two kids and a full time job won't be willing or won't be able to spend, say more than two hours on something like this.
Re:How to Pass a Programming Interview by timv on Wednesday March 09, 2016 @02:06AM (#11251381)
> I don't see any problem with this, as an interviewer.

The issue for the interviewer is missing out on good potential hires because your selection process is biased against people with little free time.

I have a family and I'm doing part-time study in the evenings. If I'm looking for a new job, then I can probably find time for 1 exercise a fortnight. If one company tells me they have a "4 hour assignment" and the other a "1 hour", then I'm far more likely to do the 1 hour exercise and pass on the long one.

And if I do the 1 hour test, I'd expect to be assessed accordingly. If you're comparing one person's output after 1 hour with another who actually spent 5 hours on it, then you will be more inclined to hire the person that spent longer on the project, even though that's not really going to corelate with on the job performance.

Re:How to Pass a Programming Interview by rockshassa on Wednesday March 09, 2016 @12:58AM (#11251208)
Take-home projects can be a double edged sword... for a given project that is estimated to take 4 hrs, i will typically spend about 16 hours on it. working straight through the night, chugging coffee and/or beer. I work by banging out an ugly PoC, and then I refine it drastically over several iterations. My final versions are award-worthy, but the early ones are really bad and sloppy. I am the type that is great at simplifying, but bad at coming up with the initial statement.
Re:How to Pass a Programming Interview by sgift on Wednesday March 09, 2016 @01:35AM (#11251322)
Ignoring the time investment for a moment: That is not a bad approach in my experience. Iterating allows you to learn from the versions before and guide your improvements. As long as the first version is at least good enough to do the job AND good enough to be improved upon (often the harder part) it is absolutely fine.
Re:How to Pass a Programming Interview by tarpherder on Wednesday March 09, 2016 @03:06AM (#11251592)
The only problem with her/his approach is that she/he said it took 16 hours where they would've liked to only spend 4 and be done (as 4 hours was what was expected). 4 hours may be unrealistic for what was delivered in the end but it would make me feel at least slightly awkward putting 16 hours into a 4 hour assignment as it indicates my performance is not where it should be (I'm off x4 which would be a lot to me) or my priorities are not at all aligned with the company's regarding this assignment.

Don't get me wrong everyone takes whatever time she/he needs and comparing results and time spent is hard unless you only look at "does it work" which in many cases does not do the work justice (and may not even be the most important metric in the long run). For that reason take-home assignments may be better than the almost comical interview often described on HN but they have their flaws that make them far from ideal as well!

I think it is hard to judge the true performance of a potential employee in a company team without actually having the candidate be part of the team (and even then it'll take a good amount time before someone settles in). Some folk may not be the best programmers but are good catalysts in a team, smoothing relations between other colleagues and increasing team output overall. Or they might have a habit of happily taking up tasks that are wildly unpopular and thereby, even if they are not the most performant, solving problems colleagues or perhaps a faster candidate wouldn't have solved. I could go on about this but I think it's clear what I mean.

There is a lot more to a role as programmer than just programming and that is often completely neglected in these discussions.

Re:How to Pass a Programming Interview by mattlutze on Wednesday March 09, 2016 @08:37AM (#11252848)
> [...] without actually having the candidate be part of the team (and even then it'll take a good amount time before someone settles in)

Some companies are trying to answer this issue by signing a potential employee on for a 2 week "trial," where they hopefully get paid. The trouble there is figuring out how long a trial really needs to be to get a good idea of how that person works and fits in with the team -- too little and it's still a crap shoot, too much and you've already essentially hired them.

In the meantime, test trial runs only work for developers currently out of a job; how do I skip my current gig for 2 weeks to go sit at a potential new employer's office? I certainly have no safety in quitting to go do it since I may get dropped after that two weeks, and there's only so much vacation you can take before you run out of personal time.

Re:How to Pass a Programming Interview by Bluestrike2 on Tuesday March 08, 2016 @04:26PM (#11248807)
I remember hearing about take-home projects that amounted to free work for a company rather than a test of the programmer's skills, which is pretty smarmy. Anything can be abused or misused. Anyhow, the disincentive would probably be a decrease in applications if they start piling on the homework. Unless you're offering some amazing compensation and perks, or you're hiring for a project that could make a person's career, fewer people will bother when there are so many other companies out there hiring.

Maybe the least worst answer is to have people who have been through the hoops before, and can empathize with candidates, running the hiring processes.

Re:How to Pass a Programming Interview by hyperpape on Tuesday March 08, 2016 @05:22PM (#11249271)
Empathy isn't enough, in my opinion. There are problems with most every alternative:

1. Show-off quizzes are of limited relevance.

2. Take home work is a huge stressor for people with limited amounts of outside time.

3. Open-source contributions are a) too restrictive as a filter, and b) favor people with lots of time, just like #2.

4. Personal connections narrow the pool that you have, promote nepotism, and tend to exclude people who are already at a disadvantage.

5. Looking at previous jobs screws over lots of junior people and just means you're depending on the last interviewer's shitty decision.

Re:How to Pass a Programming Interview by __jal on Tuesday March 08, 2016 @06:45PM (#11249735)
Yes. I refused to do an exercise because it was quite obviously from someone's todo list, was a rather large endeavor, and didn't demand any particular skill aside from trying to find a sensible way to handle the many special cases (think parsing linux network configuration files and a pile of environment-specific behaviors).

I read it and told them (a) I had no interest in a firm that behaved that way, and (b) I had no interest in a firm that didn't understand what configuration management tools were for.

Re:How to Pass a Programming Interview by rhizome on Tuesday March 08, 2016 @05:18PM (#11249246)
Empathy might be in short supply and the interviewer might simply try to replicate the gauntlet that they themselves had to run in order to get hired.
Re:How to Pass a Programming Interview by throwaway12324 on Tuesday March 08, 2016 @04:06PM (#11248625)
Ironically enough, Triplebyte's own take-home projects were some of the worst I've ever had, and did a horrible job of respecting the candidate's time.

When I went through the their take-home interview process, there were 4 projects to choose from, with only one having anything remotely to do with my area of expertise (it was a multiplayer game, and I was looking to work as a web front-end/full-stack developer). For all their talk on how you should select a practical project to talk about because it correlates better to ability to get real work done, it's really rather ironic just how utterly academic and unpractical the projects they offered were (that game was literally the most practical one on the list).

Now they tell you that you're expected to spend at most 3 hours on the project. This might be true for some of the other more academic projects on the list if you had any expertise in the respective areas, but it definitely wasn't true for the multiplayer game project I chose, which had a non-trivial front-end and back-end component, for which testing alone could easily take 3 hours (Or maybe I'm just bad, which is definitely possible, but I've asked many of my more experienced peers how long they think a project like this might take for them, and the lowest estimate I got was a whole work day of 8 hours).

Now they also tell you that it's OK if you don't finish the project. There was also a second part to the interview where they may ask for extensions to the original project, where they'd give us more time to work on it, so I assumed if we don't finish, they'd ask for us to finish the original spec along with some extensions for the second interview. Since I had already finished the front-end component for the game, and had worked on the project for well over the expected 3 hours, I decided to call it a day and work on preparing for some of the other interviews I had that week.

However, that it was OK to not finish the project for the first interview might have been an outright lie. I won't ever know for sure because I was rejected after the first interview for not finishing the back-end as well as being unable to resolve some performance issues the interviewer pointed out (which at no point in the interview did he even ask for me to fix, so I assumed fixing that performance issue would also be a part of the extension). Incidentally, I went back to the project a while after the interview and resolved the performance issue in 5 minutes flat.

The whole process just left a rather bitter taste in my mouth, which was all the more disappointing because I went in with great hopes after reading all their great blog posts on HN. For anyone else considering Triplebyte, I'd highly recommend going with their traditional interview route until someone at Triplebyte can confirm the process has changed for the better. At least with that route, if you get rejected, you'd have wasted less time in the process.

Re:How to Pass a Programming Interview by kafkaesq on Tuesday March 08, 2016 @04:29PM (#11248826)
Now they also tell you that it's OK if you don't finish the project.

Yeah, they always say that -- but it's never really true.

They should just be honest and say "If you don't finish the project in time -- then don't feel bad, but perhaps the test isn't right for you, at this time. Feel free to apply again in 6 months."

Re:How to Pass a Programming Interview by shuzchen on Tuesday March 08, 2016 @04:45PM (#11248964)
I've actually been through two interviews where I wasn't expected to finish the project, and I ended up getting the jobs. I think the difference there was it wasn't set up that it's "OK if you don't finish", but that "these requirements were crafted such that we don't expect you to finish".
Re:How to Pass a Programming Interview by wldlyinaccurate on Tuesday March 08, 2016 @05:03PM (#11249129)
"These requirements were crafted such that we don't expect you to finish" is exactly how we explain our coding tests to candidates, and it seems to work really well. We actually find that many candidates will spend their own time finishing the project _after_ the interview. Programmers do like a challenge, after all, and nothing says "challenge" like "we don't expect you to finish this".
Re:How to Pass a Programming Interview by kamaal on Tuesday March 08, 2016 @06:16PM (#11249574)
>>Feel free to apply again in 6 months.

I don't understand this. No company is so special that I would be throwing away hundreds of hours in pointless meaningless work every few months just to join them! Unless I'm in need of a job again.

And whats the big deal even if I join them after six months, I'd be working to maintain some code, fix bugs and may be occasionally do a big important project.

Its not like they are sending Neil Armstrong to the moon all over again that I would like to be a part of this history.

Re:How to Pass a Programming Interview by pjmlp on Wednesday March 09, 2016 @02:44AM (#11251499)
Me neither, it is like some companies like to feel special.

After being invited twice for Google interviews, I mean really invited by their HR, not me applying for them. On both occasions I failed the process with their stupid questions.

I started replying to their HR, if I am so good to be invited but on their eyes unable to devise a inode search algorithm for unlimited hard disk sizes with a specific set of hardware and search time constraints, over the phone interview, then why couldn't they just please stop inviting me!?

That was the last time I heard from them and I don't care a bit about it.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:26PM (#11254677)
Devise a inode search algorithm for unlimited hard disk sizes with a specific set of hardware and search time constraints?

Curious -- was this problem reasonably related to the kind of work you'd be doing in the role you were applying for?

Or did they just want to find out if, you know.... you had that "spark"?

Re:How to Pass a Programming Interview by pjmlp on Wednesday March 09, 2016 @01:43PM (#11254831)
It was a position related to compiler development.
Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @05:47PM (#11256241)
Weird... what were they thinking?

But thanks. Another data point added to what others have been saying about their hiring process.

Re:How to Pass a Programming Interview by ammon on Tuesday March 08, 2016 @05:25PM (#11249293)
I am sorry that you had a bad experience with us. Evaluation is a really complicated thing. The bar that we use for evaluating the take-home project is to treat it as real work, e.g. would a teammate feel good if you were working with them on this task, and you came back after half a day with this. Because we can't see process, all we can do on the take-home track is judge of the finished result is professional-level programming. We do indeed pass people who do not complete the project on the 1st call, but they need to be on a good path (where we think they can finish by the 2nd call).

I do not know who you are (and would of course not post details here), but from what you say, it sounds like we did not think that you were on track to finish, and has some concerns about the design that you selected (we track whether a number of milestones in the game have been reached). It is totally possible that we were wrong. We much prefer to see a working front-end / back-end combination that has missing features than we do just a front-end or just a back-end.

Again, I apologize for your bad experience. I hope we can make the take-home interview better in the future with some tweaks.

Re:How to Pass a Programming Interview by Joky on Tuesday March 08, 2016 @05:41PM (#11249383)
Just curious: are you making sure your interviewer are actually first trying to code the project in 3 hours before judging candidates? I mean, it seems to me that most of my colleagues (and myself) are always very optimistic with respect to "how long it will take". So if you are judging someone based on your expectation without having went through it yourself, it can lead to a perception gap.
Re:How to Pass a Programming Interview by gaza3g on Tuesday March 08, 2016 @06:24PM (#11249615)
This is a good question because I find that my colleagues from previous companies spent a lot of time thinking of 'good ' interview questions and leave it at that.

None of them actually tried solving it within the constrains that a candidate is put through.

Re:How to Pass a Programming Interview by cookiecaper on Tuesday March 08, 2016 @06:56PM (#11249797)
I think that you almost have the right idea, but 3 hours is too long. I believe a programmer can demonstrate his ability to perform the basics in 1 hour or less. This respects the candidate's time and it also encourages the test's designers to select the most trivial project possible that shows the basic skills they're looking for. That's really what's important.

Larger projects take up more time and introduce a larger possibility that some matters of opinion or taste will impact the candidate's performance. I don't believe differences in taste are important as long as the candidate demonstrates that he is able to comply with a defined style guide.

The actual test is going to depend on the position at hand, but one of my favorites is a very simple program that asks the candidate to use GitHub's API to display the list of public repositories under a user-inputted username. That's it. I tell them they can use any language they want.

This simple test gives all the information we need about the basics:

a) the candidate is able to go online, provision himself an API key, find docs, and reference those docs to see an external vendor's API format

b) the candidate is able to use that information to craft a program that successfully interacts with the vendor's endpoint

c) the candidate is able to present the information in a concise, desirable manner.

d) the candidate is able to do all of this with a simple 1 paragraph description of the project.

The choices the candidate makes in the process of completing this simple task tell you a lot about his process, style, habits, and preferences, even though the project is very minimal in its actual requirements.

I've had people give me web apps, command-line apps, and GUI apps that accomplish this same goal. Many candidates would go above the requested specifications and many candidates would reply the same day they were given the test, which to me was an excellent signal that they felt their time was respected and that we were doing a good job of engaging them and making them interested in working for us.

As I stated, this test is not appropriate for all positions, but I think most tests should be modeled after those principles. Give the candidate room to express himself and demonstrate relevant practical knowledge.

I hope you'll consider a minimalist project like this over something like "design a multiplayer game ... in 3 hours".

Re:How to Pass a Programming Interview by judahmeek on Tuesday March 22, 2016 @04:46PM (#11339837)
As a wannabe junior rails developer, I really like the idea of a technical assessment like this. It seems very practical, yet it's not overly complex.

Have you considered requiring a thought process journal as well?

Re:How to Pass a Programming Interview by throwaway12324 on Tuesday March 08, 2016 @06:56PM (#11249795)
Evaluation is only a very small part of my complaint. The choice of projects that were offered, and the scope of the projects are what really need to be revisited (finishing the project wouldn't have been a problem for me if there existed a project that was relevant to my work that could be completed in 3 hours).

In terms of project choices, to me, it seems like you guys erred on the side of choosing projects developers would find interesting and challenging technically over projects that are practical and accurately represent the kinds of work most developers will actually be hired to do. I'm not going to post the details here for obvious reasons, but out of the four projects offered, only the multiplayer game was even remotely relevant to front-end/back-end or even application development in general, which are areas that probably account for the vast majority of development work available from startups. I realize there needs to be a balance to be stuck here, but in my humble opinion, as a recruiting firm, you should be erring on other, more the practical side in terms of project choice. I applied to Triplebyte to find a job, not to fulfill my intellectual curiosity (I can do that better on my own time without needing someone to assign projects to me).

In terms of project scope, I'm not really qualified to comment on the other choices, because they were way outside my area of expertise, but the multiplayer game definitely didn't feel like a 3 hour project. As suggested in another reply, I really hope you guys can actually give the project a try yourself and see what level of completion can reasonably be expected from three hours of work on something like that. Take whatever times reported by candidates who have successfully completed the project with a grain of salt, because people will have a tendency to understate the level of effort they spent to make themselves look more efficient (no matter how much you tell them you don't care). Here's another possible idea for making projects that take reasonable amounts of time to complete: just take your traditional interview questions and slightly extend them a bit with extra features, and simply expect better polish, architecture, test-coverage, and overall code quality, etc during the code review.

Anyways, my experience with Triplebyte's take-home interviews definitely didn't leave a great impression, but I still recommend you guys to my friends and colleagues because I do want to support what you guys are trying to do. Hopefully you can take some time to revisit some of the issues people have mentioned and make the necessary improvements. I'm happily employed now, but I'd love to give Triplebyte another try the next time I'm looking for work. =)

Re:How to Pass a Programming Interview by cheez on Wednesday March 09, 2016 @06:45AM (#11252350)
This guy has a great beard.
Re:How to Pass a Programming Interview by bm1362 on Tuesday March 08, 2016 @06:45PM (#11249737)
Anecdotally, I had a really positive experience writing the HTTP server with TripleByte. I use interview projects to learn new skills and domains, doing so aligns my interest such that even if it doesn't go well I'm better for trying. My project review went reasonably well- we caught a bug, fixed it and tested. I turned down round two due to taking another offer, but genuinely felt like these guys cared about my progress and experience.

I'm now in a position where I'm interviewing and helping shape my organization's hiring practices. We've debated all the different approaches, some people like projects, some like algorithms, and some don't want to do either to get the job. At the end of the day, I really just want data on a candidate's ability so that I can say Yes.

Re:How to Pass a Programming Interview by throwaway12324 on Tuesday March 08, 2016 @07:09PM (#11249863)
> I use interview projects to learn new skills and domains

There probably lies the disconnect. For me, interview projects should assess how well I could perform in the position I'm applying to. And thus, if nothing else, interview projects should be relevant and practical.

It seems to me that Triplebyte's project choices were made based on how interesting developers might find them, and sheer technical challenge. Some might appreciate this, but personally, I'd rather learn new skills and challenge myself on my own terms.

Re:How to Pass a Programming Interview by lisivka on Tuesday March 08, 2016 @07:21PM (#11249911)
I wrote 4 http servers in 20+ years (perl, java, shell, js). I don't want to write new one because I will develop no new skills.
Re:How to Pass a Programming Interview by kylequest on Tuesday March 08, 2016 @11:49PM (#11251002)
> At least in the traditional technical interview, interviewers and candidates tend to be roughly equally invested in the interview process in terms of time spent

Not really true unless you go to your interviews completely unprepared :-)

Re:How to Pass a Programming Interview by nevon on Wednesday March 09, 2016 @01:23AM (#11251275)
As the interviewer, I'm not going to show up unprepared either. Typically, having an interview means learning about the candidate and what would be interesting to talk to them about, learning what team they might be a good fit for and what they need, and syncing with the other interviewers to make sure we're on the same page. And then afterwards, we'll meet up to discuss how the interviewee did and whether or not we should hire them.

All in all, it's at least an hour of prep time needed, and that's only counting my time, not the time of the other interviewers, managers and recruiters.

Re:How to Pass a Programming Interview by kriro on Wednesday March 09, 2016 @03:30AM (#11251684)
Since the article seems to be about startup interviews an hour of prep time from the employer's side actually seems fairly low. I'd expect closer to a full day. Isn't hiring one of the most important strategic decisions for a startup?
Re:How to Pass a Programming Interview by gopz on Wednesday March 09, 2016 @12:06PM (#11254109)
I got one that was just: "write a web application". That's literally all they gave me for parameters. I decided not to be a dick and send them 5 lines of code returning http 200 so I set off and started a side project I'd been wanting to do for a while. Low and behold I wasn't even close to done after the weekend was over so I emailed them and said "sorry, but I need more time if you want the application I'm working on". I got an email inviting me in for an in person interview after I talked to an engineer for about 20min, so problem solved I guess.
Re:How to Pass a Programming Interview by Joof on Friday March 11, 2016 @09:06AM (#11266645)
Don't worry it should only take an hour or two; an afternoon at most!
Re:How to Pass a Programming Interview by djsumdog on Tuesday March 08, 2016 @05:20PM (#11249259)
not to mention you're asking them to code a (potentially) complex take home project, that could take over an hour, for free.

I had a friend of mine who told me her company doesn't use online programming tests (like hacker rank) because she doesn't think legit programmers would bother with positions that required them.

Having taken a couple of these on-line automated tests, I don't think I'd take them again. Problems which I'm sure I had written correctly, dealing for edge cases and testing in browser; I submit to get like a 6%. Programming simple things in front of people in an interview I do fine.

Re:How to Pass a Programming Interview by ori_b on Tuesday March 08, 2016 @05:30PM (#11249323)
> not to mention you're asking them to code a (potentially) complex take home project, that could take over an hour, for free.

An hour, I'm fine with. It's less than what I'd schedule for an interview, and far less than I'd schedule for an in person interview (which might include a flight out). On the other side of it, though, I'd be concerned about cheating. It wouldn't be too hard to hire someone to take the test for me, I'd imagine.

Re:How to Pass a Programming Interview by im_down_w_otp on Wednesday March 09, 2016 @12:30AM (#11251113)
Ah. I just provide all my answers in an obscure language they won't know, but has lots of "nerd-cred", so they feel uncomfortable questioning it. Like OCaml, Erlang, or Haskell.

Then in the rare case they question it, which usually goes something like, "Can you do it in Java? We don't use whatever language it is you're using there." I respond with, "Oh, will I be spending a lot of time at this job coming up on-the-fly with somebody's PhD thesis from the 60's?" To which the answer is always, "No." Which finally ends the conversation with me saying, "Well then you asked me to solve an irrelevant problem, so I'm happily providing you an irrelevant answer."

I have a fair bit of contempt for the pitiful state of technical hiring and assessment process out there. I think that comes mostly from my opinion that hiring is probably the most important thing any company or manager does, and that if any one of these companies/interviewers put even 10% the amount of effort into learning about educational/occupational assessment, psychology, and neurology that they do into obsessing over the dubious idiosyncrasies of the latest framework-rehash-of-the-month, then these terrible interview practices wouldn't endure very long, and we'd all be spared the indignity of the farce on both sides.

Re:How to Pass a Programming Interview by xerophyte12932 on Wednesday March 09, 2016 @04:02AM (#11251789)
> Which finally ends the conversation with me saying, "Well then you asked me to solve an irrelevant problem, so I'm happily providing you an irrelevant answer."

So how many of those companies made an offer?

Re:How to Pass a Programming Interview by im_down_w_otp on Wednesday March 09, 2016 @09:34AM (#11253149)
3 out of 5 where it's come down to that kind of bizarro pissing contest.
Re:How to Pass a Programming Interview by jguegant on Tuesday March 08, 2016 @03:22PM (#11248289)
I already saw such a colleague training hard at competitive programming, everyday. Yet, he wrote that kind of C++ code:

  ressource AClass::CopyACriticalRessource()
  {     
     {
        std::lock l;
     } // Optimization for the lock.
     
     return ressource_;
  }
Having a good understanding of every aspect of your architecture, taking your time instead of rushing for blazing fast (O(1)) but hacky solution, always having in mind that someone must have already solved your problem... these are some valuable skills not coverable during a 1h interview in front of a white board. I would like someone googling a solution in front of me during an interview, trying to UNDERSTAND it, check its complexity, compare it with other search hits, adapt it to his problem, ask for my review.

The best technical interview being a homework with enough time for a normal human being, requiring tricky algorithms to solve it in a fancy way, a good architecture and great computer-science knowledge in general. Afterwards, a code-review/interview of 1 hour with debriefing on all the choices.

Re:How to Pass a Programming Interview by Bahamut on Tuesday March 08, 2016 @04:02PM (#11248592)
Whiteboard coding doesn't necessarily have to involve guessing the algorithm - any whiteboard questions I've asked avoided doing so.

On the flip side, my experience with take home projects is that they are much more of a hazing/pressure cooker ritual - at the least, the time pressure of a Google/FB/etc. interview lasts only a half hour. Most will expect candidates to spend a huge amount of time, which many won't have if they're actively job searching, or are busy people in general - I prefer to pour that extra time into open source work, since at the least it benefits others. One company assigned a project to me once that suspiciously seemed like implementing the company's whole business model.

It doesn't take long to figure out if someone has the right skills oftentimes if you ask the right questions - candidates shouldn't be penalized for companies' ineptitude in assessing interviewees.

Re:How to Pass a Programming Interview by rqebmm on Tuesday March 08, 2016 @04:13PM (#11248691)
> I prefer to pour that extra time into open source work, since at the least it benefits others

As someone who pushed his company to adopt a "take home" assignment for our interview process, it should be perfectly reasonable to reply with "here's my commit history on a project relevant to what you're hiring for."

I much prefer giving (and taking) take home assignments because it lets the interviewer see _what someone will actually produce on the job_. If you can do that without jumping through our specific hoops, great. If not, that's why we have the assignment.

It also at least somewhat ameliorates the pressure cooker of an interview, which many people cope with poorly. It can be hard enough to communicate clearly when all eyes are on you, let alone get your thoughts together and solve a logic problem. If that's actually analogous to your work environment, well...

Re:How to Pass a Programming Interview by tn13 on Tuesday March 08, 2016 @04:04PM (#11248610)
I don't think that is really a problem. We hire people to do a good job and most of the times kick-ass programmer isn't the best person for the job. At least for a smaller company we need someone who can understand business needs, can communicate better and Add Value. This is a far complex job than implementing red-black trees.

Consider this: We need to find the most shared URLs on Facebook in last 24 hours.

I can perfectly see why a lousy coder might achieve this objective better than a kick-ass one. A coder with average skills quickly figured out that Buzz-sumo has a public webpage with that content which can very easily be scraped using phantomjs. Job got done.

Another great coder suggested to me I should buy $10K per month Facebook firehose. He is not wrong and that is a good solution too but he failed to see that we are building a POC and not a full featured product.

Needs of companies are complex, many times if you can pay great salary just having a filter for IQ is good enough. But in most cases I think it is far better to look at an individual and judge.

Re:How to Pass a Programming Interview by paulryanrogers on Tuesday March 08, 2016 @04:37PM (#11248901)
Would the Buzz-sumo programmer be expected to investigate their terms of service too? (Often scraping is prohibited.)
Re:How to Pass a Programming Interview by tn13 on Wednesday March 09, 2016 @02:10PM (#11255017)
I am just giving an example. For a POC it does not matter much.
Re:How to Pass a Programming Interview by Someone on Tuesday March 08, 2016 @08:00PM (#11250083)
"But do you really learn anything by asking the candidate if they can recite the time complexity of a moving window average algorithm"

No, but it may be a good question, anyways. A good interviewer probes you about things you might encounter in the job to find the point where you cannot recite things, and looks how you handle that.

Having said that, I don't understand the focus on coding interviews I read on HN. I don't know whether it is cultural difference between the USA and Europe, whether I just haven't noticed how you are supposed to prepare for interviews, or whether I am too smart to need to bother, but when I apply for a job, I look up what the company does, try to figure out what its culture is, but do not prepare for the technical side of things. An interview isn't a one-sided affair of you being quizzed, it is two parties figuring out whether they fit together,

Re:How to Pass a Programming Interview by riazrizvi on Tuesday March 08, 2016 @03:05PM (#11248119)
I have come to believe it is part of an industry-wide negging style to keep people in their place.
Re:How to Pass a Programming Interview by thearn4 on Tuesday March 08, 2016 @03:28PM (#11248327)
> I much prefer "homework" projects

I helped a group within my organization with their hiring process recently, and we had pretty good success with assigning a short "take-home" exercise, vs. trying to haze them with a programming problem over a google hangout interview. A problem focusing on a small part of what that group does, but scoped to be doable with 1-2 hours of work.

Re:How to Pass a Programming Interview by megablast on Tuesday March 08, 2016 @05:43PM (#11249389)
I guess it works well for people unemployed with nothing else to do, no family, lots of time.

Everyone else, this sucks!

Re:How to Pass a Programming Interview by buzzdenver on Tuesday March 08, 2016 @06:27PM (#11249635)
Interviewing does take time. Most people will be able to spare an hour to find a new job.
Re:How to Pass a Programming Interview by kylequest on Wednesday March 09, 2016 @12:01AM (#11251031)
So you are saying you don't spend any time preparing for your interviews :-)
Re:How to Pass a Programming Interview by jonesb6 on Tuesday March 08, 2016 @03:34PM (#11248370)
Why don't companies offer it as an option?

"Hey here's a fizz buzz question, if you feel confident answering it now go for it, otherwise we'd be just as happy for you to do it in a take-home fashion?"

Re:How to Pass a Programming Interview by hemc on Wednesday March 09, 2016 @02:26AM (#11251426)
Homework projects don't work some cases, when developers come with a refined copy/pasted code or code by another programmer. Better way is to go through the previous code that developer has written or go through the code written by other programmers to know the capability of the programmer to understand different code patterns
Re:How to Pass a Programming Interview by whyever on Wednesday March 09, 2016 @07:59AM (#11252680)
> Better way is to go through the previous code that developer has written or go through the code written by other programmers to know the capability of the programmer to understand different code patterns

Doesn't this have exactly the same problems as homework projects? You can still copy and paste or plagiarize.

Re:How to Pass a Programming Interview by WalterBright on Tuesday March 08, 2016 @06:54PM (#11249787)
Every week HN has a topic on the front page about how inaccurate and unfair job interviews are. They're always going to be inaccurate and unfair. Interviews must use proxies for candidate quality, and there will always be false positives and false negatives.

The most practical thing is to work with it as it is.

Re:How to Pass a Programming Interview by cheez on Tuesday March 08, 2016 @06:06PM (#11249515)
The problem is that most companies want the take home in addition to algorithm interviews, keeping the worst characteristics of both approaches.
Re:How to Pass a Programming Interview by shasta on Tuesday March 08, 2016 @05:53PM (#11249445)
> But do you really learn anything by asking the candidate if they can recite the time complexity of a moving window average algorithm (as I was asked to do by an interviewer yesterday)?

This is actually a trivially easy question that gets to the heart of whether you understand the point of moving averages or not (that you can update a sum by subtracting out the value leaving the window and adding in the value entering the window).

"Programming ability" isn't one dimensional. Whether or not the above question is useful depend entirely on what skills are important in a candidate.

Re:How to Pass a Programming Interview by Cakez0r on Tuesday March 08, 2016 @06:08PM (#11249521)
It's not so much specifically about the moving average problem. I would want to see that a candidate can reason about the performance of some code / algorithm. I would not expect them to be able to recite the performance for specific algorithms from memory, however.
Re:How to Pass a Programming Interview by shasta on Tuesday March 08, 2016 @07:07PM (#11249855)
I agree, but I suspect "recite" was editorializing by the parent.
Re:How to Pass a Programming Interview by quanticle on Wednesday March 09, 2016 @02:30AM (#11251441)
It wasn't. I was literally asked, "What is the time complexity of the moving window average algorithm over an array?" and when I asked for clarification, I could hear an edge of... I guess frustration in my interviewer's voice.

Granted, by this time, we'd been through a couple of other problems, and time was running short, but I still think it was pretty unprofessional of the interviewer to let frustration or any other sort of negative emotion show during the interview. That, more than anything else, contributed to my own frustration and perception of unfairness in the entire interview process.

Re:How to Pass a Programming Interview by shasta on Wednesday March 09, 2016 @11:16AM (#11253782)
Right, but "recite" was editorializing. That implies that the interviewer expected you to produce the answer from memory, as opposed to thinking about it. It's an easy question if you're familiar with moving window averages and know what the interviewer intends. If it was asked apropos of nothing, a request for context seems reasonable, though. It sounds like you probably had a bad interviewer. There seems to be no shortage of software interviewers lacking in "people skills."
Re:How to Pass a Programming Interview by quarktasche on Tuesday March 08, 2016 @03:03PM (#11248102)
Wouldn't the question about the moving average be a good one though? It should be quite obvious that you can calculate a moving average without remembering more than the current average and the window size. Given that, time and space complexity should be obvious. I think it would be a fine question to see if the interviewee has any idea what complexity means.

Or was it a more complicated moving average case (exponential etc) where the algorithm was given and you were asked to determine the complexity?

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @01:35PM (#11254769)
How many jobs will it be relevant to?
Re:How to Pass a Programming Interview by quarktasche on Wednesday March 09, 2016 @04:40PM (#11255930)
Which part?

Figuring out how to efficiently calculate a moving average seems like a good question for basic maths skills to me.

About complexity theory, there is already a lot of discussion about it's relevancy in the comments. My point was meant more along the line that, if you value a basic understanding of complexity theory, the question asked of the GP seems reasonable.

Re:How to Pass a Programming Interview by blakecaldwell on Tuesday March 08, 2016 @09:26PM (#11250447)
Coding interviews are very stressful, and churn through a lot of really awesome potential hires. I imagine there are tons of false negatives, but it's nearly impossible for a terrible programmer to get through a gauntlet of programming interviews. However, I agree. They don't give a full picture of a developer's abilities.

As a developer, I prefer take-home projects. As an interviewer, I prefer a few coding interviews, followed by a take-home project.

Re:How to Pass a Programming Interview by platform on Tuesday March 08, 2016 @09:59PM (#11250590)
I have not tried it. But in my next business venture, I plan to actually do peer programming with the candidate.

This is will allow members of my team (or myself) to get to know the candidate, evaluate the 'wave lengths', and how effective he/she is at finding patterns on the internet/books -- rather than thinking things up.

It also demonstrates to the candidate commitment on our side, and it naturally forces us to find problems of a proper size/effort (as we are spending the effort too).

We would not do it for all applicants, though -- only for once that pass basic screening / competency process (there are no trick questions or exercises there

Re:How to Pass a Programming Interview by quanticle on Wednesday March 09, 2016 @02:21AM (#11251413)

    I have not tried it. But in my next business venture, I plan to actually do 
    peer programming with the candidate.
As a candidate, I can highly recommend peer programming. One of the greatest interview experiences I had was interviewing with a local shop where the employee and I reimplemented a Set class using TDD and pair programming. The employee sat at the keyboard, so I didn't have to deal with not knowing keyboard shortcuts or the unfamiliar operating system (OSX), but he was very careful to only write the code that I asked him to write, and to let me make my own mistakes.

It was one of the most enjoyable, and, dare I say it, relaxing interview experiences I've had. Though I didn't get an offer, I wouldn't hesitate to recommend that company to any of my peers who're looking to make a change. Also, like you said, it was a second tier screen; after an initial screen consisting of a more traditional phone interview where I had to write some Javascript.

Re:How to Pass a Programming Interview by blakecaldwell on Tuesday March 08, 2016 @10:09PM (#11250628)
Yeah. You can save a lot of your time, and the candidates' time with a simple coding interview - even FizzBuzz will knock out half of the candidates. Then pair up and/or give a take-home, then discuss the solution in a one-on-one session.
Re:How to Pass a Programming Interview by rurban on Wednesday March 09, 2016 @08:37AM (#11252847)
As an interviewer I only look at the resume and published open source projects the candidate did. Everything else just a random impression, nothing serious to bother. The questions are for something else.
Re:How to Pass a Programming Interview by autotune on Wednesday March 09, 2016 @12:07PM (#11254118)
I like this approach the most. Evaluate code that they've already written, maybe make sure that they can solve a similar problem to make sure they actually understand what they did and didn't pay someone else to do it, and then a personality fit. Chances are if they really wanted to be hired to learn how to program they're aware of the importance of contributing to open source.
Re:How to Pass a Programming Interview by nsxwolf on Wednesday March 09, 2016 @02:39PM (#11255234)
This is frustrating for the many engineers who have no open source work. You're shutting out a massive amount of talent that has only worked on proprietary software.
Re:How to Pass a Programming Interview by quanticle on Wednesday March 09, 2016 @02:12AM (#11251399)

    I imagine there are tons of false negatives, but it's nearly impossible for 
    a terrible programmer to get through a gauntlet of programming interviews.
Depends on what you mean by "terrible", I suppose. Yes, coding interviews do a good job at screening out the bozos who just can't program, period. The ones who don't understand the difference between a for loop and a while loop, or the ones who can't handle boolean logic.

But I've found that even once you get past the outright bozos, there are quite a few programmers who can program quick one-off things, but have no sense of design or maintainability. They can deliver functionality, but deliver in a way that piles on technical debt and damages the long term health of the codebase. I think the traditional technical interview format ironically encourages this sort of behavior, by encouraging applicants to focus on narrowly solving the problem at hand, as quickly as possible, both in terms of machine time and programmer time, even if that means the code is an unmaintainable mess in the long run.

Put another way, think back to the last time you had to do any sort of whiteboard coding, as part of an interview. Are you proud of the code that you wrote? Would that code pass code review at your current position? If so, then congratulations. You're a better programmer than I. The code I've written on whiteboards has been pretty uniformly terrible. Sure, it met the correct Big-O complexity requirements, and it was correct, insofar as it produced the correct output, given correct input. But there was no error handling. Variable names were single letters. The functionality wasn't broken up into logical functions because writing additional function headers takes more time, and my handwriting is messy enough when I'm not rushing. All in all, it's code that you'd see in a prototype, or a programming contest entry, not a robust system that's usable by customers.

Lately, I've seen more and more such code being produced by new graduates not only in coding interviews, but also as part of day-to-day programming. There's an incipient attitude of, "Well this code would pass in an interview, so it's production ready." I find it deeply troubling, and my concern is that programming interviews are setting up incentives by which this sort of code becomes, if not normal, then certainly more accepted than it was in the past.

This is why I advocate so heavily for take-home projects. When a candidate submits a take-home project, you can be assured that they had enough time to design and code the assignment in a maintainable way. You can see whether they added unit tests. You can see whether they split the code logically into objects and functions, or whether they smushed everything into a 500-line main(). I accept that take-home assignments aren't as scalable, either from the interviewee side or the interviewer side, but I do worry about the long term effects on norms that programming interviews are having.

EDIT: grammar

Re:How to Pass a Programming Interview by highCs on Wednesday March 09, 2016 @10:47AM (#11253599)
I have a theory: I think the coding skills of a programmer are function of the number of programs he's written - from scratch.
Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @01:27PM (#11254693)
Maybe, but at the moment I have inherited a bit of a mess of an application in my new job. I think it takes more skill to work out what it is doing and replace the crap code with something simpler and more efficient, more maintainable and easier to read.
Re:How to Pass a Programming Interview by lazerwalker on Wednesday March 09, 2016 @12:05PM (#11254103)
My favorite sorts of interviews are ones where you're expected, either by pairing with an employee on your own, to fix a bug in an open-source project you use. Has all of the benefits of a take-home project over whiteboarding, but the end result is you have something tangible to show for your efforts even if you don't get the job.
Re:How to Pass a Programming Interview by nathan_long on Thursday March 10, 2016 @11:35AM (#11260174)
This. Also, any interview where the candidate pairs with an employee lets both of them see how they like working together.
Re:How to Pass a Programming Interview by braythwayt on Wednesday March 09, 2016 @09:05AM (#11252992)
This is a general problem:

  > Being a good president has a surprisingly small role in
  > being elected president.
Re:How to Pass a Programming Interview by restalis on Wednesday March 09, 2016 @02:21PM (#11255104)
"Being a good programmer has a surprisingly small role in passing programming interviews." "And that just says it all, doesn't it?"

An interview is for both prospective employer and potential employee to meet and find out about each other. If you as a candidate notice something you don't like during the interview (including the interview itself), that already is a valuable information for you, as you already may assume things based on it (like, what kind of people you may find past the in-process interview as they all more or less were filtered in by it). So you can always stop and say "thank you" and walk away without wasting more time. You'll allow yourself to stay longer only when the interview's quality warrants it.

Re:How to Pass a Programming Interview by mettamage on Tuesday March 08, 2016 @03:28PM (#11248329)
Here's an idea (perhaps naive): why not add all the methods and give them optionally to the programmers. E.g. - normal interview is mandatory (you need something to base your ideas on) - portfolio is optional but when chosen it weighs heavily - take home project is optional but when chosen it weighs heavily - etc.

With 'weighs heavily' I mean that it influences the criteria for which those methods are good for.

The downside of this is that interviews are more unstandardised, which is a trade-off worth considering.

Re:How to Pass a Programming Interview by RichieAHB on Wednesday March 09, 2016 @02:25AM (#11251425)
Unfortunately, this is much the same as virtually any broad examination process. I'm primarily thinking of schooling up to 16. There's a lot of work to be done in ironing out one-size-fits-all testing in a lot of areas, primarily those that "require" a human to do the processing of the data.
Re:How to Pass a Programming Interview by eranation on Tuesday March 08, 2016 @05:56PM (#11249456)
When I was interviewing in the past I was usually refusing any take home projects, if you don't want to spend 30 minutes talking to while watching me code it tells me something about your priorities.

However whiteboarding is also terrible.

I prefer getting a real world / work related scenario problem, and solving it TOGETHER with the interviewer: if I'm stuck, as opposed to a hackerank codility challenge, there is a good chance they will let me know and hint in the right direction, and they will also see how I communicate, how I think, how I respond to hints. An online challenge can be easily done by the candidate sitting next to 2 more senior coder friends who help him / her along the way. Unless it is proctored, you can never know. I had people whispering someone answers during a phone screen, people typing my question in Google and reading me the first result (I google it at the same time).

I think that giving you a hackerank or codility take home problem unless this is an entry level job will simply drive away experienced people.

If someone can pass your take home test easily, you will still need to phone screen them before you fly them over in most cases, and if they are that good, they will probably prefer companies that don't waste their time and jump straight to the real person phone screen.

However, some people are more nervous when someone is watching over their shoulder, so here is what I would do: I would ask the candidate what they prefer:

1. work related a hands on assignment with plenty of time (e.g. should take 30 mins but you give 1 hour) and ability to search online and ability to compile use an IDE just like in a real world scenario

2. Skype screen with a lot of small questions on a topic they really feel they know about (no Googling allowed), and a relatively smaller coding challenge (something you can code in 15 minutes)

3. Work related scenario but with a real person, where there is no one best answer to the question, but more of a balance of tradeoffs and more open ended but 100% involves coding (just like most phone screens, but more work related and not just puzzles)

4. The standard puzzle challenge but alone - you have 30 minutes to solve the problem once you see it (Googling is allowed or the test is proctored to make sure you don't, then you get more time)

5. the classic - a cracking the code interview kind of question, but with a real person, code sharing (for crying out loud not google docs, at least have your candidates use something that offers color coding and easier indentation) - some might choose still this

If you let your candidate chose what is best for them, you already made an amazing impression, and you might have much less false negatives.

Just my opinion

Re:How to Pass a Programming Interview by digler999 on Tuesday March 08, 2016 @02:55PM (#11248031)
> including (time/space) complexity analysis.

I think this is one of the most inane things to be asked during an interview. personally, I've never found myself in a situation where I truly needed to choose between a vector/map/list/hashmap. Or had to find the O(x^n) and replace it with O(x^2)

Obviously it depends on the application, but many jobs are simply maintenance coding: find bug, fix bug, test fix. Often times it makes absolutely no difference whether you use a list or a vector, or else you'll get the paradoxical "vector-is-always-faster" because of locality of reference.

In my (admittedly limited ) experience, most of the effort is spent simply making it work, not being bogged down because you used a map instead of a hashmap, or didn't know about some esoteric, bleeding-edge probabilistic data structure.

Re:How to Pass a Programming Interview by mech4bg on Tuesday March 08, 2016 @03:09PM (#11248157)
I've seen this plenty of times. I've worked both on a trading platform and a large website, and both times encountered many performance issues that were solved with a more appropriate algorithm or data structure. I've even seen this with a list as small as 10 items - a O(n^3) algorithm was making multiple network calls each time; changing it to O(N) alone made a huge improvement in speed.
Re:How to Pass a Programming Interview by jkyle on Tuesday March 08, 2016 @04:57PM (#11249069)
This does come up a lot.

But I think it's more telling if a programmer knows how to profile his program and find the performance bottlenecks, recognize them for what they are, then fix them appropriately than if they can recall a specific optimization for a specific use case on demand.

Re:How to Pass a Programming Interview by kevan on Tuesday March 08, 2016 @11:21PM (#11250904)
Most of my work on an ecommerce platform doesn't need much attention to algorithmic complexity, but everyone on my team still curses the guy who wrote an O(n^4) algorithm in our checkout pipeline (discounts, promos, shipping, tax, etc). More than a couple items in your cart and you couldn't checkout because the thread would spin forever. I want to work with a team of people who can recognize these things immediately, even if it's not an absolute requirement for the job.
Re:How to Pass a Programming Interview by im_down_w_otp on Wednesday March 09, 2016 @10:27AM (#11253474)
That has a lot more to do with mechanical sympathy, and awareness of when you've exchanged cleverness for complexity disguised as cleverness, than it does with knowing the big-O of operations on a datastructure.

What you want the person to identify is that they've made your simple iterative checkout process into multiple unbounded tree traversals with no circuit breaker.

Knowing that searching the tree is O(log(n)) isn't very helpful when your problem is an inability to identify that you've made (n) an unnecessarily huge problem space.

Re:How to Pass a Programming Interview by ktRolster on Tuesday March 08, 2016 @03:05PM (#11248116)
Most likely you think about it, though. When you're coding, and you have a triple loop, do you think, "Oh, this is O(n^3). Is n going to be too big here?"

It may be something that's so intuitively obvious to you, that you don't even think about it. So you naturally use the hashmap, where someone else might try a list and then start doing a lookup in a loop. Then while that particular instance might not break things, it'll slow things down, so overall the application feels sluggish instead of snappy.

Re:How to Pass a Programming Interview by eecks on Tuesday March 08, 2016 @05:36PM (#11249364)
I've never ever thought that to myself. Then again my code never has triple loops.
Re:How to Pass a Programming Interview by Retra on Tuesday March 08, 2016 @10:02PM (#11250602)
So do you never call anybody else's functions, or do you always verify that they don't do any loops in those calls?
Re:How to Pass a Programming Interview by ken47 on Tuesday March 08, 2016 @03:29PM (#11248341)
I've never found myself in a situation where I truly needed to choose between a vector/map/list/hashmap. Or had to find the O(x^n) and replace it with O(x^2)

This entirely depends on the kind of product you are working on. When you get to a large scale with any programming project, optimizing computational resources will cut costs, and can often add value to the customer as well.

Re:How to Pass a Programming Interview by rhizome on Tuesday March 08, 2016 @05:27PM (#11249306)
This is special pleading, though, right? It being relevant to "any" large scale project really just means that projects can get big enough for it to matter, but how many jobs involve this family of software? How many interviews for positions directly related? Very few, I would guess.
Re:How to Pass a Programming Interview by NotSammyHagar on Wednesday March 09, 2016 @12:30AM (#11251114)
I find myself having to think about efficiency at least a couple times a week. I'm working on database implementation, and in the query processor we have to consider all the time how to evaluate various things efficiently.
Re:How to Pass a Programming Interview by rhizome on Wednesday March 09, 2016 @05:47PM (#11256243)
Taking this at face value, were any of the techniques you use in these tasks directly addressed during your interview there?
Re:How to Pass a Programming Interview by Cakez0r on Tuesday March 08, 2016 @06:12PM (#11249549)
I would say it starts becoming important for any application that has multiple concurrent users. If it's a single user running it on some device and there's no shared resource (I.E. back end), then chances are it's not going to be an issue.
Re:How to Pass a Programming Interview by jerf on Tuesday March 08, 2016 @03:04PM (#11248104)
"Or had to find the O(x^n) and replace it with O(x^2)"

The other thing that really seals the deal for me as an inferior interview question is that you don't need to have a clue what O(x^n) is to wrap some code in a simple time call, see that the code you think ought to run in microseconds is running in seconds, by visual inspection notice stupid nested loops, and fix it. Self-taught programmers may not be able to say "O of exx to the enn" but that doesn't stop them from fixing it.

So... seriously, what good is the question anyhow?

Re:How to Pass a Programming Interview by JupiterMoon on Tuesday March 08, 2016 @04:53PM (#11249040)
I would recommend going through some undergrad CS datastructures and algorithms lectures to any self taught programmer. My process of reading code improved dramatically. And the big O concept is, once you wrap your head around it, an intuitive way to think about speed. Also once you've timed your code and found the slow bits you need to know how to speed it up, not all speed ups are as simple as unnesting loops.
Re:How to Pass a Programming Interview by vpeters25 on Wednesday March 09, 2016 @11:16AM (#11253779)
Same here. last week I was sent a Codility test, tried the demo and failed miserably.

Then I noticed the test was expressing constraints using time/space complexity, concepts I was completely unaware about for my previous 15+ years in the profession.

So now I am reading about algorithm theory face-palming at the realization I have reinvented the wheel many times during my career instead of just re-using a PhD. researched algorithm.

Re:How to Pass a Programming Interview by tomjen3 on Tuesday March 08, 2016 @03:31PM (#11248349)
What if it isn't stupid code? What if it is straight forward and simple and looks correct but is just slow because it has to traverse a list instead of using a hash-table or some other data-structure. You can't get there by intermediate steps, you have to rip out the code that uses it and rewrite it with a hashmap. You can only do that if you know the space complexity and when a hash and a list is appropriate.
Re:How to Pass a Programming Interview by jerf on Tuesday March 08, 2016 @08:21PM (#11250185)
"You can only do that if you know the space complexity and when a hash and a list is appropriate."

You seem to be confusing "knows how to say 'oh of enn squared'" with "the loop gets slow when I iterate over a lot of things". One is generally a product of education, the other, merely experience.

The idea that a thing can only be learned in a classroom is perhaps in the top ten most pernicious ideas in the modern world, and probably one of the more surprising ones to show up in that list. You do not need special courses to discover that your code runs slowly, and as I've seen often enough, having had those special courses does not confer immunity against writing slow code.

Now, I am also a believer that formal education has its place, and if you are going to get a formal education in computer science, big-O analysis absolutely must be part of it or you are literally missing out on an entire rather important sub-discipline. But the idea that it's some sort of touchstone between Good and Bad programmers is just ludicrous nonsense. Slow code is slow. There are abundant tools that can be used to figure out why. If you can't work out why your O(n^3) loop is running slowly after a couple of years of practicing the art, you don't need formal education, you need a different job.

Re:How to Pass a Programming Interview by bottled_poe on Tuesday March 08, 2016 @09:07PM (#11250366)
I've found that employees who are able to discuss the benefits of certain data structures and their associated time complexity are generally able to solve problems quicker than those who struggle to discuss these fundamentals. That said, the thing that matters most to me when hiring programmers is proof that they can write decent code.
Re:How to Pass a Programming Interview by democracy on Wednesday March 09, 2016 @02:45AM (#11251501)
My thoughts exactly, a bit suprised seeing it on HN
Re:How to Pass a Programming Interview by sklogic on Tuesday March 08, 2016 @04:58PM (#11249084)
Are you going to profile everything for the entire nearly infinite range of possible input values, including all the pathological cases?
Re:How to Pass a Programming Interview by pjscott on Tuesday March 08, 2016 @07:28PM (#11249941)
This is a very under-appreciated point. If you profile a program on non-pathological input, the profiler won't tell you what's going to explode later on when your program hits a rare case that you hadn't expected. Theoretical upper bounds don't have this problem.
Re:How to Pass a Programming Interview by Retra on Tuesday March 08, 2016 @10:00PM (#11250595)
It demonstrates that you have a passing familiarity with probably _the_ most fundamental tool of the trade.
Re:How to Pass a Programming Interview by sgift on Wednesday March 09, 2016 @01:48AM (#11251357)
The most fundamental tool of the trade is a profiler. The tool which is used in reality to find performance problems, unlike BigO, which is used in theory to find performance problems. Does BigO help? Sure. Is it the silver bullet people seem to think it is? No.
Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @12:52PM (#11260669)
The tool which is used in reality to find performance problems, unlike BigO, which is used in theory to find performance problems.

Sorry, but this is just wrong.

I can guarantee you that BigO is very often used not "in theory", but in practice, to find real-world performance problems. And not having "situational awareness" of certain commonly occurring complexity profiles can be a significant source for performance headaches and technical debt.

One trivial-seeming, but frequently occurring example: not knowing when to use hash maps.

In fact, many people solve performance problems (including both those where order-of-magnitude performance really is the most important factor, and various other kinds) not by using a profiler but by, you know, understanding the code and thinking about it. Being as profilers, while they can tell you a lot about certain kinds of performance issues, are still generally quite limited in what they can tell you.

Is it the silver bullet people seem to think it is? No.

Of course not, and I've never heard anyone saying that it was, either.

Re:How to Pass a Programming Interview by Retra on Wednesday March 09, 2016 @07:01PM (#11256550)
It's not a silver bullet, it's only a model of the problem. If you profiler tells you some code is slow, you can model why it must be slow by using big-O. In fact it's the standard way of explaining such things. Without it, you must spend your time babbling about special cases.

It's like, yeah, you don't "technically" need to know any 2+ syllable words to be a programmer, but you're really not helping yourself by avoiding them.

Re:How to Pass a Programming Interview by RogerL on Tuesday March 08, 2016 @07:51PM (#11250043)
Big O took about 15 minutes to teach. Sure, it went on and on a bit because a rigorous class will introduce proofs, but you are absolutely right - it's a trivial concept, and often flawed in practice (list is supposed to be faster for random inserts/deletions according to big O, but in practice they are almost always slower).
Re:How to Pass a Programming Interview by pessimizer on Tuesday March 08, 2016 @03:33PM (#11248360)
Honestly, I consider an instinct for complexity analysis the most important thing I learned in school, and the thing that I've gotten the most use out of. I don't know what case you're making here: are you saying that high-level architecture is so hard that choosing a map or a hashmap should be a coinflip, or the one you see first? Having had some criteria for making the choice makes my life a lot better when everybody is panicking because something is running like shit and no one understands why.
Re:How to Pass a Programming Interview by digler999 on Tuesday March 08, 2016 @06:28PM (#11249643)
To me it was a bunch of rote memorization, just like a biology course. I never - never - have needed to know how bubblesort/heapsort/mergesort actually work, except to appease interviewers.

I'm not saying I'm pro writing-inefficient-code, but if you want to talk big-O during an interview, I"m going to roll my eyes about as much as you asking me who the 19th president was.

Re:How to Pass a Programming Interview by democracy on Wednesday March 09, 2016 @08:19PM (#11256853)
I ask such questions at the end of an interview, but mostly to see the sanity/reaction or thinking process - wrong answer would do, rolling eyes - would not :)
Re:How to Pass a Programming Interview by b1449835 on Wednesday March 09, 2016 @02:23AM (#11251416)
Oh shit, my code is O(1), looking at it in the profiler tells me that it's not a bottleneck (it says < 5ms). Yet this single function call somehow takes 78ms in wall time when it should at worst be 1ms (and even that is too much). The reason? JVM classloading/JITing. This quite annoying when you have shortlived applications.
Re:How to Pass a Programming Interview by EpicEng on Tuesday March 08, 2016 @03:45PM (#11248463)
That's fine, as long as you _never_ need to trust said dev to do anything complex. It's fine to have mediocre developers perform mediocre tasks, but if you want more from them someday you may be in trouble.
Re:How to Pass a Programming Interview by FLUX-YOU on Tuesday March 08, 2016 @08:13PM (#11250156)
That's not really fair, people don't grow unless they're challenged.

Some people really do never advance past a certain point, but a lot of people write someone off as mediocre when they're just still in the process of gaining skill. Also, they only assess ONCE, which is pretty bad if we're trying to establish how good you are forever and always.

Re:How to Pass a Programming Interview by EpicEng on Thursday March 10, 2016 @06:50PM (#11263523)
That's true, but how do you discern between someone who has potential and has not yet been challenged, and someone who simply doesn't care? In my experience, the best will challenge themselves to learn new things on their own.
Re:How to Pass a Programming Interview by digler999 on Tuesday March 08, 2016 @06:25PM (#11249620)
to me, complex, and complex-ITY are entirely different matters. I want a smart programmer who can figure out really complex bugs (something you cant figure out from google/wikipedia). Not someone who memorized the big-O performance tables of 8 different data structures (something you CAN look up on wikipedia ).
Re:How to Pass a Programming Interview by was_boring on Tuesday March 08, 2016 @11:03PM (#11250837)
Exactly. I once identified memory leaks in a managed runtime implementation, worked around them, and showed that third party networking libraries from the hardware vendor were causing irrecoverable crashes but I can't spout off runtime complexity of algos. The former saved a multi million dollar contract and my company's reputation, the latter is something I look up when I need it.
Re:How to Pass a Programming Interview by EpicEng on Thursday March 10, 2016 @06:51PM (#11263529)
Optimally, I would like both. I agree that wrote memorization is not a very useful skill, but I'd like to know that they can grasp concepts, and I find it hard to believe that there are a bunch of skilled devs out there with great potential who don't or can't understand algorithmic complexity. Interviewing is hard though, I'm not trying to say that any one question or metric should necessarily rule someone out.
Re:How to Pass a Programming Interview by tomjen3 on Tuesday March 08, 2016 @03:22PM (#11248288)
I am sure the RubyGems authors thought the same way until somebody sped the process up dramatically because they could do space-time analysis[0].

[0]: https://news.ycombinator.com/item?id=9195847

Re:How to Pass a Programming Interview by nathanaldensr on Tuesday March 08, 2016 @07:05PM (#11249843)
Here's how you should reply: "Sorry, I don't have those complexities memorized. When I really need to look them up (which is nearly never), I refer to bigocheatsheet.com."
Re:How to Pass a Programming Interview by plasticchris on Tuesday March 08, 2016 @06:30PM (#11249654)
This can happen even on small systems. I once replaced a O(n^4) with O(n^2*ln(n)) on an embedded target which made a minutes long user facing process take seconds. The catch is that the original used a good algorithm, but made an implementation error which I caught in profiling. So complexity analysis is good, but the only way to get better at something is to measure it.
Re:How to Pass a Programming Interview by robryan on Tuesday March 08, 2016 @08:44PM (#11250277)
You should have an intuitive idea around complexity and when it makes sense to optimise.

I don't think though you need to know that for example fastsortx is n log n in the best case off the top of your head in an interview situation. You should be able to reason your way through why it is faster than some other sort though.

Re:How to Pass a Programming Interview by nsxwolf on Tuesday March 08, 2016 @10:09PM (#11250629)
What the heck is fastsortx? This is another problem I have. I study all these algorithm books then when I get to the interview they ask something that either isn't in the books or they've come up with some nickname for it and expect me to know it.
Re:How to Pass a Programming Interview by rhaps0dy on Wednesday March 09, 2016 @05:49AM (#11252152)
It's probably a placeholder. Same as writing <sort algorithm>.
Re:How to Pass a Programming Interview by democracy on Tuesday March 08, 2016 @10:45PM (#11250763)
Even Google doesn't know...
Re:How to Pass a Programming Interview by democracy on Tuesday March 08, 2016 @10:44PM (#11250754)
That's how I failed my Google interview - they said they expect programmers for any position to have good knowledge of algorithms, yeah, well... :) Frankly I don't like trivia-style interviews.
Re:How to Pass a Programming Interview by munchbunny on Tuesday March 08, 2016 @03:47PM (#11248476)
I think it's easy enough to ask for this skill if the job would require the interviewee to apply this skill.

If your job is mostly frontend, yeah, you probably won't need to worry about this problem. But if you're hiring somebody to work on graphics? You better be doing complexity estimates in your sleep.

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @01:18PM (#11254618)
Exactly. Performance issues happen. Most of them can be solved by re-indexing a database or adding caching. If I really need speed at the algorithm level I can look it up.
Re:How to Pass a Programming Interview by b1449835 on Wednesday March 09, 2016 @02:11AM (#11251395)
Because in most cases n is a very low number. If you only have 10 elements the algorithm doesn't matter.
Re:How to Pass a Programming Interview by sklogic on Tuesday March 08, 2016 @04:56PM (#11249061)
That guy in Google who screwed up Android thought just like you. Now, as the number of text messages stored on your phone grows, the entire system slows down. Such a pity that cretin was not screened out on an interview!
Re:How to Pass a Programming Interview by draw_down on Tuesday March 08, 2016 @03:52PM (#11248511)
If you're a programmer, you like to solve puzzles, so think of passing the interview as just another puzzle! I mean, yeah, it shouldn't be, but here we are.
Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @12:33PM (#11260547)
If you're a programmer, you like to solve puzzles,

No -- we like solving problems. Especially those that have a legitimate context (i.e. are explicitly linked to some actual, real, business or social problem). And for which our skills are truly relevant needed (specifically, for which no one has a readily available answer, at the moment).

But made-up "puzzles"? For which the asker already knows the answer, so they sit back and watch us dance?

Not so much.

Re:How to Pass a Programming Interview by soham on Tuesday March 08, 2016 @04:18PM (#11248742)
Homework projects could work well if the hiring requirements are small, but won't work well when a company has to hire say 25 engineers a quarter, which we had to. At that point, the process becomes too long, and it's easy to lose good candidates to a long process.

This method of interviewing has been around ever since, and is going to be around for the foreseeable future. Nobody loves it, including the interviewers, but there just isn't a better way to do it at any sort of scale. Especially when there are much bigger problems to solve when you're running a business.

It's best to take the bull by the horns. I run http://InterviewKickstart.com, which is a bootcamp for preparing for such technical interviews. We do almost exactly what is in the blog post. It works. Spectacularly.

Re:How to Pass a Programming Interview by thesimpsons1022 on Tuesday March 08, 2016 @05:19PM (#11249250)
i was about to sign up but then it asked for my phone number. why do you need this information?
Re:How to Pass a Programming Interview by soham on Tuesday March 08, 2016 @06:16PM (#11249573)
Simply because it is quite difficult to explain the concept in writing. What does it mean to have an intense bootcamp just to prepare for interviews? What's the method? etc.

I want to take the time to talk to everyone who is interested in the course. Because the concept is new, people have all sorts of questions. Can't possibly address all of them in writing. I don't have a team of salespeople and haven't spent a penny on advertising.

If you still prefer email, please feel free to send one. It's on the site. It may just take longer to do back and forth.

Thanks for considering!

Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @12:33PM (#11260548)
Simply because it is quite difficult to explain the concept in writing.

Then maybe it's not such a good concept.

Re:How to Pass a Programming Interview by soham on Saturday March 12, 2016 @01:26AM (#11271630)
Or possibly because it's a new concept, which takes more text to describe. More text than what can be included above the fold, and more than what most people read attentively these days.

After all, it's an 8-week intensive course, mostly for CS grads, that grills you hard, and is not cheap. As a consumer hence, I'd highly prefer to talk with someone. Not to mention, all educational institutes have an enrollment process that needs you to talk to a human.

At some point, when it becomes more common and well-accepted, we will condense it, but it feels a little too early to do so.

Re:How to Pass a Programming Interview by ghufran_syed on Tuesday March 08, 2016 @06:01PM (#11249478)
not showing the tuition somewhere up-front (or even in the faq) is another red flag...
Re:How to Pass a Programming Interview by soham on Tuesday March 08, 2016 @06:21PM (#11249596)
I had it there at one point. But the concept is difficult to understand and hence it takes a bit to understand the pricing. I didn't want random discussions on pricing flying online, by people who hadn't taken the time to understand what the course was, and what the upside is.

Pricing is also nuanced based on whether you're an experience engineer or student, whether you're taking the course remotely or on-site. Plus, there are recruiting firms who have access to our pipeline, who return a significant portion of our fees to you directly (we don't take a cut).

And those who are super curious, can always google it :-) In fact, most people who call have already googled for it before calling.

Rest assured, we're a real business, running classes every week. Batch after batch. Those who work hard, are getting their work rewarded.