top | item 7978075

Show HN: Free, anonymous coding interview practice

604 points| leeny | 11 years ago |interviewing.io

215 comments

order
[+] onislandtime|11 years ago|reply
Dear software professional: if you have been rejected because of a coding interview, don't feel bad or discouraged. It has little to do with how smart you are.

Unfortunately, this style of interviews is likely ineffective and leads to hiring people who look alike and have similar skills. Solving a problem with someone looking over your shoulder and forcing you to talk to explain what you are thinking is a skill that I've never seen used in the real world. I'm sure new grads spend a lot of time in classes training for this. Many great people don't function like this and still they may come up with brilliant ideas after a day or a week. Some people have breath of knowledge and study specific topics as needed. Some people can write very well and may not be super fast in tests. I know many brilliant engineers who have been rejected and are doing just fine, building amazing products, and leading teams.

If corporations really wanted a cookie cutter method to evaluate CS knowledge, then they should require a scientifically validated standardized test conducted by a third party. It would be cheaper than using engineers' time. So why don't they do that?

The reality is that they think they are doing more than that but there is no scientific proof that the interview method works. They don't want false positives but they cannot measure efficacy. If you are one of the guys who know how to perform, then you can get hired faster. In some cases if you are an outsider (older, female, different), then your chances of knowing the "secret interview code" is much lower.

[+] robbyking|11 years ago|reply
The analogy I use is a coding interview is like asking a musician to play a specific song; chances are, a classically trained pianist won't know the chords to a specific pop song, but that isn't any indication of their skill as a musician.

The interviews I had with the company I work for now were amazing; they asked me some basic questions to verify my resume wasn't completely BS, then asked me to discuss previous projects I'd worked on, asking questions about technical details on the way. ("Why did you use collection type X in stead of collection type Y?") This allowed them to learn about my real world experience without the risk of asking me about one specific type of problem I may not be familiar with.

[+] akanet|11 years ago|reply
"Solving a problem with someone looking over your shoulder and forcing you to talk to explain what you are thinking" is actually how problems are generally solved in most fields. Software engineering is perhaps one of the lone exceptions, and I think the pair programming movement has a bone or two to pick with your premise.
[+] yarou|11 years ago|reply
They don't want to do this because the secret to making money in IT is creating a glut in the supply of labor for IT workers. When you add licensing (i.e. requiring a license as a doctor or a lawyer does), this creates a barrier to entry, which will cause an upward pressure on wages for IT workers.
[+] leothekim|11 years ago|reply
"Solving a problem with someone looking over your shoulder and forcing you to talk to explain what you are thinking is a skill that I've never seen used in the real world."

I'm often in the position to have to explain my reasoning while developing software. Code reviews and pair-programming come to mind. It's about being able to communicate complexity and being more rigorous about the software development process.

That said, this style of coding interview brings up a level of stress that I'm rarely under at work. It's an unfortunate condition of interviewing, but I don't think it's completely avoidable no matter how comfortable you make the interviewee.

[+] cnp|11 years ago|reply
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.

[+] eric_bullington|11 years ago|reply
I find code interviewing so nerve-wracking that I'm delaying my transition from another profession into a much-desired full-time programming job. I'm 40 and always aced interviews before I did my first coding interview last year. In my prior career, I literally never had an interview that failed to result in an offer.

But I blew my first coding interview both in the interview itself -- in which I repeatedly blanked out and froze -- and in my failure to show the company my best work (they asked what I was hacking on and so I showed them a half-assed blog engine I was rolling using the remnants of another project when I should have shown my more polished work.).

This interview was so bad that I cannot yet bring myself to try it again, despite spending lots of time polishing up on algorithms and data structures. Up to now, I had never experienced performance anxiety of any type -- I did very well on interviews and standardized tests like the GRE. Yet now I'm petrified of programming interviews.

By local standards, I'm a pretty good programmer (by HN standards I'm probably average). And what I lack in knowledge I made up for with enthusiasm and persistence. I've got a bunch of code of varying quality on Github, including small contributions to several very large open source projects and a moderately popular open source project that I created and maintain myself.

I'm also limited by the fact that due to my family situation, I can only consider remote jobs at the moment. But by far my main hurdle is this fear of programming interviews.

I'll definitely be taking a look at this. Maybe this will help be break through my mental block.

[+] SoftwareMaven|11 years ago|reply
Don't feel bad that you blew your first interview. Unfortunately, software interviewing skills are orthogonal to software development skills, and the only time most people get experience with interviews is during the actual interviews (no pressure or anything! :).

