I know of three possible ways to evaluate coding ability:
1. Ask coding questions in interviews. This is biased against people with performance anxiety.
2. Give people take-home "work samples". This uses up more of a candidate's time, and it may filter out high performers with multiple offers. Plus, if you give anything that takes more than a few hours, it really ought to be paid.
3. Ask for a GitHub profile with open source contributions. This is biased against people who leave work at work, or whose previous employers don't contribute to open source projects.
It's been a few years since I last interviewed candidates, but if I were designing the interview process, I'd probably want at least one of the above before hiring a candidate. Maybe the candidate could choose? "If you have public open source contributions, please submit a link and a description. If you don't, no worries! We'll can do a coding test instead."
If the solution passes some objective criteria that we have, it then forms a significant component of the on site interview where we discuss their solution in depth and have them talk about the decisions they made and opportunities for improvement. Not only does this allow us to ensure that they actually wrote the submitted solution but it gives the candidate the chance to speak from a position of authority on their own code.
But really most importantly, it is important for reviewer to be prepared for things like performance anxiety, like shy people who are not good at looking confident, to people cant think out loud (don't hold it against them if they are silent for few minutes for christ sake) and so on and so forth.
But people here throw temper tamtrum over really simple well known questions.
Maybe the companies would to the best if they made their expectations clear and realistic in ad itself. Let people know how interview looks like before hand, let them know what exactly it is you expect and then stick to it.
I have no problem working 2-3 hours on an assignment to demonstrate my knowledge. Those at least seem more realistic than some of the interview questions about the most nuanced aspects of programming.
There are plenty of CS degrees with ABET accreditation, for example. There are comparatively few for Software Engineering. The two are different disciplines. The friction in this context is that many companies wanting software engineers of varying levels of experience structure their interviews to test CS degree trivia. For whatever reason the basic competence of an accredited degree is simply ignored in the interview process.
My friends who graduated from accredited engineering programs and became Professional Engineers after don't have to prove to the satisfaction of some individual contributor that they did so by white boarding crap from their undergrad days: the certificate and accreditation is their proof.
As they gain experience, if they look for other jobs (which happens infrequently, actually: the culture of real engineer disciplines is different from computer based ones), that experience is trusted. They don't have to re-live it, so to speak, five times to five different people looking for anything to nitpick.
It's not perfect. But it makes me wonder why the CS and SE accreditations seem to have so little weight in this industry.
That's easy, you can thank people like ESR and the hacker mentality and meritocracy myths for this. I appreciate the underlying idea, which is the same in every skilled based profession, which is that self learning and good skills are more important than formal education and accreditation. However, the two are not mutually exclusive.
I've been a licensed attorney for most of that time. All it required was me being willing to spend 3 years in school, then sitting in a room and writing for 3 days to pass the bar. Since then I spend one weekend a year listening to audio books for continuing legal education, and don't otherwise practice aside from minor advice at work.
Which job would you be more likely to hire me for today? It'd be borderline irresponsible to hire me as an attorney, but I've proven myself time and again as a competent programmer.
By contrast, I've interviewed people with master's degrees from reputable CS programs that couldn't explain what the Big O complexity of an array index operation was. I've known attorneys who fundamentally did not understand the purpose of their work.
Accreditation is just a measure of someone's ability to pass accreditation, not their ability to do the job.
A very large number of job candidates aren't very good at this. So something like it needs to be tested for.
Personally, I love code. For me, an exercise like this is like whittling or molding clay, tactile and creative. I wouldn't want to work for a company that isn't interested in my craftsmanship, independent of everything else at higher levels of abstraction or closer to the business. Why? Because it will hire other people who don't care, and the code will be ugly, and it will be an eternal uphill battle to stay sane.
Regardless, the coding interview process doesn’t seem to measure creativity or craftmanship. Consider industrial designers, people who actually sometimes do mold clay as part of their job. If a company is serious about hiring an industrial designer, would they administer a test like this: “You now have 45 minutes to whittle a miniature bust of Mozart out of this piece of driftwood. Make sure to talk while you’re working so I can understand your thinking.”
That's what modern programming is, as I see it. I mean, as you get more senior, you get more control further up the assembly line, but it's still shaped like an assembly line and ideally the programmers are replaceable, because otherwise they become a business risk.
I'm not necessarily a fan, of course. I invest myself in my work; that means I like a sense of ownership, where code is almost like a garden that grows over time. But the business will be concerned that if code is owned by people, resourcing is less flexible and, in the worst cases, individuals can become bottlenecks.
BTW, if you've seen a skilled sculptor at work, you might not be so glib about your 45 minute bust. But of course programmers are not like industrial designers; they're like the mostly unacknowledged craftsmen. Coding is closer to carpentry than architecture.
But this is completely unrepresentative of the actual kind of programming tasks at work (in my experience).
Modifying the behaviour of existing code, that you didn't write, in a way that minimises technical debt, is a completely different challenge.
i don't think we can. the outsized productivity impact a good person can have far outweighs the statistical probability of getting one if you simply accept all competent interviewers, i.e. the expected value is so high that you can blindly hire until you find one, given sufficient financial resources. without the financial resources, you only hire people you already know are good, which is the general pattern i've seen over 20 years working in this industry.
No emotionally mature adult would conduct an interview like that, unless forced to. It would be completely unacceptable in any other professional field.
I hated it as a candidate, but a year or two ago when I interviewed the questions were a bit easier and expectations were slightly lower.
Now with the rise of Top Coder, Leetcode, etc. many candidates have practiced problems to death and can recite almost entirely from memory complex problems.
The bar is raising all the time as a result. It's not enough to convey the idea on a whiteboard with reasonable code, maybe a semicolon missing.
Now we're more or less expecting 100% compilable code, passing suites of test cases, and sometimes even multiple problems solved in 45 minutes.
It's tailor made for coding competition contestants and crammers. And then they get on interview loops and hiring committees
I'm dreading my next job search.
I don't get why it would be that way. Your work's complexity isn't moving as fast as Top Coder, Leetcode, etc., so why is the interview's difficulty pinned to the difficulty on those websites?
If you guys are taking on new practices and doing more difficult things, then that makes more sense.
I don't follow.
If you have an interview that reflects the daily work and challenges of your business, having a large pool of candidates able to do that work is a good thing. The only reason to peg your difficulty to some independent institution is to offload the trouble of making that technical interview. Your business isn't weird or failing if it doesn't have some percentage of candidates failing the interview.
It seems to select for poor candidates.