I love this! Too many of my friends who are great engineers melt down completely when faced with an actual interview for various reasons.
But I do wonder if I could put this to use in freelancing as well. Sometimes clients, especially early-stage startups, go for a very normal-technical-interview approach to hiring freelancers
Good idea! It leapfrogs the scores of existing "code interview practice tools" that give you a problem and a text editor and do some auto-validation on your answer by providing a human element. Something like this seems like a more relevant kind of practice.
How does the business model here work? Are interviewers paid? Are you planning on eventually expanding into recruiting?
hey, good question. right now, interviewers aren't paid, but that may change. re business model, ultimately, i'd like to have this platform be something companies can use to find candidates rather than relying on proxies like pedigree (or resume, for that matter!).
This is very interesting. This is one of the few actual disruptions that I've seen in the interviewing/hiring space.
One small issue: I don't know what I'm getting into when I join the waiting list. I understand what the site is about, if I join will I suddenly be asked to take an interview next Friday? It would be nice to know a little more about the process.
re what you're getting, i'll update the copy, but all that's gonna happen is that you'll get an email with an invite once we're ready for more users. nothing will ever be scheduled without your permission, and of course, no one will ever get your info.
A walkthrough video would be nice. I've never had a "technical interview" and don't know what it entails, for example. Should there maybe be a pre-testing phase to weed out those who could simply not approach the level that could pass the technical interview?
I always crack when it comes to algorithm type question. I am aware of some of the run of the mill ones like, write a palindrome detector, bubble sort.
However, I still can't figure out the crazy hard ones like:
In a pyramid of numbers, write an algorithm to find the path to the biggest sum. Write a method to produce pascal's triangle. Given a grid, where X = wall, O = space, write an algorithm to figure how big the room is and so on....
My biggest gripe is knowing that these type of questions will kick my ass and not being able to prepare because you are already supposed to know this from your comp sci courses, which I've never been to as I have been self taught through making my own software, and learning as I went along.
If you're a naturally competitive sort of person, you should try doing TopCoder and Google Code Jam. I also skipped formal CS education and when I was roughly at your level of ability I found that doing TopCoder SRMs in particular taught me a nice toolbox of common approaches to algorithmic problems.
tree of numbers -> keep track of the sum as you work your way down the branch. every visit to a node, check if that sum of the parent plus your current node is larger your your current max. if it is, replace your max, keep traversing your tree.
I think this site is ignoring the value add for the interviewers as well. Interviewing others is a skill and takes practice and dedication. Many people just take some coding question and ask a candidate without thinking it through much and what they're actually analyzing. It would be good practice for interviewers as well.
You mean like: they could allow a third person to watch/listen the interview and at the end of it, rate the interviewer and give suggestions for improvement?
Every interview you run has positive expected value - you get better at the process, and it may end up in a positive-value hire. If you've got low opportunity-cost time, this is a great tool for consuming it.
I can see it as good for practicing for the interviewer. It'd also be good if I could easily make an offer out and use that as a way of sourcing candidates and getting my referral bonus on.
The intellectual challenge is a baited hook for headhunting people who aren't looking for work, so aren't actively applying for jobs or answering cold calls.
This is a very interesting discussion. Would love to hear your thoughts on our London based startup www.Prehash.com which is going in a similar direction. Companies can host organization specific coding challenges on our website and developers apply by solving them. There is no time limit for developers and no one is looking over your shoulder. The only thing is that each time you run the test we take a snapshot in a github repo. Any feedback is welcome! Cheers.
I would like to know how it is different from the likes of different website which seemingly do the same thing - HackerRank, Codility, HackerEarth etc., Mind explaining what is it that you are planning to do different?
Hi bleak,
Prehash helps companies to attract and engage with developers through coding challenges.
Codility is a pure code testing site IMHO. HackerEarth according to crunchbase provides a SaaS application to do automated assessment of technical and logical skills of candidates
HackerRank is going more in our direction with coding challenges to engage with and find candidates as opposed to testing them.
hmm, so audio is closer to what you'd get in the wild, ultimately making for more indicative practice. logging it might be useful down the line, though, in some format (provided users agree to that)!
I really wish this had existed a year ago when I panicked during an interview. Having this type of practice is ideal in my mind for any type of technical role.
I, too, am curious about sustaining this service though. Have you considered offering tiers for participants?
As minor feedback, it would be great if the "How it works" section actually contained how it works info.
I only see 3 steps that look more like facts than actual "how's". Totally free fully anonymous and interviewers from top companies. How does that explain how it works?
I would prefer something like:
1) Signup
2) List all available interviewers (or interviews, or subjects or something)
3) Select one, schedule it
4) Have an interview
5) See results!
Or something like that.
I have found that when you use a question as a webpage, blog or other text, it's really good when you actually answer said question instead of not. Or don't use a question as a section title perhaps?
I would be much more interested in this neat idea if I had a better way of evaluating it I had more info.
Edit: For example, can I select interviews by subject? or by interviewer ex-employer, or by level (basic, advanced, etc) or is it random? Can I rate the interviewer as well?
I'm absolutely one of these people who melt down. Give me a task and leave the room and I'm on it, but while being watched I loose all ability to think, which I think has a lot to do with the fact that I never went to college and jumped right into the industry directly after high school essentially bypassing a very important skill you learn there: test taking.
Two weeks ago the position of my dreams -- literally, exactly what I wanted to do, and at a totally rad and well-regarded company -- vanished during my second interview after (what I believe) was a killer and detailed coding challenge submission (which we discussed at length) and an excellent first interview.
Why?
Function.apply -- LOL
"Describe event delegation" -- LOL
Stuff you learn during DAY ONE of JavaScript coding (I've been programming for over ten years in a number of languages, and have built many, many large-scale applications). It was absolutely humiliating, and I'm still recovering from it in the worst of ways. My brain just froze up completely.
Thanks for putting the site up because I'm sure there are many people that will benefit. I've got an interview at Amazon at 3pm and those are notoriously difficult; wish it were already live and running! I'm not looking forward to it.
Not to be a downer, but Amazon isn't that great of a company to work for in the grand scheme of tech companies. Very few perks for engineers and penny pinching on workstations, monitors, etc. It really starts to wear on you after a while and you feel like nothing more than a 'necessary cost'.
Dude, if you're that passionate about that job you just described then I'd suggest calling the company up and explaining what happened. Having interviewed many people I'd certainly be open to giving someone a second chance if they explained a situation like yours to me.
After the second interview I had an entire email written out that I was going to send to their lead, but honestly, given that the app that they asked me to develop prior to the interview was well done, detailed, commented and modern, complete with a PR flow that me and one of their devs went through via GitHub, I felt that if they were willing to pass due to me obviously locking up on a Skype + Google-Doc shared whiteboard, and on the most basic of JavaScript skills (which were clearly elaborated upon within the project), then it wasn't the right fit anyways.
"I felt that if they were willing to pass due to me obviously locking up on a Skype + Google-Doc shared whiteboard, and on the most basic of JavaScript skills (which were clearly elaborated upon within the project)"
Or it could be a simple miscommunication, or they thought somebody else done the app given your performance on the interview. Reaching out and asking will cost you little compared to potential windfall.
Exactly. I mean, it would take a fairly skeptical person to think that you submitted someone else's code but maybe they just weren't willing to take the risk.
Either way, I think you've nothing to lose by sending that mail/picking up the phone. Regardless of the doubts the interviewer may have in you post-interview they'll know that everybody is prone to a bad day every once in a while.
For those interviewers and candidates looking for a better solution than the "google doc shared whiteboard" - I suggest checking out a product I make: https://coderpad.io/
You can think of it as a much higher fidelity Stypi, Etherpad, Collabedit, etc, except that you can run the code in the browser as you write it. It really helps alleviate the choking sensation of being asked to write out an entire problem on a whiteboard without any of the modern affordances we've come to know and love.
Yeah, this actually did seem to lead to some confusion, which was the first bad sign. Google Docs obviously doesn't know how to format code, and the indentation was getting messy during the typing process leading me to have to break, think, fix indentation, resume thought, then answer to the questioner about my "preference for three spaces or two"... ? It was an obscene process that could have definitely been refined by your app and possibly led to a better outcome.
You wrote that? I love that site! I actually saw it for the first time last week when a company I was interviewing with used it as part of the interview process.
I loved how smooth and fluid it made the whole process, that they could switch between languages during the interview and the rewind functionality.
I blew a technical phone screen with Zynga and not only did the interviewer not respond to any of my follow ups, the in house recruiter actually blocked my calls. Radio silence seems to be fairly standard after deciding to reject a candidate.
It's also Zynga, though. They've gotten flak before for not being the most considerate toward their employees. Maybe that attitude extends to candidates as well?
Pretty much the same thing happened to me a year ago, I was at an onsite interview, did really well 4 out of the 5 rounds, but 1 round I just completely choked some basic linked list question and looked like an idiot.
These days I skip all interviews which require me to code in the interview. I have plenty of open source code, if they cannot figure how good I am looking at, then they definitely cannot figure how good I am with a 3 hour coding interview.
IMO, coding interviews is like public speaking. Many people get nervous in front of a crowd. It's a skill one has to obtain should it be required. Coding interviews are quite irrelevant for a programmer/developer position.
Dig in, look around, its obvious what I can do, and what I'm capable of learning.
Ask me to code a sample app and comment every function with detailed explanations of my thought process.
Add me as a collaborator to GitHub and request that I make some pull requests on your product.
Live coding interviews are more irrelevant than irrelevant and completely ignore the fact that many people -- and especially introverted technical types -- just don't do well in front of groups.
Coding interviews don't ignore any facts - they are simply often the best signal/time tool available. Many people do not have time to root around in your personal repositories or wait for you to commit pull requests. They have a pipeline of people they need to screen, and you can't wait on everyone in a pool of candidates to take their sweet time before deciding on a winner.
Technical screens are synchronous and relatively well understood. If they are not the literally BEST choice of time for figuring out if someone is a good developer, they are at least a very defensible choice.
For me, even worse than an in person interview is a remote coding interview over the phone. Usually some sort of screen sharing + phone call.
I find it incredibly nerve wracking because it gives me that feeling of someone standing over my shoulder without me being able to fully interact with them or read their body language. When you sit down to hammer out a solution you have all the additional pressure of trying to stay engaged with someone you can't see. As a result I constantly drop my focus on the problem and lose what I've worked out in my head.
Worse, you simply have no way of knowing what their evaluation criteria are.
Maybe they want you to be slow and thorough (I've been nailed for not checking the exit status of print statements). OR maybe they want it quick and dirty, in which case you'll get nailed for "overengineering", or you just wont have time to do it the imaginary time frames they set for these tasks, if you go for any of the defensive practices that the other guy would have nailed you for. Fun, fun, fun.
Very much yes. In an interview I was prompted to write some code that ran as quickly as possible. 10 minutes in they were concerned that I hadn't started with a naive proof-of-concept solution and improved from there. I don't disagree with their idea of good programming practice, but how could I know they wouldn't penalize me for coming up with a slow naive solution, when the prompt specifically said to run as quickly as possible?
And you have the ever fun "I'm not worried about whether it compiles", followed up with endless "you forgot a semi-colon", "you didn't declare that variable", and so on.
With someone else staring at the screen seeing every letter as I type it there have been cases where I become paralyzed and my mind goes blank on problems that I could have easily solved on my own (without resorting to Stack Overflow, of course).
It's a combination of nerves and needing to suppress a part of my natural coding process that occasionally involves a brief frenzy of guess-and-checking and pattern recognition to get my bearings on possible solutions. That part of the process is unconscious and intuitive, kind of like how athletes don't think about what they are doing. If I slow down to consciously relay those early steps of the process it breaks the spell/flow and I go blank.
I think the problem is that I have a habit of letting rapid ad-hoc intuition guide my coding, rather than being a rational agent following a pre-planned 'waterfall'. In-the-moment intuition somehow (surprisingly) produces nicely workable and even readable code much of the time, but also entails some amnesia about the steps I took along the way. I occasionally have doubts - am I built to be an engineer? By nature I am a very logical person, why can't I always conceive of a whole answer (or at least a clear direction) before "putting pen to paper"? Working memory deficiency? ADHD? Lack of practice? However, my doubts about programming potential are quelled when my friends and I look at the code I can write and the problems I have solved.
Practice makes perfect as they say. I really look forward to using this service.
>I have plenty of open source code, if they cannot figure how good I am looking at...
I've interviewed several people with lots of code on github and what looks like lots of accepted pull requests to many projects who still can't seem to reason through a problem described as "write a function that takes two unsorted lists and returns one sorted list".
I think I'll continue asking technical/coding questions...
I would say this is actually a very important part of interviewing. When given vague requirements, see how they respond. Building something that is technically correct isn't as good as building what you actually want.
In elementary school when you were learning to do algebra did you say, "that problem has been solved id google it?" To learn you have to do the basics before you can do the advanced stuff.
Thanks autokad. base698 has the right interpretation: My response was the smarmy answer I have given in interview situations where I just felt rebellious against the energy of interviewer combined with the test questions. I actually agree with base698. An understanding of the basics is required. And the companies I've coded for - for long periods of time, and loved working at - figured out I knew the basics based on our conversations alone. I hire people without testing. It has not backfired yet. I have also tested others in the past, had people pass the test, only come on board to be dangerous to production environments.
I'd give the candidate some minutes to Google the problem, but then I'd want a solution and a good explanation. (Explaining other people's code is hard, too.)
If someone asks me to code/problem solve in an interview these days, I don't even bother to try, I just pretend to try and answer the question to see their reaction, because by that point I've already lost interest in the position. It's the equivalent of a shit-test, so I like to turn the tables around and see how they react instead.
I do this for many reasons, one of which, is they obviously weren't interested enough in my talents to throughly research me before the interview to assess my skill-set, which means, they weren't that interested in hiring me to begin with. I don't want to work for someone who is just slamming through interviews for talent; I'll bow out. I want to work for someone who is specifically interested in working with me and understands my skill-set before hand. The second reason, I don't deal with these questions is that I don't like to be put on the spot without my normal working environment, I feel at a disadvantage and uncomfortable. Keep in mind most developers are introverts.
I consider a good interview to be about people; not technicals, which can be referenced/refered or looked up; they should provide a medium to see if the employee is a comfortable fit. If goals and motives align. To talk history and such.
I do not think your attitude or position are indicative of the majority of developers. They also require a huge time investment up front by the interviewer. Even if your individual Github profile (or whatever) is organized, comprehensible, and relevant, it doesn't say anything about the vast majority of developers whose profiles are largely scattered, obtuse, and frankly not even representative of their own work.
If you are a recognized leader in a particular field your situation is obviously different, but you can't expect me as a interviewer looking for a web developer making a mostly standard CRUD app to have the time to delve into your personal history and divine your technical expertise without asking you about it.
Oddly enough, people lie, unknown references can be bullshit.
The cost of hiring someone who is incompetent is high. High enough that companies generally make several attempts at finding and filtering people that might be incompetent. I don't think anyone who interviews programmers actually believes the standard technical interview process is fun or necessarily even accurate, but there's nothing else as low cost to implement that works better.
Further, someone who treated a technical problem in an engineering interview as a "shit test" would be walked out at any company I've interviewed for... Good luck with that!
I can't really explain it. It was a puzzle to all of the interviewers.
The only reasonable hypothesis I have where I assume the candidate was honest is that the quality of the code in his github profile is largely due to help from others.
The only reason I can do well in one of these interviews is because I recently started writing poor patch code for websites.
In development, who would do design, code and review on only one change in a straight sequence? It is like asking half your brain to shut down and the gods to smite you.
Or that they are bad with on-the-spot-questions-with-short-time-limit-while-every-move-under-scrutiny-by-potential-employer situations ... Which usually only ever happen in interviews.
I wonder if those people you're talking about just froze in the interview process, like others in this thread have mentioned doing?
Presumably it's possible to distinguish people who interview badly from people who lie on their résumé. The question is "How?" Followed by "How many interviewers know how to do this?"
The interviewers in these loops are generally quite introverted themselves, I know I certainly am. I believe we are sensitive to people who are the same and cut them slack.
My goal when interviewing someone is to determine if they will, on net, add more lift or more drag. If someone is so nervous that they can't communicate, they (sadly) will almost certainly not be able to demonstrate this.
Luckily, there are personal referrals. A strong engineer who interviews very poorly but has good first hand references will be given MUCH more slack.
What is the correct answer to this? Let's try a little experiment.. I've never heard this question before, so I'm in the same boat as a naive interviewer right now. Let me elaborate my thought process.
"H'm, this looks a bit like mergesort, where you take two sorted sublists and form a bigger sorted list. So...sort the sublists using mergesort, then call the merging algorithm? (compare the heads of the two lists, and form the bigger list)"
This would be the answer I'd start giving. Tell me if it corresponds even remotely with what your idea of a correct answer is, or what points would you deduct from if it is incorrect. Off the top of my head, I'm not sure I'd be able to write the exact python code for this that covers all edge cases in less than 15 minutes.
We try very hard to NOT ask questions that have only one correct answer, and my team only interviews/hires senior people. So my approach to interviewing might be different than someone who's interviewing a fresh grad.
I treat all questions as conversational. The direction the question goes depends on where I (or other prior interviewers) think more evidence is needed.
For example: merge sort is an answer that satisfies the conditions of the problem. Given that, I would decide if I need more evidence about your ability to code, if so I'd ask you to implement merge sort; I might want more evidence on how you explain things, so I would pretend that I didn't know what merge sort was and ask you to give me a description of it.
I'm curious, what kind of a solution are you looking for with that problem? The trivial solution of concatenating the lists and then using a library sort (or cobbling together quicksort) is about as good as it gets for small lists.
For large lists, the best you can do is copy the lists into an array, use a parallel n * log n array sort, then fix the pointers.
The problem doesn't seem to require any real thought. It is difficult to make optimizations because the problem isn't especially well defined and the optimal asymptotic performance is obvious the moment the word "sorted" is uttered.
You can do better by taking advantage of the fact that the lists are already sorted. O(n1 + n2) time, where n1 and n2 are the sizes of the original lists and O(n1 + n2) space for the output.
The "trick" is to iteratively merge your two lists: at each step you select the smallest of the two items you're at in both lists then move forward on the list whose item you picked.
An extension to this problem (I've asked, and been asked, many variations of this) is to merge K sorted lists of N items each. The naive solution is to merge them all together and sort but you can do better if you extend the algorithm above from 2 lists to K and choose a helpful intermediate data structure to optimize the "select the smallest of the K items" operation. AFAIK, all-up the best you can do then is O(NKlog[K]).
EDIT: Re-read the question, realized I read "unsorted" as "sorted" - not sure what you can do to merge two unsorted lists in better than O(Nlog[N]) time beyond non-comparison-based sorts where you make assumptions about the range or distribution of your input (radix/counting/bucket sorts).
Yeah, when the lists are sorted, you need the intuition that you can merge two sorted lists in less than n * log n time. Like you say, the best you can do for merging several sorted lists is (sum of lengths) * log(# of lists).
Yeah, having public github repos is great, but it doesn't scale when the company has a bunch of candidates waiting AND the interviewers have some other work to get done.
Also, don't forget that communication is a part of the job too. If you're so introverted that you can't reason your way through a 45-minute problem that has a clearly defined "good" answer, how are we going to discuss designs for an actual system?
'It's a skill one has to obtain should it be required.'
Public speaking is something you really should take the time to get good at. I think you are greatly underestimating the importance of communication skills in the workplace...even for developers.
Great...so when everyone does this and becomes good at technical interviews, SV companies will find some other meaningless, high pressure method to screen job candidates. "Steal a bone from this agitated rottweiler while you recite every other fibonacci number up to 20"
I think this is an extremely pessimistic view of what is likely to happen. Being good at interviewing (on both the candidate and interviewer side) doesn't mean that you get jobs you aren't qualified for, it means presenting a more accurate picture of your skills or what the job is. Anything that moves us in that direction is probably good.
I was thinking about posting "Ask HN: Interview me" since I don't have many interview opportunities in my corner of the world and wanted to find out how good you guys think I am.
If anyone wants to test out their interview skills with me, we could set up a meet over at talky.io and discuss some C# or js. Mail address is in my profile.
I'm very scared of interviewing. I'm 29 and actually never got a job by interviewing and only had 1 interview in my life. It was kinda awful and the lady that interviewed me explained me how I was failing, which I understood but can't improve just by will alone. I also have big troubles on how oral communication implies a deadline (answer quickly or look bad)... I enjoy emails much more than the phone
She said I had to sell my skills much more, instead of strictly answering questions and then waiting for the next one in silence. I felt like a sociopath with no people skills.. I'm kinda shy guy that doesn't do well with strangers, or bigger groups. From my readings online, this is very common with anxious people or introverts.
In the interview there wasn't a group but there was the "this person can control my destiny" pressure, which is also irrational (you can always get another job).
Another things that affects me is impostor syndrome: selling myself feels like lying.
Also the crap unanswerable questions like "What's your biggest flaw?"
There's a lot to an interview besides just coding questions. Interacting with an actual interviewer lets you get all of the human interactions, talk in-between problems, using problems to showcase talent, etc... all this stuff I'm told I should do but have no idea how to actually do, basically.
I like this in concept. It's like how major symphony orchestras hire, put a curtain up between the performer and the judges so that the performer is never seen and is assessed solely on the merits of their performance. Interesting to see how it might play out in practice through this site.
222 comments
[ 2.8 ms ] story [ 247 ms ] threadBut I do wonder if I could put this to use in freelancing as well. Sometimes clients, especially early-stage startups, go for a very normal-technical-interview approach to hiring freelancers
How does the business model here work? Are interviewers paid? Are you planning on eventually expanding into recruiting?
One small issue: I don't know what I'm getting into when I join the waiting list. I understand what the site is about, if I join will I suddenly be asked to take an interview next Friday? It would be nice to know a little more about the process.
re what you're getting, i'll update the copy, but all that's gonna happen is that you'll get an email with an invite once we're ready for more users. nothing will ever be scheduled without your permission, and of course, no one will ever get your info.
I always crack when it comes to algorithm type question. I am aware of some of the run of the mill ones like, write a palindrome detector, bubble sort.
However, I still can't figure out the crazy hard ones like:
In a pyramid of numbers, write an algorithm to find the path to the biggest sum. Write a method to produce pascal's triangle. Given a grid, where X = wall, O = space, write an algorithm to figure how big the room is and so on....
My biggest gripe is knowing that these type of questions will kick my ass and not being able to prepare because you are already supposed to know this from your comp sci courses, which I've never been to as I have been self taught through making my own software, and learning as I went along.
I, too, am curious about sustaining this service though. Have you considered offering tiers for participants?
I only see 3 steps that look more like facts than actual "how's". Totally free fully anonymous and interviewers from top companies. How does that explain how it works?
I would prefer something like:
1) Signup 2) List all available interviewers (or interviews, or subjects or something) 3) Select one, schedule it 4) Have an interview 5) See results!
Or something like that.
I have found that when you use a question as a webpage, blog or other text, it's really good when you actually answer said question instead of not. Or don't use a question as a section title perhaps?
I would be much more interested in this neat idea if I had a better way of evaluating it I had more info.
Edit: For example, can I select interviews by subject? or by interviewer ex-employer, or by level (basic, advanced, etc) or is it random? Can I rate the interviewer as well?
Two weeks ago the position of my dreams -- literally, exactly what I wanted to do, and at a totally rad and well-regarded company -- vanished during my second interview after (what I believe) was a killer and detailed coding challenge submission (which we discussed at length) and an excellent first interview.
Why?
Function.apply -- LOL
"Describe event delegation" -- LOL
Stuff you learn during DAY ONE of JavaScript coding (I've been programming for over ten years in a number of languages, and have built many, many large-scale applications). It was absolutely humiliating, and I'm still recovering from it in the worst of ways. My brain just froze up completely.
Thanks for putting the site up because I'm sure there are many people that will benefit. I've got an interview at Amazon at 3pm and those are notoriously difficult; wish it were already live and running! I'm not looking forward to it.
Or it could be a simple miscommunication, or they thought somebody else done the app given your performance on the interview. Reaching out and asking will cost you little compared to potential windfall.
Either way, I think you've nothing to lose by sending that mail/picking up the phone. Regardless of the doubts the interviewer may have in you post-interview they'll know that everybody is prone to a bad day every once in a while.
You can think of it as a much higher fidelity Stypi, Etherpad, Collabedit, etc, except that you can run the code in the browser as you write it. It really helps alleviate the choking sensation of being asked to write out an entire problem on a whiteboard without any of the modern affordances we've come to know and love.
I loved how smooth and fluid it made the whole process, that they could switch between languages during the interview and the rewind functionality.
These days I skip all interviews which require me to code in the interview. I have plenty of open source code, if they cannot figure how good I am looking at, then they definitely cannot figure how good I am with a 3 hour coding interview.
IMO, coding interviews is like public speaking. Many people get nervous in front of a crowd. It's a skill one has to obtain should it be required. Coding interviews are quite irrelevant for a programmer/developer position.
Dig in, look around, its obvious what I can do, and what I'm capable of learning.
Ask me to code a sample app and comment every function with detailed explanations of my thought process.
Add me as a collaborator to GitHub and request that I make some pull requests on your product.
Live coding interviews are more irrelevant than irrelevant and completely ignore the fact that many people -- and especially introverted technical types -- just don't do well in front of groups.
Technical screens are synchronous and relatively well understood. If they are not the literally BEST choice of time for figuring out if someone is a good developer, they are at least a very defensible choice.
I find it incredibly nerve wracking because it gives me that feeling of someone standing over my shoulder without me being able to fully interact with them or read their body language. When you sit down to hammer out a solution you have all the additional pressure of trying to stay engaged with someone you can't see. As a result I constantly drop my focus on the problem and lose what I've worked out in my head.
Maybe they want you to be slow and thorough (I've been nailed for not checking the exit status of print statements). OR maybe they want it quick and dirty, in which case you'll get nailed for "overengineering", or you just wont have time to do it the imaginary time frames they set for these tasks, if you go for any of the defensive practices that the other guy would have nailed you for. Fun, fun, fun.
2. Actually evaluate them on that.
Anything else is a psychology test, and you aren't psychologists.
It's a combination of nerves and needing to suppress a part of my natural coding process that occasionally involves a brief frenzy of guess-and-checking and pattern recognition to get my bearings on possible solutions. That part of the process is unconscious and intuitive, kind of like how athletes don't think about what they are doing. If I slow down to consciously relay those early steps of the process it breaks the spell/flow and I go blank.
I think the problem is that I have a habit of letting rapid ad-hoc intuition guide my coding, rather than being a rational agent following a pre-planned 'waterfall'. In-the-moment intuition somehow (surprisingly) produces nicely workable and even readable code much of the time, but also entails some amnesia about the steps I took along the way. I occasionally have doubts - am I built to be an engineer? By nature I am a very logical person, why can't I always conceive of a whole answer (or at least a clear direction) before "putting pen to paper"? Working memory deficiency? ADHD? Lack of practice? However, my doubts about programming potential are quelled when my friends and I look at the code I can write and the problems I have solved.
Practice makes perfect as they say. I really look forward to using this service.
I've interviewed several people with lots of code on github and what looks like lots of accepted pull requests to many projects who still can't seem to reason through a problem described as "write a function that takes two unsorted lists and returns one sorted list".
I think I'll continue asking technical/coding questions...
poorly specified questions are very important to ask IMHO :)
Chill, he said 'so'. i think he was just saying he looked up the answer but that persons answer was faster
I do this for many reasons, one of which, is they obviously weren't interested enough in my talents to throughly research me before the interview to assess my skill-set, which means, they weren't that interested in hiring me to begin with. I don't want to work for someone who is just slamming through interviews for talent; I'll bow out. I want to work for someone who is specifically interested in working with me and understands my skill-set before hand. The second reason, I don't deal with these questions is that I don't like to be put on the spot without my normal working environment, I feel at a disadvantage and uncomfortable. Keep in mind most developers are introverts.
I consider a good interview to be about people; not technicals, which can be referenced/refered or looked up; they should provide a medium to see if the employee is a comfortable fit. If goals and motives align. To talk history and such.
If you are a recognized leader in a particular field your situation is obviously different, but you can't expect me as a interviewer looking for a web developer making a mostly standard CRUD app to have the time to delve into your personal history and divine your technical expertise without asking you about it.
i do agree though interviews should be more focused on soft skills and not technical, even for technical jobs.
The cost of hiring someone who is incompetent is high. High enough that companies generally make several attempts at finding and filtering people that might be incompetent. I don't think anyone who interviews programmers actually believes the standard technical interview process is fun or necessarily even accurate, but there's nothing else as low cost to implement that works better.
Further, someone who treated a technical problem in an engineering interview as a "shit test" would be walked out at any company I've interviewed for... Good luck with that!
merge_sorted(list1.sort(), list2.sort())
The only reasonable hypothesis I have where I assume the candidate was honest is that the quality of the code in his github profile is largely due to help from others.
In development, who would do design, code and review on only one change in a straight sequence? It is like asking half your brain to shut down and the gods to smite you.
Presumably it's possible to distinguish people who interview badly from people who lie on their résumé. The question is "How?" Followed by "How many interviewers know how to do this?"
My goal when interviewing someone is to determine if they will, on net, add more lift or more drag. If someone is so nervous that they can't communicate, they (sadly) will almost certainly not be able to demonstrate this.
Luckily, there are personal referrals. A strong engineer who interviews very poorly but has good first hand references will be given MUCH more slack.
"H'm, this looks a bit like mergesort, where you take two sorted sublists and form a bigger sorted list. So...sort the sublists using mergesort, then call the merging algorithm? (compare the heads of the two lists, and form the bigger list)"
This would be the answer I'd start giving. Tell me if it corresponds even remotely with what your idea of a correct answer is, or what points would you deduct from if it is incorrect. Off the top of my head, I'm not sure I'd be able to write the exact python code for this that covers all edge cases in less than 15 minutes.
I treat all questions as conversational. The direction the question goes depends on where I (or other prior interviewers) think more evidence is needed.
For example: merge sort is an answer that satisfies the conditions of the problem. Given that, I would decide if I need more evidence about your ability to code, if so I'd ask you to implement merge sort; I might want more evidence on how you explain things, so I would pretend that I didn't know what merge sort was and ask you to give me a description of it.
I'd ignore the fact that there were initially 2 lists and just concatinate them and sort. I.e sort(unsorted1 + unsorted2)
For large lists, the best you can do is copy the lists into an array, use a parallel n * log n array sort, then fix the pointers.
The problem doesn't seem to require any real thought. It is difficult to make optimizations because the problem isn't especially well defined and the optimal asymptotic performance is obvious the moment the word "sorted" is uttered.
The "trick" is to iteratively merge your two lists: at each step you select the smallest of the two items you're at in both lists then move forward on the list whose item you picked.
An extension to this problem (I've asked, and been asked, many variations of this) is to merge K sorted lists of N items each. The naive solution is to merge them all together and sort but you can do better if you extend the algorithm above from 2 lists to K and choose a helpful intermediate data structure to optimize the "select the smallest of the K items" operation. AFAIK, all-up the best you can do then is O(NKlog[K]).
EDIT: Re-read the question, realized I read "unsorted" as "sorted" - not sure what you can do to merge two unsorted lists in better than O(Nlog[N]) time beyond non-comparison-based sorts where you make assumptions about the range or distribution of your input (radix/counting/bucket sorts).
Work they'd otherwise be doing during the 3-hour coding interview?
2) if they're doing something not related to your interview during your interview, you don't want to work with them anyway
Public speaking is something you really should take the time to get good at. I think you are greatly underestimating the importance of communication skills in the workplace...even for developers.
I was thinking about posting "Ask HN: Interview me" since I don't have many interview opportunities in my corner of the world and wanted to find out how good you guys think I am.
If anyone wants to test out their interview skills with me, we could set up a meet over at talky.io and discuss some C# or js. Mail address is in my profile.
The video could occasionally say "Are you sure you want to do that?".
So to fix problems with signaling there should more signaling and even more wasted hours?
EDIT It seems to crash in the background if you have a "+" in your email address.
She said I had to sell my skills much more, instead of strictly answering questions and then waiting for the next one in silence. I felt like a sociopath with no people skills.. I'm kinda shy guy that doesn't do well with strangers, or bigger groups. From my readings online, this is very common with anxious people or introverts.
In the interview there wasn't a group but there was the "this person can control my destiny" pressure, which is also irrational (you can always get another job).
Another things that affects me is impostor syndrome: selling myself feels like lying.
Also the crap unanswerable questions like "What's your biggest flaw?"
So this could actually be very good for me :)