Today when you have code repositories, container repositories, challenge sites (HackerRank, CodeChef, etc), linkedin, blogs, h-index ranks, ... My line of thought is: With all of this free avaliable on-line information if a recruiter still need to test if I can extract max value without a binary search tree, then he didn't do his job. What do he wants to test? If I hired a genius to build a fake developer profile for me? And then I present myself to the job interview anyway? For what?
Look at this way: If I have 130 GitHub repositories (not forks), half of them fully passing tests through CI, my issues reports, my PR's, my own code metric reports including object-coupling, cyclomatic complexity, Halstead, Hansen metrics and all the stuff... should I really spent 3 months to practice how to add without + operator? And then get on-line interview just to discover they want me to write a k-partition problem solver?
There are companies which do not rely on these stupid stressful tests?
It's been a while since I've done a job search, but several people I know have done them recently. And they've all found that some companies - mainly big tech companies, along with tech startups of all kinds - use these kinds of tests heavily.
Other companies that hire lots of developers - like banks, insurance companies, and manufacturers - don't seem to use these tests nearly as much. They'll sit down with you, talk about your experience, and the systems you've built.
At this point, if they like you, they'll often give you a small test project to do. And when I say small, I mean small - probably an hour at most. And while these projects can be annoying, these companies seem to give it after they've interviewed you and they're serious about moving forward. I don't mind this approach. There are lots of people out there working as developers who write truly awful code, so I think it's fair of them to want to see something from you before making an offer.
Working as a developer for a non-tech company might sound awful, but some of them are actually really great places to be. From what I've heard from devs I've talked to, many of these old school companies are actually really progressive technically, pay their developers well, and treat them with plenty of respect. And they tend to very sane work hours too. If your manager sees you still in the office at 5:05pm on a Friday, they'll probably tell you to go home. :)
It's a great arrangement for those of us who do really good work but tend to interview poorly. Probably not so popular with those who BS well in an interview but can't back it up...
The pay isn't FANG, but can be decent if your manager likes your work and you don't let HR lowball you.
But - all interviews are, in essence, is an exercise in virtue signaling. Can you do the local dance to prove that you belong?
If anything, whiteboard interviews are not the worst thing ever. I am from a Western European country, and my dad is a chemical engineer at a large chemical company with 30+ years experience, many patents, books, etc.
When I explained to him the interview processes I had to go through to get jobs in Silicon Valley, he exclaimed “oh wow that’s great! I wish we had that! Our interview process is a 1 hour conversation with a manager, and if you went to the same school as them or share the same hobbies, you get the job. We hire so many mediocre people because of that, I wish we actually asked them to solve technical problems”.
Now that I think about it, I actually declined a job offer once from a startup because their interview process with me was a 1 hour presentation where I showed some of my work, and then a phone call with HR. I thought to myself - wow, this is too easy. If I get an offer this easily, what caliber of people am I going to be working with?
Pick your poison.
I agree that tests can be bad, frustrating, badly designed or just plain incompetent - but ultimately I'd rather hire someone who knows what they don't know than someone who thinks they can wing it. When I've been tested like this in the past, I just explain which questions I can't answer and why. If they want to talk it through, then great. If not, then do I want to work for them anyway if the attitude seems negative?
The real issue you need to overcome is fear of failure. Aside from some specific cases, nobody in the hiring process really cares whether or not you 'pass' the test - it is (or should be) more important to assess how you approach the problem and whether you are capable of acknowledging what you don't know and talking through your thinking.
This also gives the candidate a glimpse into the culture behind the HR marketing bs.
For one, I walked in and they handed me a laptop and a paper with a list of requirements for a REST API with some sample data and said, "We'll see you in 3 hours".
For another, I had 5 in-person interviews, none of which included any coding, whiteboarding, quizes, etc. The closest to that was "Describe the architecture of a system you've built".
For most, I'd say there is some amount of coding involved, but they rarely involving writing code on a whiteboard or solving a "quiz". Usually the coding I've had to do is at a computer, like pair-programming, or a project submitted ahead of time.
"Quizes" are the reason I've never even thought about applying to any of the giants, like Google / Facebook. I don't like them either, but I don't mind showing off my coding chops.
As for adding without the + operator, a + b = a - -b :)
This is, of course, true. The problem is that that's not the problem they're trying to solve. What the recruiter is doing is finding people that have a high chance of meeting their criteria in a reasonably scalable way. Or facetiously, you may think it's about you but it's not.
Now, most of the ways they go about this aren't actually that great. But having the recruiters running around after you will definitely be worse.
I wrote a post about this a couple weeks ago, on the disconnection between what an employer is looking for and what you (a developer) think they want. I hope it helps someone
Referrals get one out of the internet-resume-void, but you still go through the standard interview process, right? I've always seen referrals as a "guaranteed shot at the interviews coding games". Am I doing it wrong?
LinkedIn, blogs - not exactly reliable sources of information given they are what you are saying about yourself. We've had candidates list the number of Instagram likes they had as if it proved anything. Sold some t-shirts on Cafepress, wow you must be an incredible developer / entrepreneur then
I have seen some amazing code in a Github repository that the candidate couldn't explain to me. I suspect it was a joint project that someone else was a major contributor to
So yes I will want to verify / test your abilities
But personally I read a CV and then talk to the candidate. Worked well so far
Because today's research on code plagiarism is huge (this mean years spent in code re-engineering by really clever people), and I could argue you could use just one employee to develop a profile crawler and validation workflow, isn't so? I am saying you could automate the browsing and just discard Adam if he's below your threshold.
Thank you for your reply.
The CV that lands on my desk will determine if you get called for an interview. One or two sides of A4 is all you need. We only look at Github if the CV is interesting enough
If your CV says 'I have a CS degree' rather than 'I am a programmer' then I'm not going to look any further. I have employed excellent programmers this way. Only one of them had a Github account. None wrote blogs. Didn't even look at LinkedIn
Github can be interesting to see what languages you work in and what topics you found interesting when satisfying your own needs. But I will only look if the CV makes me think that it will be interesting
Github, LinkedIn and blog posts are merely supporting documents for your CV. If the CV sucks then it goes no further
But, yeah, having just gone through a round of interviews I think there's a big range of quality at work in these, and passed on some companies because of how irrelevant their prompts were or unstandardized their processes were.
You’d be surprised by the number of candidates who say they are “senior software engineer” or “10 years experience as a lead developer” who still can’t do FizzBuzz. Or the ones who can do it but takes them 100 lines of code.
I’ve also turned away candidates who didn’t want to do a simple coding test, but still wanted to work with us. Entitled people are just as damaging to a company as incompetent ones.
I see comments similar to this one all the time. Are folks literally referring to the 'FizzBuzz' problem, or is that just an alias for a problem they subjectively find easy?
That's the real lesson of the coding quiz. You are rejected by default. Take aims to flunk it by default, is the natural response.
When you send your curriculum to recruiter, why should they believe you, whatever job your applying to ?
So if you start a relationship based on a non minimum trust, will it go well ?
Of course, this is all theorical, and how it should work on a perfect world, which this one isn't.
At least the people doing the stupid tests are checking for stuff that is relevant to them instead of wasting time with pedantic aspects of a programming language or tech stack.
I've done a lot of interviews, and many of the questions have been very generic, with nothing whatsoever to do with the job I was interviewing for. I've reversed a lot of linked lists in my time, and I was once asked to solve FizzBuzz.
Why not go fot the idea that one pays the cost in advance, but as soon as you get hired, the future employer will repay the costs to you?
"The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man." -- George Bernard Shaw.
However I've been to job interviews where they force me to code live in front of several people and I couldn't get half a line of code out before one of them will chip in with a "suggestion" breaking my train of thought. The code they want me to write is some algorithm that they have expected you to memorise.
I normally leave the interview frustrated and even when offered the job I turned them down because the hiring process has given me a bad taste.
On the interviewer side of the table, I had a candidate and there was a stretch of silence after they confirmed they understood the problem which I interrupted with "Is there anything I can help clarify?" (I can't observe internal state!) They asked me if I could be quiet for 5 minutes while they thought about the problem. That's fine, I did so. Maybe you can ask the same thing next time if interruptions come too frequently? If they don't respect the request to shut up, that's a useful signal to not work there too.
Lack of interviewer experience can also account for some of it. Unless everyone in a room with more than one interviewer has their turn at questions, I'd expect the silent ones to either be shadowing so they can interviewer, or be overseeing a former shadow take the reigns. I think an interviewer needs to do as little as 10 of them to run the style range of people who need some quiet time to silently think, to people who ask lots of questions, type some, ask more, type, to people who easily vocalize all their thought processes while typing things; the interviewer may also importantly see that despite the style differences the time to get to the same place (if they get there at all) doesn't vary by much...
This could actually be the test in itself. There seems to be a substantial contigent who believe that this is what a collaborative programming environment looks like, and they might actively want to select against people with a more shut-the-door-and-work-through-the-problem mindset. I'd argue that a pair programming exercise is probably better than whiteboarding-with-interruptions, but setting that up well is more work for the interviewer.
Edit: completely messed up the quoting in original!
If it's the latter, a counterpoint is that doing these sorts of tests (usually not strict pass/fail ones but ones with levels of progression or orthogonal points of detail like "handles the divide-by-zero case without it being pointed out") lets me rank candidate A and B in a consistent and arguably more fair way. Sometimes A will have lots of impressive github contributions, while B will have nothing but schoolwork to discuss. Personally I'm unwilling to automatically grant the job to A on such a basis as publicly available work artifacts, or indeed anything on their resume (such info probably made it easier to get to the interview stage, of course) so I test A and B the same way. I might expect A to do better, but I give B the chance anyway, and B sometimes does way better. If A's past work/volunteer experience isn't directly related to the jobs which they'll be asked to do, how valuable is it? I think minimal. (It may become more valuable in the future, but such hidden future utility applies just the same to B, just in likely less obvious places such as the ability to read a crypto paper and pump out exploit code in a couple days rather than a month or two.[1])
All that said, I'd love it if I could just give (and as a candidate, receive) a certified IQ test (or perhaps the https://en.wikipedia.org/wiki/Wonderlic_test) and OCEAN personality test once every n years that can be reused. A lot of jobs don't require anything else but "smart and gets things done" (i.e. high enough IQ and trait conscientiousness). Maybe something fizzbuzzy in addition in order to lower job onboarding costs, though you'll find anecdotes of companies hiring smart people who couldn't program and successfully training them / otherwise supporting their education to become good programmers.
My advice for finding a less-BS job besides the already-linked no-whiteboards repo (which is a bit suspect since I know at least one company on the list shouldn't be in general) is to find one that isn't in high competition from candidates (they're more likely to shorten the process to find someone good enough, i.e. "smart and gets things done") or one with a very defined job role (in which case they'll test you on that knowledge specifically if your public contributions don't make its presence evident rather than give the usual generic quizzes that sort of act as proxies of IQ or ability to do real non-quiz work).
Your reply makes me thought about a community certification test, taxonomy or classification of company profiles. Which as far as I know it doesn't exists.
Wasn't the IQ tests somewhat discarded by Stephen Jay Gould work? https://en.wikipedia.org/wiki/The_Mismeasure_of_Man
A college degree in CS or related used to be a kind of 'community certification test', but then interviewers started getting bad candidates even though they had BS or MS degrees, and when they started testing for ability to program a FizzBuzz, found that some MS students couldn't do it! So its value as a test has gone down significantly. This is why I like the idea of an IQ test better, because it can't be cheated and corrupted the same way.
Classification of company profiles is kind of what Glassdoor et al. purport to be, but sometimes I can get the feeling I won't fit in just from the company's website and how it represents itself (especially if they have a dev blog). e.g. One company had a picture of a scrum team doing pushups together at standup. I'm not opposed to exercise, or the idea of getting together with some coworkers to go work out at a gym, but I am opposed to such group dynamics and conformity pressures at work. If I worked on a team that already had the established culture of doing pushups during the daily standup, I would decline, and that probably indicates there would be other cultural problems down the line.
I'm not familiar with Gould's discussion of IQ but I generally don't trust Gould's work at all and don't bother reading it. https://www.lesswrong.com/posts/BahoNzY2pzSeM2Dtk/beware-of-... convinced me of that, what he did to evolutionary biology isn't really forgivable. From the first sentence of your wiki link I would worry he did the same to IQ research by representing everyone in the field as whatever he characterizes are "biological determinists". IQ is merely the best single predictor we have for a large variety of "success" metrics. Its validity predicting job performance, as one of those metrics, depends on the job and can range from 20% to 80% (i.e. knowing nothing about a person but their IQ, for some jobs, you can predict their performance bracket accurately say 75% of the time -- they will be better or worse than predicted the other 25%). I suspect software job performance would be towards the upper end of predictive power. Throwing a second data point of Conscientiousness in, your predictive accuracy rises even more, but Conscientiousness alone isn't as useful as IQ alone.
And this is where interviews or coding problems come. They allow the interviewer to judge your ability to code and compare it to other candidates. And, probably even more importantly, your social skills, which in a team or in a relatively small company are essential.
But... Why go through all this? Other professions don't do it, right! Well, at least in Europe, most other professions aren't even nearly as well paid as even a junior dev.