Live data from Hacker News

Take-home interviews

blog.triplebyte.com

281–290 of 295 posts

Re: Take-home interviews

#281

From the employees' perspective: Take home tests are the worst. Company says take home test will take 3 hours to complete. They never do. Schedule 2x or 3x the estimate. Especially if you want to impress the reviewer. You send it over, then the company says no or yes, only to move to new stage. In the worst case you ruined your weekend and received a no. But the company just took 10 minutes to arbitrarily reject your…

We do take-home tests at deezer.

We try hard to provide good feedback on each submission (certainly not just a 10 minutes look, even for a truly awful entry).

I think that we should try harder to provide an exercise with a maximum time spent. We also try hard to overlook things that can be attributed to a lack of time but the openness of the exercises we use mean that somebody willing to could spend dozens of hours on it if he/she wanted a truly perfect solution (with unit tests everywhere, handling all API levels & devices in the wild, ...)

I personally thinks that our exercises are more objective than whiteboard tests & better reflect real life work. Actually, we take our inspiration from real problems we had to solve.

Re: Take-home interviews

#282
post #277

Earlier quoted context omitted.

I disagree. I have yet to meet anyone who is faking it and cannot be cracked in 5-10 minutes of carefully-directed prodding. In fact, I don't see how it is possible to do extremely well on the "talk like a professional" part and not be able to write basic programs, unless you and I have very different concepts of what "talk like a professional" means.

> I have yet to meet anyone who is faking it and cannot be cracked in 5-10 minutes of carefully-directed prodding. Coding is a skill largely separate from other critical dev skills, e.g. design. Someone can legitimately have deep knowledge of, e.g., how to build a 3-tier service architecture without actually being able to code. This isn't "faking it". It's a different skill. You can study database partitioning strate…

> Coding is a skill largely separate from other critical dev skills, e.g. design.

I do not believe coding is largely separate from engineering. There are, of course, other skills that are necessary or desirable.

> Someone can legitimately have deep knowledge of, e.g., how to build a 3-tier service architecture without actually being able to code. This isn't "faking it". It's a different skill.

Absolutely. It is also a level of skill I would only expect or look for in a position that was not going to be doing daily coding, such as a systems engineer.

> You can ... learn about the latest and greatest frameworks for writing web pages and APIs without ever writing a single line of code.

Here I disagree. If you have never used a framework or API, you don't know it. I don't care that you can regurgitate the Javadocs; I care that you know things like its pitfalls, quirks, and runtime oddities.

> There's actually a decent chance that you'll end up probing for trivia which is not a very useful filter.

To be clear, I abhor trivia-based interviewing. What I am talking about is practical engineering tradeoffs between one course of action versus another, preferably supported by direct personal experience in the past.

> Even if you could probe deeply enough in conversation to expose that they can't code, you could do the same with a few minutes of actual coding. When someone can't code, it becomes clear pretty quickly when you ask them to code.

Exposing the level of competence a five-minute coding problem can is trivial to do in parallel with a deep engineering discussion. In fact, I think some sort of code should be part of that discussion. I just don't think it should be the "implement this" CLRS problem. It should be something two-way, more representative of what the job is like on a daily basis.

Re: Take-home interviews

#283

Earlier quoted context omitted.

But my rent is due the Friday after next and I need to know if I should send out another wave of resumes. It isn't but it strikes me we are looking very hard to find a new way to do things, when the old way was pretty damn good. Sit me down and talk about technology for ~thirty minutes. If I don't have the social skills to successfully do this (minority issue) I likely would not be able to communicate well with a tea…

> I then get a call two days later and can progress with my life. Haha, exactly when was this 'old way' ever reality?

Lol, these are 99% more likely in my experience:

- never hear back

- automated email 3 weeks later

Re: Take-home interviews

#284
post #277

Earlier quoted context omitted.

> I have yet to meet anyone who is faking it and cannot be cracked in 5-10 minutes of carefully-directed prodding. Coding is a skill largely separate from other critical dev skills, e.g. design. Someone can legitimately have deep knowledge of, e.g., how to build a 3-tier service architecture without actually being able to code. This isn't "faking it". It's a different skill. You can study database partitioning strate…

