I, too, have often been amazed at interviewing and working with CS grads who can't seem to correctly think abstractly about a problem, breaking it apart into sensible constituent parts, and then productively attacking the problem. Sometimes, they seem unable to just start working on the matter, and instead get lost in thinking up the most creative and novel ways they could solve it with some new technical thing.
I studied history and philosophy in college/grad school.