I'm largely self taught, but instead of the programming route, I went more into networks, OS's, hardware, etc.
In '93 I had dreams of being EE (electrical engineer) after .mil service and being a damn good tech and teacher of fellow students.
Somewhere about calc2 that dream died and I discovered computers (mandatory for EE'ish people) and I was good with those
because I was doing things real UNIX admins were doing and students would see and say "You can do that!?"
(no surprise, a lot of that stuff is trivial and standard...now).
Anyway, a big part of my success was being able to communicate to the highers and lower ends of the tech spectrum, which
a lot of "CS" people could not do, and still have a difficult time doing even today.
But even ignoring that, IMO: CS is more than just programming because experience and constant reminders show this:
Excellent programmers, especially in CS/academia don't have a clue about their machines and what goes on behind the
scenes.
Case in point: a very good friend of mine was one of those clueless users, but a fantastic programmer whose pr0n surfing got
him a nasty bug on his laptop. He could not figure out how to get rid of it, much less easily do a nuke and reload w/o
backing up stuff he could not afford to lose.
Well, when he got a job doing embedded systems (he'd never dealt w/ hardware) he was worried about getting canned w/in
a month or less. My advice was "Dude, don't worry, you'll love it because it fits you perfectly and you'll do well".
That was over a year ago, and I was right because he has that anal retentive, laser like focus and over caffeinated mindset
that need control freaks w/ some creative leanings.
I say that, to say this: knowing that, he barely passed the intro to linux and windows class that I aced because of a lack of
experience and the class itself contained good material but was schizophrenic at worst and disorganized at best.
Sadly, very few profs will listen to those of us with experience IRL/exp/jobs because they are put in a box, and in most cases
have never seen the inside of a "box" (computer), have never run a network, but teach networking in a way that confounds
"CS" people but benefits computer engineers, as another poster alluded to.
So, the "is it worth it" question boils down to "yes" if you got the exp, drive and love of the field, because my future adviser
saw my resume when I was getting into school and asked, and I quote directly "why the hell are you going back to school".
Money and a degree, because I got in when the 'pendulum' swung from degree/certs to skill/exp and I wanted to cover both.
Of course for a good decade I was never unemployed for more than 3 weeks because of skill, exp, and reputation that I'd build
over that period.
A degree is worth it in most cases whether you do it forwards or bassackwards like I did, but you have to like/love it and learn
the field and not get boxed totally into one mindset, namely "just programming".
(yeah, programming is a good chunk, but is not the 'end-all-be-all' when you are faced with: building a webserver, network,
custom workstation for X, Y, Z task, explaining why things work, how they work and at what cost an such, when a specialist
in programming will just say "Ummmm...."
Fun moments of a_non_moose: Prof: "what'll you do when a problem you can only solve by programming comes about?"
'moose: "Hire, or have hired someone who knows what the fuck they are doing more that I do, like twice in my career, so far" .
Two or three times I've been asked that, and answered the same. The looks of satisfaction and/or astonishment of the best
answer I think they've ever gotten is still priceless)