I'm not the grandparent poster, and my political and economic views are well to the left (within the US spectrum). But I, too, found that many candidates were astonishingly bad in a way that no amount of training would likely have corrected for.
At my previous job, our test/icebreaker was simple: we sat the candidate down at a computer with a C++ file to read and digest for up to half an hour, left the room and then returned with this question: "So, what does this code do?" There were no tricks--the file was about 300 lines long, was designed to be readable (with meaningful variable names and occasional comments), and used only the most basic of C++ features. It did nothing more sophisticated than applying some logical tests to an input object in order to select a return value.
You know what I did that impressed the team when I was asked "So, what does this code do" on my interview? I gave a one-sentence summary before diving into details. I was skeptical when my boss told me this shortly after starting the new job. But we interviewed a dozen or so additional candidates over the following year, and half of them were only capable of giving line-by-line explanations ("Well, at the top of this function first we check if this parameter is less than 60, if so we stop and return this value, otherwise...") even after we stopped them and specifically asked for a brief high level summary. They all interpreted the individual lines of code correctly, but only half could express what the code did as a whole.
We hired three people from this group (so about 1/4 of the people we interviewed). And we did provide plenty of training, or more accurately, we each taught each other based on our individual strengths. I had more SQL experience than the rest of the team, for example, so I took on the more difficult SQL-related tasks myself while others completed simpler tasks with my advice and guidance. Similarly, another member had more experience with pthreads than I did, so he helped me whenever I had issues related to multithreading. The end result was a team where everyone had specialties but could complete basic tasks in any relevant area.