Things you should know when interviewing for a programming job(crossbrowser.net) |
Things you should know when interviewing for a programming job(crossbrowser.net) |
If you ask the interviewer about their turnover rate and they hedge, be cautious. Sometimes they won't know what the turnover rate is because they're too new, or don't pay attention to it, so you can ask about the average number of years that the developers have been there (which they should know).
There are so many factors that figure in to developer happiness that it's hard to build a good checklist of things to ask about. But if you look at the evidence (how long do developers stay here?), it's very easy to tell if it's going to be a good place to work.
Of course, this doesn't work when you're talking about getting a job at a startup, but the hope there would be that you already know it's somewhere you want to work; that it's not a job that someone referred you to just because you need a job.
Maybe they don't pay enough, or have too many deathmarch projects, or office politics gets in the way too often, or maybe a few rounds of layoffs
Regardless, if a lot of people have left before you, there might be a reason for that, or at least it will have a factor in your environment there. (Example: A recent round of layoffs might mean a 3 person department is asked to do the work once handled by a department of 10)
I'd be suspicious of a departmnt with a turnover rate around 6 months, sure, but if it was 5 years I'd be equally worried, because unless working for that company was the shit then I'd be concerned with the kind of developers the company had hired in the past and what kind of culture such a bunch of unambitious seat-warmers had developed, and I'd be expected to fit into.
This was a question I used to ask my consulting clients to get a feel for what sort of department I was going to be walking in to. The higher turnover places always had the worst development practices in place (or none at all, like a complete free-for-all), and the places with less developer turnover tended to have fewer people focused on guaranteeing themselves job security & more people focused on efficiency.
One thing I was never prepared for was the sheer number of people who just lie on their CVs! After somewhat reluctantly starting to ask senior app developer and web developer applicants to write a fizzbuzz program, I was shocked to see that less than half could. This is from a group of people who claimed to be experts.
Since that discovery a couple of weeks ago, I've been building an automated grading system similar to the great FB's old puzzlemaster app. That way I can screen out those who can't do fizzbuzz and another trivial program or two before wasting our one iPhone dev's time interviewing them.
Those who do at least decently do get a chance to interview, but I'm hoping to add more puzzles to the auto-grader in the hopes of spotting applicants with stronger skills than is clear from their interviews. Any suggestions?
Write a simulator for lottery number drawings.
Write a basic cash register API that keeps track of a total balance as well as denominations. Bonus points if it makes change appropriately (largest bills first).
These sound idiotic, but someone who can't do FizzBuzz probably can't do these either.
And many, many more.
That link is useless to me since the site is in English and nearly all my applicants are Chinese who don't have the language skills to read it. Throwing 200 weak applicants at it would just be a waste of $600USD/month.
Make some flash cards with datastructures on them and use them to try and recall as many of their useful properties as you can (eg: Binary Heap, binary tree with x constraints, O(n) search, O(log n) insert in worst case; etc).
The advice in the article about honestly answering, "I don't know," is key -- don't pretend to know. You'll get called out and blow the interview. Instead, explain what you do know and think out loud when you walk through the problem with them (or how you'd go about solving it).
One way I've practiced "thinking out loud" is to get a white board and pretend you're a professor. Try to explain the solution to some problem you are familiar with in layman's terms to your pretend audience -- but do it out loud. Then find a problem online that you're not familiar with and do the same thing. Pretend you're a professor or engineer or some sort of brilliant person and walk through the problem with yourself -- out loud. Write diagrams on the board, explain your every step to your pretend audience, and really get into it. I found it helped me quite a bit and I frequently use the technique to walk through problems I'm not familiar with in my own studies.
This.
I'd never done "whiteboard testing," and I still hate it, but a lot of people use it apparently. I remember the first time having to do it, and I was so focused on the white board, and having my back turned to the interviewer, and just the odd sensation of everything (not to mention very little sleep the night before) that I was drawing blanks on the most basic of questions.
Either way, isn't it strange that the best advice for doing well at interviewing is to practice. Practice so you become better at interviewing, not necessarily better at your job.
I don't understand this advice, if I say I expect 'at least X', then it's me coming up with the number, not them. I have always just said I'll comment on what is offered.
i.e. Dev A has everything but costs 20% more than Dev B, who I think can pick up everything we need within a year's time. Or, Dev C has claimed to have done all of these different things, but is asking for an amount that is suspiciously low.
I think it's very important to reduce the tension level, because if you're asking someone a question intended to show how they think and reason, especially with some level of creativity, you risk getting a useless answer if they're tense and antsy. Nervousness and pressure often kill creative thinking: this is well-established.
Knowing what dev process they use, tools, etc are all really good questions. But don't forget that the money they pay your salary with comes from somewhere. Knowing this internal information is just as important as knowing how Git works.
The possible pitfalls are endless for both the interviewer and the interviewee.
And sometimes the interviewer will bomb the interview more than you. You don't see people often write about making sure the person doing the interview is any good at it.
Getting good people is really important. Possibly one of the most important things you can do for a business.
Do you eat lunch together? Is dress always this casual? How often do you refresh your equipment? How often do people work in groups vs solo? Do you encourage working in pairs? How geographically distributed are project teams, typically? Do people take personal calls at their desks? How do you manage shared resources like conference rooms? At my last job, everyone stood up and belted show tunes for a 1/2 hour at tea--do you have such a program?
A bad place to work can actually be fun for a while, if you have good coworkers. It can be a bonding experience, a rite of passage, friendships forged in the fires of mt doom etc. But indifferent management and ashen-faced zombie coworkers determined to cling to their mediocre jobs until they rot to death in their seats? It's a different type of poison, but just as deadly ..
What is the incentive of the recruiter to tell you the truth? What if he says: "Everthing's great!!!", you can't really hold him accountable after you signed up for the job. They're salesmen. Is the idea to look for subtle indications of not everything being great?
Do you need to know if they can write parameterized queries in SQL? Do you need to know if they can do simple web crawling or scraping? String manipulation? Or do they need to know how to do linked lists, hashes and binary searches?
I think you'd do better if, rather than making them redo old CS assignments, you focused on job-relevant tests.
They're only partially translated, and unfortunately the quality of those translations has been spotty from what I've heard others here in Beijing say.