Ever notice how easy it is to tell who gets it, and who just doesn't? Like a lot of the people who come to me for tutoring just don't get it, as far as programming goes. And some of them, sadly, are never going to. I'm not trying to be mean, I'm just being honest. Some people are not cut out to be CS majors. I feel bad for these people when I watch them struggling with concepts like loops and functions. The basic stuff that you have to know in order to program... and in order to be a CS major you have to know how to program... even if you never intend to be a programmer.
Anyways... if you think I'm being mean, then maybe you understand a little bit why I say I'm a terrible tutor. I've tutored people that I know aren't going to get it, and I try to help them understand, but mostly I just try to help them finish their homework so they don't fail the class. Because they aren't going to get it. They aren't. Honest. They'll be back next week with a different assignment, they won't remember any of the stuff that I tried to help them with for THIS assignment, and the cycle will start again.
Understand that I'm not saying they're dumb. I'm just saying they shouldn't be CS majors. Same reason I shouldn't be a business major -- I just don't get it. Some people just don't get CS. I can only hope, for their sake, that eventually they come to terms with themselves and change majors.
On a happier note, I am tutoring someone now who does get it. :) Those are the best kind -- the students who understand it, but aren't confident enough in their own abilities to realize that they understand it. That makes my job so much easier. I'm a lot better at giving encouragement than teaching computer science. :)