We hire a mix. The good ones (there are a lot of good ones) are quickly making useful progress. The bad ones sound good and seem to be asking the right questions, but never really make progress. My boss said he knew in a week if someone was good because that is the longer it took for the team to say "he knows what he is doing, we rarely check on him", while the bad ones "He is making progress but isn't ready to be left alone". Only after a couple months are the other programmers willing to admit the guy who seems like he knows how to code can't write code.