edit: why doesn't this have a parent comment anymore? bug?
Giving someone a coding exercise is the most time and cost effective way to filter people. Why waste time spending eng or HR hours calling someone when they can't code? As dumb as it sounds, giving a simple assignment probably culls the number of actually applicants down significantly.
I get a quick read on the candidate, which is handy, but more importantly, I get to sell them on the job. And I get to demonstrate that that, unlike somebody who thinks that talking to interested people is a "waste [of] time", I'm interested in the candidates as people. And will remain interested in them as people after they've joined.
A lot of hiring practices are built around the notion that jobs are scarce and workers are desperate. That's not true for good developers and hasn't been for years. I think the reason the attitudes are so persistent is that there are a lot of managers who like feeling powerful in relation to candidates, and that treating them like actual humans interferes with those feelings.
There are places nowadays with maybe 300 or 400 engineers getting applications from tens of thousands of people, its easier than ever to apply for a job, and you need to thin the number of prospective candidates down with some heuristic. Coding questions is one of those ways. It tests your logical reasoning ability, your ability to show command over some language, and ability to code.
Quite frankly I would prefer that vs some arbitrary resume screen based on what School I went to. I would love to talk to someone and learn about the job, and on the flipside I love talking to people about their motivations and seeing them tackle problems live. However, this is not realistic.
[1] https://williampietri.com/writing/2015/slightly-less-awful-h...
[2] e.g.: https://web.archive.org/web/20151005181908/http://www.codefo...