The friend had taken a web/programming course at college 3 years ago, but not a lot since. He'd never even heard of MySQLi or objects.
The thing is - a lot of these guys get through because the first filter on resumes is a human-resources drone who can match up the words written in a resume (tailored to a job description) with the job description. Also, a lot of them get accepted into jobs because the person interviewing them is not a programmer - you'd be be surprised at how many managers don't bring in one of their experienced programmers into the conversation.
And then these guys sit there for a couple of years - hammering out godawfully buggy and insecure code - and then they can move on and now they have 'legitimate' job experience they can use to win the next job.
I like the link to Dunning-Kruger effect - and I'm sure that many people reading these comments will nod to it. But added to that is the general perception that programming is easy (we all hear stories from clients that balk at a fee just because "their 16-year old nephew can do it for nothing") because it is just drag and drop (isn't it?), and typing a little (surely?) - this is like thinking that just because you can cement some bricks together into a barbecue that you can engineer the building of a 20 storey building. We need to make programming look as difficult as building a skyscraper - and we should work to make 'software developer' a protected profession like 'architect' or 'medical doctor'.
Only allowing state certificated software developer's to apply for a position should cut down on wasted interview time.