"I know how to program, but I don't know what to program"

There is a recurring theme I see with novice developers. They've put in their time to learn the basics of a programming language or two and they feel pretty comfortable doing programming exercises, but they don't know how to apply what they've learned. It usually comes in a phrase similar to "I know how to program, but I don't know what to program." The responses are typically "do programming challenges", "contribute to an open source project", or "make a game."