> Coding is a skill largely separate from other critical dev skills, e.g. design. I do not believe coding is largely separate from engineering. There are, of course, other skills that are necessary or desirable. > Someone can legitimately have deep knowledge of, e.g., how to build a 3-tier service architecture without actually being able to code. This isn't "faking it". It's a different skill. Absolutely. It is also…

> I do not believe coding is largely separate from engineering.

I could pick up a cookbook and study how to cook a souffle. I could learn enough about this academically that I could answer basically any questions you might ask. Having this academic knowledge is a good thing, but it doesn't mean I've ever even separated an egg. If you really want to know if I can make a souffle, your best bet is to hand me the stuff and ask me to do it.

> Here I disagree. If you have never used a framework or API, you don't know it. I don't care that you can regurgitate the Javadocs; I care that you know things like its pitfalls, quirks, and runtime oddities.

And here I assert that you're either probing on trivia or probing on things that can be learned without using the framework (actually, probably both). The pitfalls, quirks, and oddities are well documented in thousands of blogs.

> To be clear, I abhor trivia-based interviewing. What I am talking about is practical engineering tradeoffs between one course of action versus another, preferably supported by direct personal experience in the past.*

So this is an entirely different thing than pitfalls. Now you're talking about designing systems and dealing with tradeoffs. This isn't coding, and I don't believe you can always discover coding gaps by probing on this.

> Exposing the level of competence a five-minute coding problem can is trivial to do in parallel with a deep engineering discussion. In fact, I think some sort of code should be part of that discussion.

I guess I'm confused about what you're asking in an interview, then. Are your candidates coding or not?

> It should be something two-way, more representative of what the job is like on a daily basis.

I think it's unrealistic to try to get the candidate to solve real-world, day-to-day problems in an hour. This isn't what the job is like. "Design and implement this feature" is not a 45-minute task typically. It's typically days or weeks, so asking a "representative" problem in an interview is infeasible unless you're just doing high-level design, in which case it's not predictive for coding ability.

Re: Take-home interviews

#285
post #275

Earlier quoted context omitted.

Also: * People who have been on a team long enough to learn how things should work but lack the skills to really do the coding. I phone screened a guy fairly recent who had a very long background (~20 years) in a pretty security-conscious field. He did very well in open-ended design discussions and was able to explain his prior work very well. He couldn't code trivial binary tree operations, though. I can only assume…

I feel like there is some detail missing here. What constituted doing "very well" on the open-ended questions? How deep into the engineering did you get? Since you mentioned he "might be great at a PM-type job" it sounds like you didn't go very deep on int.

That one was a phone screen, so no it was not the deepest technical dive ever. But in fairness a 1-hour interview is rarely the deepest technical dive possible. I normally pose some big problem like "design a system that accomplishes X at high scale" and then drill into some area iteratively until we're discussing fairly specific details. At the high level I'm looking for the candidate to recognize tradeoffs between centralized/distributed designs, sanely choose the major components, deal with stateful and stateless components, recognize security tradeoffs, etc. As we drill in we might talk about data partitioning, georeplication, or high availability and implementation tradeoffs there. We might get down to the level of something like handling out-of-order change notifications. Rarely do I drill down to the level of file I/O or memory management strategies.

Re: Take-home interviews

#286
post #210
post #200

Earlier quoted context omitted.

That's not really a fair comparison though. It would be more like a typical "whiteboard coding" problem needing a couple commits.

I'm not really sure what you mean. We don't know what the task was that he had to solve. I was providing an example of a situation in which 66 commits could be seen as a bad thing. For a typical whiteboard coding problem, I also wouldn't want to see 60+ commits.

I meant saying Fizzbuzz with 66 commits is not a fair comparison to a library having 66 commits.

Re: Take-home interviews

#287

Earlier quoted context omitted.

You've got to be a little careful picking out items from their CV, though, especially if you go back far enough. I barely remember anything I did six months ago, and anything one or two years ago I couldn't explain to you in anything more than a really broad overview, despite being neck deep in the code. I've since moved past that, tackled other projects, stuffed my head full of knowledge of other systems (and hobbie…

If you put it on your resume, its fair game for the interviewer to ask about it.

