You mean all those jobs requiring college degrees? Or is that different somehow? The main reason is that difficult tests has positive signal even if they are partly irrelevant or tedious, and interview prep has nothing on 4 years spent full time, and on top of that you have to pay for college.
They provide a signal, but I don't think the evidence suggests that it's necessarily a positive one. "Can you play Czardas on the tuba" is a difficult task that would provide a strong hire/no hire signal, but that doesn't mean it would be a good signal to use when looking for developers.
The big tech companies themselves admit that a bunch of their employees are not sufficiently competent [1]; clearly, current hiring practices are suboptimal. Just because a test exists doesn't mean it's valid.
> You mean all those jobs requiring college degrees
There are many jobs where high performance doesn't require a college degree, and for those jobs, requiring a degree is again an exercise in box-ticking that should be replaced with a more meaningful measure. There are also jobs were significant education in the topic is important, and a degree provides better evidence of that that many other things, so can be a useful signal.
We know that tech hiring is broken, but whenever it's criticised, the people invested in this system get outraged. "What do you want us to do, just hire everyone?" etc. No one is saying - or has ever said - that assessing applicant competence is a bad idea, just that assessing the ability to rote learn is not the best use of time when hiring developers.
The current system is not the only way, and for an industry that prides itself on being filled with problem solvers and hackers, it's bizarre to me how much people rest on the idea that the existing system is imperfect but present, and so should be left alone.
[1] https://www.reuters.com/technology/exclusive-meta-girds-fier...
This is exactly what I was talking about above. The solution for a known-to-be-broken system isn't another known-to-be-broken one, and it isn't keeping the broken system because it's already in place.
Development isn't about rote memorisation or slavishly repeating past mistakes. Knowing the Voight-Kampff algorithm doesn't make you a good developer, nor does claiming 20 years of experience with a decade-old technology, nor does being the CEO's nephew. All of those things provide (at best) a totally irrelevant signal.
What if we used better methods? Ones that actually assessed and evaluated the skills/traits necessary to do the job well? Ones that couldn't be gamed as easily by "grinding". I'm not saying there's globally-applicable silver bullet just waiting to go, but there are definitely avenues to explore.
One process I went through quite recently asked me to bring along a single line of code I'd written - any language, any project. Then we had a conversation about it: what it actually did, how it fitted into its context, why I'd written it like that. It provided me with an opportunity to show my understanding, and for the interviewer to probe particular areas they were focused on. I enjoyed the process, and I could see how it was providing relevant information to them.
Again, it's an imperfect process, but I think there's potentially a lot of mileage in 'talking to developers' when hiring them, with any number of different twists. At the very least, we should be experimenting and trying to find a fit-for-purpose process.
The current process also requires dedicated employee time to administer, after all - this takes no more time, involves less employee prep, and (crucially) might be valuable.
- having to work together with assholes towards a common goal
- how sometimes you can cram for a deadline, but sometimes you can't
- how, often, how well you do is just politics and networking
Obviously fuck everything I learned about however pushdown automata worked. That's not relevant to my career now. All the above still is.
I use most of that every single day, and I'm basically a web app developer. Can you learn how to program from learning yourself? Sure. Einstein taught himself calculus, but that doesn't mean most people can adequately teach themselves difficult subjects.
Writing a for loop might not be a difficult subject, but understanding what makes a for loop slower than another method, or why maybe you don't need to loop at all if you engineer things differently is an entirely different thing.
that's just the problem with these interviews. It's kind of obvious that a fresh grad who prepares for 2 weeks for those whiteboard interviews will completely outclass known most productive programmers and engineers in the world (take whatever example you want, I would name someone like John Carmack) who takes the test fresh and unprepared. The modes of thinking and toolboxes required are just entirely different.
That should tell enough about the quality of that style of interview if you are using them for anything other than to weed out people who can't code at all in a phone screen.
This extreme take is highly unlikely. World class programmers are typically extremely good in maths (and possibly have an active interest in it)/algorithms, and problem solving in general. In addition to J.Carmack (who is definitely very good in linear algebra and problem solving), another random example is F.Bellard (who calculated the largest known prime, and most digits of pi). L.Torvalds is surely extremely good with algorithms, S.Wozniak with problem solving (given his extremely good design skills in electronic engineering); another one that comes to my mind is P.Bonzini, with his 40 GB/S fizzbuzz :)
That's fine - some jobs do require that - but it does mean that any 'best and brightest' rhetoric should be shelved. Everyone knows that tech hiring is broken, but still the trumpets sound about how it really means something to get through one of these processes. It is almost a counter-signal.