How to recruit software developers in an age where everybody studies for the interview?
As a recruiter, I find it increasingly hard to recruit good software developers, due to the fact that it has become very easy to simply study for a job interview by reading any of those 14020 job interview questions for the software developer! books that are immensely popular these days.
It's gotten to the point where you pretty much can't ask a question without the applicant already having pre-studied at least a version of that same task and hence knows, roughly, what the solution is.
Now, this would of course not be a problem if knowledge of those problems is what we are looking for ... except, that isn't what we are looking for. Nobody cares if you know how to apply quicksort to some contrived, made-up example. The point isn't that you know how to solve those problems, the point is that you can figure it out. It's problem-solvers that we want, not problem-memorizers.
Because, once you actually get the job, you'll most likely never run into any of those problems from the job interview book again, so it's not your ability to memorize their solutions that matters, it's your ability to come up with a solution on the spot that is valuable. And yet, that is no longer testable, due to all these memorizers that read interview questions over and over.
How do we fix this issue? Because I am frankly tired of hiring promising software developers who answer each question perfectly in job interview questions, and then when you actually see them code in a real-world situation, you realize how little they actually know.
software-industry recruitment
New contributor
add a comment |
As a recruiter, I find it increasingly hard to recruit good software developers, due to the fact that it has become very easy to simply study for a job interview by reading any of those 14020 job interview questions for the software developer! books that are immensely popular these days.
It's gotten to the point where you pretty much can't ask a question without the applicant already having pre-studied at least a version of that same task and hence knows, roughly, what the solution is.
Now, this would of course not be a problem if knowledge of those problems is what we are looking for ... except, that isn't what we are looking for. Nobody cares if you know how to apply quicksort to some contrived, made-up example. The point isn't that you know how to solve those problems, the point is that you can figure it out. It's problem-solvers that we want, not problem-memorizers.
Because, once you actually get the job, you'll most likely never run into any of those problems from the job interview book again, so it's not your ability to memorize their solutions that matters, it's your ability to come up with a solution on the spot that is valuable. And yet, that is no longer testable, due to all these memorizers that read interview questions over and over.
How do we fix this issue? Because I am frankly tired of hiring promising software developers who answer each question perfectly in job interview questions, and then when you actually see them code in a real-world situation, you realize how little they actually know.
software-industry recruitment
New contributor
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago
add a comment |
As a recruiter, I find it increasingly hard to recruit good software developers, due to the fact that it has become very easy to simply study for a job interview by reading any of those 14020 job interview questions for the software developer! books that are immensely popular these days.
It's gotten to the point where you pretty much can't ask a question without the applicant already having pre-studied at least a version of that same task and hence knows, roughly, what the solution is.
Now, this would of course not be a problem if knowledge of those problems is what we are looking for ... except, that isn't what we are looking for. Nobody cares if you know how to apply quicksort to some contrived, made-up example. The point isn't that you know how to solve those problems, the point is that you can figure it out. It's problem-solvers that we want, not problem-memorizers.
Because, once you actually get the job, you'll most likely never run into any of those problems from the job interview book again, so it's not your ability to memorize their solutions that matters, it's your ability to come up with a solution on the spot that is valuable. And yet, that is no longer testable, due to all these memorizers that read interview questions over and over.
How do we fix this issue? Because I am frankly tired of hiring promising software developers who answer each question perfectly in job interview questions, and then when you actually see them code in a real-world situation, you realize how little they actually know.
software-industry recruitment
New contributor
As a recruiter, I find it increasingly hard to recruit good software developers, due to the fact that it has become very easy to simply study for a job interview by reading any of those 14020 job interview questions for the software developer! books that are immensely popular these days.
It's gotten to the point where you pretty much can't ask a question without the applicant already having pre-studied at least a version of that same task and hence knows, roughly, what the solution is.
Now, this would of course not be a problem if knowledge of those problems is what we are looking for ... except, that isn't what we are looking for. Nobody cares if you know how to apply quicksort to some contrived, made-up example. The point isn't that you know how to solve those problems, the point is that you can figure it out. It's problem-solvers that we want, not problem-memorizers.
Because, once you actually get the job, you'll most likely never run into any of those problems from the job interview book again, so it's not your ability to memorize their solutions that matters, it's your ability to come up with a solution on the spot that is valuable. And yet, that is no longer testable, due to all these memorizers that read interview questions over and over.
How do we fix this issue? Because I am frankly tired of hiring promising software developers who answer each question perfectly in job interview questions, and then when you actually see them code in a real-world situation, you realize how little they actually know.
software-industry recruitment
software-industry recruitment
New contributor
New contributor
New contributor
asked 4 hours ago
Indu
341
341
New contributor
New contributor
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago
add a comment |
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago
add a comment |
7 Answers
7
active
oldest
votes
Provide the candidate with a genuine programming test in the interview - a laptop hooked up to a projector with a broken project, with a mixture of basic to complex bugs, and ask them to add some functionality, again ranging from basic to moderately complex. This is something nobody can really study for and will actually provide a showcase of their skills. Have technical people there talking to the candidate to get a feel for their personality and how they approach the problems faced.
For the job interview for my current role, I had spent 2 weeks studying programming principles, design patterns, database stuff etc. I was able to answer all the theoretical questions well and think I came across well
I was then handed a laptop which was connected up to the projector and shown a solution which contained a broken website with a defined number of errors which I had to debug and add some simple functionality. While I wasn't very familiar with the front-end framework used by the company, I was able to fix about half the bugs and then give my best guess as to what the causes were for the remaining bugs based on what I could see, and this was good enough to get me in the door.
The whole thing, between the theoretical questions and the website debugging session lasted about 2 hours.
add a comment |
Use Whiteboard interviews, and ask problems which are related to the skills and business domain that you're interested in. Look for people that you can work with, even if they aren't perfect matches for the position, because you can always train the right person if they have potential. Ask existing employees for recommendations (and offer a finders-fee)
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
add a comment |
Welcome new user, I've come to believe that the only way to hire software engineers is
- Just hire and pay them for a week or two on a project.
I think that's it.
It's the only way to know.
Everything else is useless.
The amount of time/money you'll spend on the sundry alternatives ... might as well just put them on the job for a week.
(Depending on your style and project, you might hire 'em for a time period (a week) or some "task" for $x. Either way.)
If you consistently take this approach, you'll likely find after a year or two that, the money you wasted doing this approach, was indeed far less than the sundry other costs of search and hiring.
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
add a comment |
After getting through enough basic questions to show that they have some minimal (by my needs) ability to write code, I move on to the tougher part of the interview, based on two subject areas, their work and my work.
Ask for information about a recent project at their current job. Even with respect to NDAs and IP restrictions, they should be able to explain the business problem, the complexity of the problems and how they overcame them. If they can't explain their own work to me so that I can understand and evaluate, then I worry about how successful they will be.
Ask them to white board a design/solution to one of your current problems. The expectation should not be a working solution but how they approach the problem. Provide enough information that they have a high level scope for the problem. They should ask good questions, and you should provide good answers so they can proceed. They should be able to sketch out some sort of solution. In the end their solution may not work out, but you will be able to see how they work on a problem and whether or not they should be able to work on the projects you will have.
add a comment |
Have multiple interviewers. Your strongest engineers on the team should participate in the interview process - they definitely want to work with people better than the one's that are struggling, right?
Ask an open ended design question. for a problem of medium complexity. Ask the candidate to write out the header file, class declarations, box diagrams, etc... Does the candidate ask clarifying questions? After he's done with a basic design, introduce a new requirement that would break his design. Is he able to pivot? Pick one part of his design and probe deeper.
Ask a question that probes if they have a deep understanding of the platform fundamentals. Some examples I've asked.
- "How does the C++ compiler implement virtual methods?"
- "How do closures work in Javascript?"
- "Explain when you would ever want to use UDP instead of TCP."
- "After you type a www.foo.com into a browser address bar, tell me about all the network activity and protocols involved to get the content on the screen."
Probe for genuine interest in programming. "Tell me about a program you wrote for fun that wasn't for work or school." A good candidate will tell you about an app, website, or hack that he did for his own personal pleasure. A weaker candidate will only tell you about the program he wrote to figure something out for work/school.
add a comment |
In some ways, studying for the interview is a good thing. You probably already ask that people study about four years in a University to prepare for the interview.
Now, if your interviewing process is scripted, and the script lacks any kind of variation, then it is just a matter of time before the answers become memorized in the population. Solutions include:
- As questions that are generated, with variable fields that require the work to be done specific to this asking of the question.
- Change the question set from time to time, to minimize the time to build the pool of answers.
- Change the entire approach, giving them a trivial project with specifically added bugs, asking them to fix it and add a known feature.
Also, consider the problem in the larger sense, if you are asking for information in an interview, and the information was memorized, then that should be an ideal candidate, unless you are asking for the wrong information.
You are deciding that the information isn't what is wanted, so you might be able to fix the problem by asking for the right kind of information.
add a comment |
Simply. You just grill the applicants on the implementation details and change requirements on them to see how they respond. Make them use what they've memorized as building blocks.
To be frank, problem memorizing isn't an issue. Memorization is actually one of the key techniques chess players use to learn the game. By memorizing algorithms your applicants are developing a library of solutions from which to work from. This means that they'll be able to solve problems better in the future, if the patterns and implementation of the patterns they're learning are actually useful.
What you need to test is that last part. By varying the problem in real time you get to see how well the applicant actually understands how to use what they've memorized. This means that you can ask them about better ways to solve the question and you can even ask them to compose their solution into a work flow to do something completely different.
What you want is someone who can solve problems. What you don't want is someone who solves problems the way you want to see them solved. If everyone's memorizing solutions, all you need to do is test their ability to use what they've memorized. When it comes down to it, everyone uses what they know to break down what they don't know. If your devs can use patterns they've already mastered to break down problems of increasing complexity, then they would have been able to reverse a linked list if they've never seen anyone do it before.
As a recruiter, this is as far as you can reasonably be expected to go without trying to get free labor out of your applicants.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "423"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: false,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Indu is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f125402%2fhow-to-recruit-software-developers-in-an-age-where-everybody-studies-for-the-int%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
StackExchange.ready(function () {
$("#show-editor-button input, #show-editor-button button").click(function () {
var showEditor = function() {
$("#show-editor-button").hide();
$("#post-form").removeClass("dno");
StackExchange.editor.finallyInit();
};
var useFancy = $(this).data('confirm-use-fancy');
if(useFancy == 'True') {
var popupTitle = $(this).data('confirm-fancy-title');
var popupBody = $(this).data('confirm-fancy-body');
var popupAccept = $(this).data('confirm-fancy-accept-button');
$(this).loadPopup({
url: '/post/self-answer-popup',
loaded: function(popup) {
var pTitle = $(popup).find('h2');
var pBody = $(popup).find('.popup-body');
var pSubmit = $(popup).find('.popup-submit');
pTitle.text(popupTitle);
pBody.html(popupBody);
pSubmit.val(popupAccept).click(showEditor);
}
})
} else{
var confirmText = $(this).data('confirm-text');
if (confirmText ? confirm(confirmText) : true) {
showEditor();
}
}
});
});
7 Answers
7
active
oldest
votes
7 Answers
7
active
oldest
votes
active
oldest
votes
active
oldest
votes
Provide the candidate with a genuine programming test in the interview - a laptop hooked up to a projector with a broken project, with a mixture of basic to complex bugs, and ask them to add some functionality, again ranging from basic to moderately complex. This is something nobody can really study for and will actually provide a showcase of their skills. Have technical people there talking to the candidate to get a feel for their personality and how they approach the problems faced.
For the job interview for my current role, I had spent 2 weeks studying programming principles, design patterns, database stuff etc. I was able to answer all the theoretical questions well and think I came across well
I was then handed a laptop which was connected up to the projector and shown a solution which contained a broken website with a defined number of errors which I had to debug and add some simple functionality. While I wasn't very familiar with the front-end framework used by the company, I was able to fix about half the bugs and then give my best guess as to what the causes were for the remaining bugs based on what I could see, and this was good enough to get me in the door.
The whole thing, between the theoretical questions and the website debugging session lasted about 2 hours.
add a comment |
Provide the candidate with a genuine programming test in the interview - a laptop hooked up to a projector with a broken project, with a mixture of basic to complex bugs, and ask them to add some functionality, again ranging from basic to moderately complex. This is something nobody can really study for and will actually provide a showcase of their skills. Have technical people there talking to the candidate to get a feel for their personality and how they approach the problems faced.
For the job interview for my current role, I had spent 2 weeks studying programming principles, design patterns, database stuff etc. I was able to answer all the theoretical questions well and think I came across well
I was then handed a laptop which was connected up to the projector and shown a solution which contained a broken website with a defined number of errors which I had to debug and add some simple functionality. While I wasn't very familiar with the front-end framework used by the company, I was able to fix about half the bugs and then give my best guess as to what the causes were for the remaining bugs based on what I could see, and this was good enough to get me in the door.
The whole thing, between the theoretical questions and the website debugging session lasted about 2 hours.
add a comment |
Provide the candidate with a genuine programming test in the interview - a laptop hooked up to a projector with a broken project, with a mixture of basic to complex bugs, and ask them to add some functionality, again ranging from basic to moderately complex. This is something nobody can really study for and will actually provide a showcase of their skills. Have technical people there talking to the candidate to get a feel for their personality and how they approach the problems faced.
For the job interview for my current role, I had spent 2 weeks studying programming principles, design patterns, database stuff etc. I was able to answer all the theoretical questions well and think I came across well
I was then handed a laptop which was connected up to the projector and shown a solution which contained a broken website with a defined number of errors which I had to debug and add some simple functionality. While I wasn't very familiar with the front-end framework used by the company, I was able to fix about half the bugs and then give my best guess as to what the causes were for the remaining bugs based on what I could see, and this was good enough to get me in the door.
The whole thing, between the theoretical questions and the website debugging session lasted about 2 hours.
Provide the candidate with a genuine programming test in the interview - a laptop hooked up to a projector with a broken project, with a mixture of basic to complex bugs, and ask them to add some functionality, again ranging from basic to moderately complex. This is something nobody can really study for and will actually provide a showcase of their skills. Have technical people there talking to the candidate to get a feel for their personality and how they approach the problems faced.
For the job interview for my current role, I had spent 2 weeks studying programming principles, design patterns, database stuff etc. I was able to answer all the theoretical questions well and think I came across well
I was then handed a laptop which was connected up to the projector and shown a solution which contained a broken website with a defined number of errors which I had to debug and add some simple functionality. While I wasn't very familiar with the front-end framework used by the company, I was able to fix about half the bugs and then give my best guess as to what the causes were for the remaining bugs based on what I could see, and this was good enough to get me in the door.
The whole thing, between the theoretical questions and the website debugging session lasted about 2 hours.
edited 3 hours ago
answered 3 hours ago
user1666620
9,41273234
9,41273234
add a comment |
add a comment |
Use Whiteboard interviews, and ask problems which are related to the skills and business domain that you're interested in. Look for people that you can work with, even if they aren't perfect matches for the position, because you can always train the right person if they have potential. Ask existing employees for recommendations (and offer a finders-fee)
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
add a comment |
Use Whiteboard interviews, and ask problems which are related to the skills and business domain that you're interested in. Look for people that you can work with, even if they aren't perfect matches for the position, because you can always train the right person if they have potential. Ask existing employees for recommendations (and offer a finders-fee)
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
add a comment |
Use Whiteboard interviews, and ask problems which are related to the skills and business domain that you're interested in. Look for people that you can work with, even if they aren't perfect matches for the position, because you can always train the right person if they have potential. Ask existing employees for recommendations (and offer a finders-fee)
Use Whiteboard interviews, and ask problems which are related to the skills and business domain that you're interested in. Look for people that you can work with, even if they aren't perfect matches for the position, because you can always train the right person if they have potential. Ask existing employees for recommendations (and offer a finders-fee)
answered 3 hours ago
PeteCon
14.2k43857
14.2k43857
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
add a comment |
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
3
3
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
Pete, I fear that OP is indeed talking about whiteboard-type problems!
– Fattie
3 hours ago
2
2
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
@Fattie - Yep - but a good thing with whiteboard interviews rather than take-away coding tests is that you can change the parameters halfway through the question to throw a spanner in the works
– PeteCon
3 hours ago
add a comment |
Welcome new user, I've come to believe that the only way to hire software engineers is
- Just hire and pay them for a week or two on a project.
I think that's it.
It's the only way to know.
Everything else is useless.
The amount of time/money you'll spend on the sundry alternatives ... might as well just put them on the job for a week.
(Depending on your style and project, you might hire 'em for a time period (a week) or some "task" for $x. Either way.)
If you consistently take this approach, you'll likely find after a year or two that, the money you wasted doing this approach, was indeed far less than the sundry other costs of search and hiring.
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
add a comment |
Welcome new user, I've come to believe that the only way to hire software engineers is
- Just hire and pay them for a week or two on a project.
I think that's it.
It's the only way to know.
Everything else is useless.
The amount of time/money you'll spend on the sundry alternatives ... might as well just put them on the job for a week.
(Depending on your style and project, you might hire 'em for a time period (a week) or some "task" for $x. Either way.)
If you consistently take this approach, you'll likely find after a year or two that, the money you wasted doing this approach, was indeed far less than the sundry other costs of search and hiring.
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
add a comment |
Welcome new user, I've come to believe that the only way to hire software engineers is
- Just hire and pay them for a week or two on a project.
I think that's it.
It's the only way to know.
Everything else is useless.
The amount of time/money you'll spend on the sundry alternatives ... might as well just put them on the job for a week.
(Depending on your style and project, you might hire 'em for a time period (a week) or some "task" for $x. Either way.)
If you consistently take this approach, you'll likely find after a year or two that, the money you wasted doing this approach, was indeed far less than the sundry other costs of search and hiring.
Welcome new user, I've come to believe that the only way to hire software engineers is
- Just hire and pay them for a week or two on a project.
I think that's it.
It's the only way to know.
Everything else is useless.
The amount of time/money you'll spend on the sundry alternatives ... might as well just put them on the job for a week.
(Depending on your style and project, you might hire 'em for a time period (a week) or some "task" for $x. Either way.)
If you consistently take this approach, you'll likely find after a year or two that, the money you wasted doing this approach, was indeed far less than the sundry other costs of search and hiring.
answered 3 hours ago
Fattie
6,94531324
6,94531324
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
add a comment |
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
4
4
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
Hopefully you mean as an off-hours contract project. Or as a final check after a meaningful selection process. Otherwise routinely making your selection only after bringing people onboard as employees is terrible for all concerned - it's expensive of both money and on-boarding effort, and it means often asking people to leave an existing job for a very uncertain alternative.
– Chris Stratton
3 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
I mean .. we do pretty well, Chris? Regarding your idea that it's "expensive" - it's incredibly cheap. (No need to copy and paste what I wrote in the answer.)
– Fattie
2 hours ago
3
3
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
This may require that the candidate quit his or her current job to try out yours. This may not be bad if you want to hire from the unemployed only, but you're leaving some very promising people wondering "Why should I (quit my job/spend a full week of time off) just to interview?".
– David Thornley
1 hour ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
Do you tell your candidates what the process is up front? I would never accept a job offer that said "We don't want to rigorously interview you, we'll just let you work for us for a couple of weeks, and if you're not exactly what we're looking for, you're out the door". That is a huge risk to ask an employee to take, particularly if they have to quit their existing job first.
– asgallant
3 mins ago
add a comment |
After getting through enough basic questions to show that they have some minimal (by my needs) ability to write code, I move on to the tougher part of the interview, based on two subject areas, their work and my work.
Ask for information about a recent project at their current job. Even with respect to NDAs and IP restrictions, they should be able to explain the business problem, the complexity of the problems and how they overcame them. If they can't explain their own work to me so that I can understand and evaluate, then I worry about how successful they will be.
Ask them to white board a design/solution to one of your current problems. The expectation should not be a working solution but how they approach the problem. Provide enough information that they have a high level scope for the problem. They should ask good questions, and you should provide good answers so they can proceed. They should be able to sketch out some sort of solution. In the end their solution may not work out, but you will be able to see how they work on a problem and whether or not they should be able to work on the projects you will have.
add a comment |
After getting through enough basic questions to show that they have some minimal (by my needs) ability to write code, I move on to the tougher part of the interview, based on two subject areas, their work and my work.
Ask for information about a recent project at their current job. Even with respect to NDAs and IP restrictions, they should be able to explain the business problem, the complexity of the problems and how they overcame them. If they can't explain their own work to me so that I can understand and evaluate, then I worry about how successful they will be.
Ask them to white board a design/solution to one of your current problems. The expectation should not be a working solution but how they approach the problem. Provide enough information that they have a high level scope for the problem. They should ask good questions, and you should provide good answers so they can proceed. They should be able to sketch out some sort of solution. In the end their solution may not work out, but you will be able to see how they work on a problem and whether or not they should be able to work on the projects you will have.
add a comment |
After getting through enough basic questions to show that they have some minimal (by my needs) ability to write code, I move on to the tougher part of the interview, based on two subject areas, their work and my work.
Ask for information about a recent project at their current job. Even with respect to NDAs and IP restrictions, they should be able to explain the business problem, the complexity of the problems and how they overcame them. If they can't explain their own work to me so that I can understand and evaluate, then I worry about how successful they will be.
Ask them to white board a design/solution to one of your current problems. The expectation should not be a working solution but how they approach the problem. Provide enough information that they have a high level scope for the problem. They should ask good questions, and you should provide good answers so they can proceed. They should be able to sketch out some sort of solution. In the end their solution may not work out, but you will be able to see how they work on a problem and whether or not they should be able to work on the projects you will have.
After getting through enough basic questions to show that they have some minimal (by my needs) ability to write code, I move on to the tougher part of the interview, based on two subject areas, their work and my work.
Ask for information about a recent project at their current job. Even with respect to NDAs and IP restrictions, they should be able to explain the business problem, the complexity of the problems and how they overcame them. If they can't explain their own work to me so that I can understand and evaluate, then I worry about how successful they will be.
Ask them to white board a design/solution to one of your current problems. The expectation should not be a working solution but how they approach the problem. Provide enough information that they have a high level scope for the problem. They should ask good questions, and you should provide good answers so they can proceed. They should be able to sketch out some sort of solution. In the end their solution may not work out, but you will be able to see how they work on a problem and whether or not they should be able to work on the projects you will have.
answered 2 hours ago
cdkMoose
10.4k22146
10.4k22146
add a comment |
add a comment |
Have multiple interviewers. Your strongest engineers on the team should participate in the interview process - they definitely want to work with people better than the one's that are struggling, right?
Ask an open ended design question. for a problem of medium complexity. Ask the candidate to write out the header file, class declarations, box diagrams, etc... Does the candidate ask clarifying questions? After he's done with a basic design, introduce a new requirement that would break his design. Is he able to pivot? Pick one part of his design and probe deeper.
Ask a question that probes if they have a deep understanding of the platform fundamentals. Some examples I've asked.
- "How does the C++ compiler implement virtual methods?"
- "How do closures work in Javascript?"
- "Explain when you would ever want to use UDP instead of TCP."
- "After you type a www.foo.com into a browser address bar, tell me about all the network activity and protocols involved to get the content on the screen."
Probe for genuine interest in programming. "Tell me about a program you wrote for fun that wasn't for work or school." A good candidate will tell you about an app, website, or hack that he did for his own personal pleasure. A weaker candidate will only tell you about the program he wrote to figure something out for work/school.
add a comment |
Have multiple interviewers. Your strongest engineers on the team should participate in the interview process - they definitely want to work with people better than the one's that are struggling, right?
Ask an open ended design question. for a problem of medium complexity. Ask the candidate to write out the header file, class declarations, box diagrams, etc... Does the candidate ask clarifying questions? After he's done with a basic design, introduce a new requirement that would break his design. Is he able to pivot? Pick one part of his design and probe deeper.
Ask a question that probes if they have a deep understanding of the platform fundamentals. Some examples I've asked.
- "How does the C++ compiler implement virtual methods?"
- "How do closures work in Javascript?"
- "Explain when you would ever want to use UDP instead of TCP."
- "After you type a www.foo.com into a browser address bar, tell me about all the network activity and protocols involved to get the content on the screen."
Probe for genuine interest in programming. "Tell me about a program you wrote for fun that wasn't for work or school." A good candidate will tell you about an app, website, or hack that he did for his own personal pleasure. A weaker candidate will only tell you about the program he wrote to figure something out for work/school.
add a comment |
Have multiple interviewers. Your strongest engineers on the team should participate in the interview process - they definitely want to work with people better than the one's that are struggling, right?
Ask an open ended design question. for a problem of medium complexity. Ask the candidate to write out the header file, class declarations, box diagrams, etc... Does the candidate ask clarifying questions? After he's done with a basic design, introduce a new requirement that would break his design. Is he able to pivot? Pick one part of his design and probe deeper.
Ask a question that probes if they have a deep understanding of the platform fundamentals. Some examples I've asked.
- "How does the C++ compiler implement virtual methods?"
- "How do closures work in Javascript?"
- "Explain when you would ever want to use UDP instead of TCP."
- "After you type a www.foo.com into a browser address bar, tell me about all the network activity and protocols involved to get the content on the screen."
Probe for genuine interest in programming. "Tell me about a program you wrote for fun that wasn't for work or school." A good candidate will tell you about an app, website, or hack that he did for his own personal pleasure. A weaker candidate will only tell you about the program he wrote to figure something out for work/school.
Have multiple interviewers. Your strongest engineers on the team should participate in the interview process - they definitely want to work with people better than the one's that are struggling, right?
Ask an open ended design question. for a problem of medium complexity. Ask the candidate to write out the header file, class declarations, box diagrams, etc... Does the candidate ask clarifying questions? After he's done with a basic design, introduce a new requirement that would break his design. Is he able to pivot? Pick one part of his design and probe deeper.
Ask a question that probes if they have a deep understanding of the platform fundamentals. Some examples I've asked.
- "How does the C++ compiler implement virtual methods?"
- "How do closures work in Javascript?"
- "Explain when you would ever want to use UDP instead of TCP."
- "After you type a www.foo.com into a browser address bar, tell me about all the network activity and protocols involved to get the content on the screen."
Probe for genuine interest in programming. "Tell me about a program you wrote for fun that wasn't for work or school." A good candidate will tell you about an app, website, or hack that he did for his own personal pleasure. A weaker candidate will only tell you about the program he wrote to figure something out for work/school.
answered 2 hours ago
selbie
75128
75128
add a comment |
add a comment |
In some ways, studying for the interview is a good thing. You probably already ask that people study about four years in a University to prepare for the interview.
Now, if your interviewing process is scripted, and the script lacks any kind of variation, then it is just a matter of time before the answers become memorized in the population. Solutions include:
- As questions that are generated, with variable fields that require the work to be done specific to this asking of the question.
- Change the question set from time to time, to minimize the time to build the pool of answers.
- Change the entire approach, giving them a trivial project with specifically added bugs, asking them to fix it and add a known feature.
Also, consider the problem in the larger sense, if you are asking for information in an interview, and the information was memorized, then that should be an ideal candidate, unless you are asking for the wrong information.
You are deciding that the information isn't what is wanted, so you might be able to fix the problem by asking for the right kind of information.
add a comment |
In some ways, studying for the interview is a good thing. You probably already ask that people study about four years in a University to prepare for the interview.
Now, if your interviewing process is scripted, and the script lacks any kind of variation, then it is just a matter of time before the answers become memorized in the population. Solutions include:
- As questions that are generated, with variable fields that require the work to be done specific to this asking of the question.
- Change the question set from time to time, to minimize the time to build the pool of answers.
- Change the entire approach, giving them a trivial project with specifically added bugs, asking them to fix it and add a known feature.
Also, consider the problem in the larger sense, if you are asking for information in an interview, and the information was memorized, then that should be an ideal candidate, unless you are asking for the wrong information.
You are deciding that the information isn't what is wanted, so you might be able to fix the problem by asking for the right kind of information.
add a comment |
In some ways, studying for the interview is a good thing. You probably already ask that people study about four years in a University to prepare for the interview.
Now, if your interviewing process is scripted, and the script lacks any kind of variation, then it is just a matter of time before the answers become memorized in the population. Solutions include:
- As questions that are generated, with variable fields that require the work to be done specific to this asking of the question.
- Change the question set from time to time, to minimize the time to build the pool of answers.
- Change the entire approach, giving them a trivial project with specifically added bugs, asking them to fix it and add a known feature.
Also, consider the problem in the larger sense, if you are asking for information in an interview, and the information was memorized, then that should be an ideal candidate, unless you are asking for the wrong information.
You are deciding that the information isn't what is wanted, so you might be able to fix the problem by asking for the right kind of information.
In some ways, studying for the interview is a good thing. You probably already ask that people study about four years in a University to prepare for the interview.
Now, if your interviewing process is scripted, and the script lacks any kind of variation, then it is just a matter of time before the answers become memorized in the population. Solutions include:
- As questions that are generated, with variable fields that require the work to be done specific to this asking of the question.
- Change the question set from time to time, to minimize the time to build the pool of answers.
- Change the entire approach, giving them a trivial project with specifically added bugs, asking them to fix it and add a known feature.
Also, consider the problem in the larger sense, if you are asking for information in an interview, and the information was memorized, then that should be an ideal candidate, unless you are asking for the wrong information.
You are deciding that the information isn't what is wanted, so you might be able to fix the problem by asking for the right kind of information.
answered 3 hours ago
Edwin Buck
2,4831019
2,4831019
add a comment |
add a comment |
Simply. You just grill the applicants on the implementation details and change requirements on them to see how they respond. Make them use what they've memorized as building blocks.
To be frank, problem memorizing isn't an issue. Memorization is actually one of the key techniques chess players use to learn the game. By memorizing algorithms your applicants are developing a library of solutions from which to work from. This means that they'll be able to solve problems better in the future, if the patterns and implementation of the patterns they're learning are actually useful.
What you need to test is that last part. By varying the problem in real time you get to see how well the applicant actually understands how to use what they've memorized. This means that you can ask them about better ways to solve the question and you can even ask them to compose their solution into a work flow to do something completely different.
What you want is someone who can solve problems. What you don't want is someone who solves problems the way you want to see them solved. If everyone's memorizing solutions, all you need to do is test their ability to use what they've memorized. When it comes down to it, everyone uses what they know to break down what they don't know. If your devs can use patterns they've already mastered to break down problems of increasing complexity, then they would have been able to reverse a linked list if they've never seen anyone do it before.
As a recruiter, this is as far as you can reasonably be expected to go without trying to get free labor out of your applicants.
add a comment |
Simply. You just grill the applicants on the implementation details and change requirements on them to see how they respond. Make them use what they've memorized as building blocks.
To be frank, problem memorizing isn't an issue. Memorization is actually one of the key techniques chess players use to learn the game. By memorizing algorithms your applicants are developing a library of solutions from which to work from. This means that they'll be able to solve problems better in the future, if the patterns and implementation of the patterns they're learning are actually useful.
What you need to test is that last part. By varying the problem in real time you get to see how well the applicant actually understands how to use what they've memorized. This means that you can ask them about better ways to solve the question and you can even ask them to compose their solution into a work flow to do something completely different.
What you want is someone who can solve problems. What you don't want is someone who solves problems the way you want to see them solved. If everyone's memorizing solutions, all you need to do is test their ability to use what they've memorized. When it comes down to it, everyone uses what they know to break down what they don't know. If your devs can use patterns they've already mastered to break down problems of increasing complexity, then they would have been able to reverse a linked list if they've never seen anyone do it before.
As a recruiter, this is as far as you can reasonably be expected to go without trying to get free labor out of your applicants.
add a comment |
Simply. You just grill the applicants on the implementation details and change requirements on them to see how they respond. Make them use what they've memorized as building blocks.
To be frank, problem memorizing isn't an issue. Memorization is actually one of the key techniques chess players use to learn the game. By memorizing algorithms your applicants are developing a library of solutions from which to work from. This means that they'll be able to solve problems better in the future, if the patterns and implementation of the patterns they're learning are actually useful.
What you need to test is that last part. By varying the problem in real time you get to see how well the applicant actually understands how to use what they've memorized. This means that you can ask them about better ways to solve the question and you can even ask them to compose their solution into a work flow to do something completely different.
What you want is someone who can solve problems. What you don't want is someone who solves problems the way you want to see them solved. If everyone's memorizing solutions, all you need to do is test their ability to use what they've memorized. When it comes down to it, everyone uses what they know to break down what they don't know. If your devs can use patterns they've already mastered to break down problems of increasing complexity, then they would have been able to reverse a linked list if they've never seen anyone do it before.
As a recruiter, this is as far as you can reasonably be expected to go without trying to get free labor out of your applicants.
Simply. You just grill the applicants on the implementation details and change requirements on them to see how they respond. Make them use what they've memorized as building blocks.
To be frank, problem memorizing isn't an issue. Memorization is actually one of the key techniques chess players use to learn the game. By memorizing algorithms your applicants are developing a library of solutions from which to work from. This means that they'll be able to solve problems better in the future, if the patterns and implementation of the patterns they're learning are actually useful.
What you need to test is that last part. By varying the problem in real time you get to see how well the applicant actually understands how to use what they've memorized. This means that you can ask them about better ways to solve the question and you can even ask them to compose their solution into a work flow to do something completely different.
What you want is someone who can solve problems. What you don't want is someone who solves problems the way you want to see them solved. If everyone's memorizing solutions, all you need to do is test their ability to use what they've memorized. When it comes down to it, everyone uses what they know to break down what they don't know. If your devs can use patterns they've already mastered to break down problems of increasing complexity, then they would have been able to reverse a linked list if they've never seen anyone do it before.
As a recruiter, this is as far as you can reasonably be expected to go without trying to get free labor out of your applicants.
answered 29 mins ago
Steve
1,969416
1,969416
add a comment |
add a comment |
Indu is a new contributor. Be nice, and check out our Code of Conduct.
Indu is a new contributor. Be nice, and check out our Code of Conduct.
Indu is a new contributor. Be nice, and check out our Code of Conduct.
Indu is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to The Workplace Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f125402%2fhow-to-recruit-software-developers-in-an-age-where-everybody-studies-for-the-int%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
While it's true that understanding the underlying problem and solve it is relatively better than memorizing it, having a candidate that thoroughly prepared his interview and is ready to answer any question is also a good indicator.
– Cris
2 hours ago
Why not dispense with asking common algorithm questions?
– rurp
15 mins ago