As such, you should fully expect to completely blow your first 1/2 dozen interviews (this includes your first 1/2 dozen when changing jobs after a couple of years). Go in with the expectation that you are going to fail. That doesn't mean you shouldn't try, just that you expect to walk out with nothing more than an hour or five behind you. You'll find a couple things happen: first, the pressure to perform will be reduced, so you'll be more comfortable and confident answering questions; second, you'll be able to better analyze where you might have gone wrong on any given interview to perform better next time.

No matter how badly you failed that first interview, you are better off now for having done it and failed than not doing it at all. The same will be true for each future interview until you land that job you want.

[+] chrissnell|11 years ago|reply
I'm right there with you. 39 years old and I've been doing Linux systems administration and writing code since college in the mid 90s. Aced every interview I ever went to up until a couple of years ago. These Google-style coding interviews for systems/operations roles are the death of me and it's a shame. I have deep systems experience and I spend a lot of my spare time coding in Go [1] but I have little formal CS education and my full-time gig does not involve writing code all day, errrr' day. It's so frustrating, these interviews. You want to tell them, "Look, hire me and I will make your infrastructure scaling issues disappear and I'll save you money doing it" but that never happens because they see me get hung up on a sorting algorithm and immediately lose interest.

I'm not looking for a new gig but I'll give their site a shot when I am.

[1] https://github.com/chrissnell?tab=repositories

[+] runamok|11 years ago|reply
It can be all that you described. Very humbling.

My strategy was to start interviewing a lot. Don't go to your "first pick" companies first. Just go to any that look at all interesting as practice. That will take quite a bit of pressure off too. Over the course of 2 or 3 weeks I did phone screens at 20 or so companies and progressed to a code interview on most of those and then about 6 in person interviews which led to 2 offers. I never did get around to trying for my first pick companies because they are famous for dragging their feet and I was currently unemployed.

[+] dreamweapon|11 years ago|reply
Seriously: thanks for sharing. It really takes a lot of courage to post such an honest self-examination like that (even anonymously).
[+] onislandtime|11 years ago|reply
Thank you so much for sharing this. Look at it this way, many companies are missing great talent because of their interviewing practices and for trying to imitate Google or Microsoft. More innovative companies (think Moneyball) can take advantage of this pool of talent and target people like you. I'm trying to think how to make it easier to identify this talent. Any ideas?
[+] peteri|11 years ago|reply
I've just got a new job after around 15 interviews[1], the technical bit I can do, the softer bits (people skills etc) are something that I need to practice and it takes a few interviews.

However I did put quite a bit of effort in revising my basic coding stuff before I hit the interview trail and in general I don't apply to places I really want to work at until after I've managed to get a few trial runs under my belt.

I wouldn't sweat the freezing I've done the same thing when someone asked me a question about stuff that's on my CV but no other interviewer had bothered to ask about. It should get better.

[1] some failed at phone interview, others at face to face

[+] general_failure|11 years ago|reply
This looks great.

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.

[+] CaveTech|11 years ago|reply
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.

[+] elq|11 years ago|reply
>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...

[+] cnp|11 years ago|reply
Exactly my thinking as well.

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.

[+] 10098|11 years ago|reply
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?
[+] justinpaulson|11 years ago|reply
'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.

[+] learc83|11 years ago|reply
None of my engineer friends have ever had a Google style technical interview. What makes software so different?

You don't ask an electrical engineer to layout a complicated PCB on a whiteboard, you don't have a civil engineer build a bridge out of popsicle sticks.

Surely hiring an incompetent electrical engineer is just as bad as hiring an incompetent software engineer, but from talking to the EEs I know, they just get asked basic questions or go over past projects--nothing nearly as stressful as a coding interview.

If other industries can get by without them, whiteboard technical interviews must not be as necessary as they're made out to be. It seems to me they are just a damaging fad. I think the high stress technical interview could even be one of the factors contributing to the software monoculture.

[+] keppy|11 years ago|reply
Well if your job resembles writing on a whiteboard, solving problems, then they should make sure you can do that in the interview. Try going through some problems on a white board you'll probably enjoy it more than you assume!
[+] saganus|11 years ago|reply
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?

[+] leeny|11 years ago|reply
great feedback, will fix. thank you!
[+] Swizec|11 years ago|reply
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

[+] capkutay|11 years ago|reply
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"
[+] akanet|11 years ago|reply
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.
[+] nawitus|11 years ago|reply
>First and foremost, if you're trying to get better at technical interviews, the best way to do that is to actually do it.

