Testing Programmers: Puzzles Or Mini Web-Apps?

As you know, I like to sponsor web application programming contests, for example, thisthis, and this

In a recent conversation with an Android programmer, he asked why I don't follow Google's practice of asking people to solve puzzles. According to him, people who can solve programming puzzles can definitely build webapps, but many people who build webapps can't solve programming puzzles. I asked why these programming puzzle solving geniuses can't learn Python to write simple webapps for cash, and I think he said it's because basic webapps are not cool enough to interest them.

What do you think? If interviewing a programmer for a role on your team, would you ask the programmer to solve programming puzzles or would you ask them to develop something simple but complete like a mini webapp? Which approach will result in the best, most productive hire?