If you ask me, having someone say a function over the phone just sounds stupid. If you're going to have them say it, why not have them SING it instead? Would be more entertaining, and since the way they're doing it doesn't matter, what the hell?
I don't say SQL queries out loud, and trying to do so would probably screw me up; I don't know about you, but I don't sit down to write stuff and get it perfect every time. I often start writing a query, go back and adjust something, start working on another part, tweak this or that, and then finish. You can't do that when you're forced to say something over the phone. And I don't solve problems I've never come across by just starting to code on my own and see where it gets me; especially when it sounds like the kind of problem that someone else out there, probably smarter than me, has already solved. AND I wouldn't want to hire anyone who took that approach. Sometimes, it's fun to reinvent the wheel, especially when you're trying to learn things, but I wouldn't want my developers sitting around all day reinventing everything.
If you really want these people to do these things, plop them down in front of a computer, give them a time limit of x minutes, leave the room and come back and see where they are. This relieves the pressure of you standing over them watching them, gives them time and space to work the problem out, and is much closer to how they'll eventually be working...unless you work at some freaky place where the boss stands over your shoulder and watches you type all day long, in which case I feel sorry for you.
I totally agree, but I also think that introverted programmers work better in the situation you describe, whereas extroverts feel better about talking-out solutions, even over the phone. Don't get me wrong, I'm not calling you an introvert, but I, as an introvert, have experienced this.
Don't forget, our society rewards extroverts, is built for extroverts, and this is one way the ruling extroverts can weed out introverts.
I don't say SQL queries out loud, and trying to do so would probably screw me up; I don't know about you, but I don't sit down to write stuff and get it perfect every time. I often start writing a query, go back and adjust something, start working on another part, tweak this or that, and then finish. You can't do that when you're forced to say something over the phone. And I don't solve problems I've never come across by just starting to code on my own and see where it gets me; especially when it sounds like the kind of problem that someone else out there, probably smarter than me, has already solved. AND I wouldn't want to hire anyone who took that approach. Sometimes, it's fun to reinvent the wheel, especially when you're trying to learn things, but I wouldn't want my developers sitting around all day reinventing everything.
If you really want these people to do these things, plop them down in front of a computer, give them a time limit of x minutes, leave the room and come back and see where they are. This relieves the pressure of you standing over them watching them, gives them time and space to work the problem out, and is much closer to how they'll eventually be working...unless you work at some freaky place where the boss stands over your shoulder and watches you type all day long, in which case I feel sorry for you.