So to fix problems with signaling there should more signaling and even more wasted hours?

[+] gejjaxxita|11 years ago|reply
Coding interview practice is absolutely key. I recently began interviewing for the first time with a number of companies (I'm about to graduate). I noticed that over the course of a month and 3 interviews with 3 separate companies my interviewing skills had increased hugely.

The 4th company I interviewed at had a very different perception of me than the 1st because of the month's practice, even though I had essentially the same technical skills. Coding interviews test "coding interview ability" rather than "coding ability", unfortunately the other ways (Github, aptitude tests etc..) have their own problems.

[+] gourneau|11 years ago|reply
I have had Aline Lerner reach out to me as a recruiter before. She is one of the best. She worked hard to find great matches.
[+] leeny|11 years ago|reply
ohai josh! thanks!
[+] 10098|11 years ago|reply
I can easily see the benefit it provides for the interviewees, but what's in it for the interviewers?
[+] ernestipark|11 years ago|reply
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.
[+] michaelt|11 years ago|reply
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.
[+] grogenaut|11 years ago|reply
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.
[+] scrabble|11 years ago|reply
States on the page that it is possible to hire people that you interview anonymously. So it could be a good source of people.
[+] ThrustVectoring|11 years ago|reply
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.
[+] europa|11 years ago|reply
Interviewer can be the person responsible for hiring in a corporation/startup. He/She can hire the interviewee. This is a win win!
[+] thomasmann|11 years ago|reply
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?"

So this could actually be very good for me :)

[+] Centigonal|11 years ago|reply
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?

[+] leeny|11 years ago|reply
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!).
[+] columbo|11 years ago|reply
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.

[+] pbhjpbhj|11 years ago|reply
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?
[+] leeny|11 years ago|reply
thanks. i really hope it is too!

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.

[+] Phlow|11 years ago|reply
Whiteboard coding problems are absolute garbage. I recently had a remote code problem where I was given a Visual Studio IDE (albeit minus Resharper) and absolutely killed it.

If I'm going to be challenged to write code in front of you, give me the tools I use every day, let me use the resources I use to solve problems efficiently (which btw can include StackOverflow) and you will get a much better picture of me. I don't write perfect code the moment it's written. Often I will mentally acknowledge something needs further thought and my brain will revisit it, sometimes days later, sometimes after multiple iterations. I'm fastidious about those types of things, and as a result I can realistically say I write some of the best and least buggy code in my company. I'm also very good at theorizing about problems and debugging, which is never looked at in an interview.

I guarantee you should hire me, but how can I show you that, and how can you gain confidence in that?

[+] gtani|11 years ago|reply
(if you have to submit to a memorization-based screen) I didn't see source materials to review for canonical algos/data structures questions. The 2 books by McDowell and Guiness ("Ace the interview" and "Crack the interview" ) are good, along with

http://algorithmsandme.blogspot.com/p/blog-page_27.html

https://news.ycombinator.com/item?id=7477095

https://news.ycombinator.com/item?id=7827048

http://www.quora.com/Which-are-the-frequently-asked-intervie...

I could put up alist for math for ML/data science as well)

[+] yeureka|11 years ago|reply
This looks very interesting. I have been through a lot of interviews in the past, with small and large companies and now being in charge of hiring developers I try to make the experience as friendly and as efficient as possible. I hate white-board coding interviews because of the pressure of doing it in front of a stranger, and I choose not to have that in our company. But I do ask technical questions related to the job and I give as much time as the candidate needs to complete a very simple coding test ( fizzbuzz type ) on his/her own in a private office free of distractions and other people.

Unfortunately there are people with amazing cv's who can't solve simple problems or who can't explain what they have done in previous projects.

Interviewing is hard and there are a lot of biases at play but it needs to be done.

[+] keppy|11 years ago|reply
Reflections on whiteboarding:

Lately I have realized that I use google a lot less than I did in the past. I don't have to look things up as much, thus I have seen gains in speed when working on some functionality. The interesting part is that coding/reasoning without google feels a lot like whiteboarding. In fact I get into the same 'mental patterns' when solving a problem I don't need google for that I feel when brushing up on algorithm problems at the white board.

I don't come from long history of math rigor. I don't have a mathy degree at all and have hardly used a whiteboard in front of any professors or math nerds. But I'm also not an imbecile; computer science is built upon a foundation of mathematics and if you aren't willing to play ball then get off the fucking field.