Not disagreeing with you, but just saying there can be legitimate reasons why they don't have deep knowledge on past projects besides "they're a total charlatan, a liar!" It's probably cost me jobs before, and I try to reflect on and refresh my memory on past jobs as best as I can before interviews usually.

I've even gone over notes I took at a couple of my past jobs, and I don't even remember doing a lot of those things even with it written down in my own handwriting.

Re: Take-home interviews

#288
post #284

Earlier quoted context omitted.

> Coding is a skill largely separate from other critical dev skills, e.g. design. I do not believe coding is largely separate from engineering. There are, of course, other skills that are necessary or desirable. > Someone can legitimately have deep knowledge of, e.g., how to build a 3-tier service architecture without actually being able to code. This isn't "faking it". It's a different skill. Absolutely. It is also…

> I do not believe coding is largely separate from engineering. I could pick up a cookbook and study how to cook a souffle. I could learn enough about this academically that I could answer basically any questions you might ask. Having this academic knowledge is a good thing, but it doesn't mean I've ever even separated an egg. If you really want to know if I can make a souffle, your best bet is to hand me the stuff a…

I think I'm not being clear and may be misunderstanding you.

When I was writing signal processing code, we had four levels of engineering.

- The first was an Algorithm Description Document. This document laid out, in mathematical terms, the algorithms used for various signal processing functions in the system. It was purely conceptual.

- The second was an Algorithm Implentation Document. This document mapped the algorithms to specific parts of the hardware and software system, laying out the logical module structure and data flow. It also specified how the algorithms would be realized in code, since parts of a particular algorithm might need to run in different parts of the system. The AID was still primarily mathematical.

- The third was a series of software design documents. These documents specified the details of module interfaces, code and file layouts, and specifics about what algorithms would be implemented in what functions.

- The fourth was the actual translation of the mathematical algorithms in the AID into actual C code. Most of the engineering at this level dealt with function-level optimization and some platform-specific stuff.

Of those four levels, only the last is what I would consider "coding". It is also the least important. Anyone who can really understand the first three levels and is willing to learn can handle the fourth. As I mentioned previously, there will be differences in efficiency, but not in capability. It would take willful ignorance for this not to be the case. I think this is also what you are considering "coding", but I'm not sure; I also think you might be merging #3 and #4.

Now, most commercial projects do not run this way and, as far as I know, few have dedicated systems engineers to manage the system architecture and APIs. Thus, the software engineers building the system generally perform the work in all four of these levels simultaneously as the system builds out. Despite this, I still only consider the work that fits level 4 to be "coding", and still consider it to be the least important.

What I look for when I interview are engineers who operate very well in levels 1 - 3. If I find that, level 4 is pretty much a given absent the rare pathological case or someone with a very "academic" attitude. The questions I personally ask deal with levels 2 and 3. Those questions cover some of what might be considered coding, like API design and class layout. I do not have candidates actually generate code, though. Some of the other interviewers have candidates write small functions in pseudocode or explain existing, uncommented Java code, though.

I also need to note that we have a take-home test that candidates need to pass before they get an on-site.We have also recently added an open coding challenge which may eventually replace the take-home test. This probably covers your requirement for candidates to code, even though it isn't done in front of one of us.

Re: Take-home interviews

#289
post #49

Earlier quoted context omitted.

Sounds good in theory. But if enough companies started doing this, I can guarantee you that Indian companies will spring that will offer to create an open source project for you for $100 to $1000 depending on complexity of project, and amount of activity the github profile would show. I wish I was kidding.

Same could be said of a take home test. You can outsource it for $100. I doubt it would get you anywhere at a company worth it's salt.

While that is sort of true for a take-home test, there is still value in giving candidates an online or in-person programming task that needs to be completed in a small amount of time (e.g. 1 hour)

Re: Take-home interviews

#290

Earlier quoted context omitted.

I was asked recently by a big company to code some classes in Python, on paper. They then questioned my indentation, syntax, and case-sensitivity multiple times! A valid question, but paper-code?

Hah that is pretty terrible. In fact, I don't think Python is a very good language to code on paper due to the indentation side of things. Maybe graph paper would help?

Maybe! Or just understand it isn't easy for anyone to indent things on paper haha.
Post reply on HN