All of those people are going to regret struggling through the CS program only to find out that the programming problems in school were trivial and the real stuff is messy and confusing as hell.
I tell anyone who asks that they should get some sort of programming job as an undergrad. If you can't hack it, you can get some other degree in 5 years. If you can, you'll learn so much more from your classes, because you'll have the practical bits down pat and you can focus on the theoretical.
One of my friends got a job junior year. I would ask him how long the homework took him and he would say something like 2 hours. Bullshit. It took me 10 and there were people in the lab a lot longer than me. There is no fucking way that's true. I stopped asking him because it just pissed me off. Senior year I got a job working at the same place, and within a couple months I was down to 4-5 hours. Ok, maybe he wasn't bragging. Maybe practice really is that important.
By the time I left, with maybe a couple thousand hours of programming under my belt, I had one class with a shortage of machines (3D cards). I would sit in my apartment writing code in a terminal window on one of those machines, essentially blind, for two hours. When I'd get a clean compile I'd go over to the lab to debug for 40-75 minutes. Because doing the homework was just doing the homework, like a math class, instead of a huge production.
Then I'd go back to work and stare at a complex memory corruption bug for 5 hours...