Jobs that actually need a strong foundation in CS theory are very rare, and will continue to be and the fantasy that you need a computer scientist to manage your CRUD app is resulting in many people incredibly over qualified for their positions and, in my opinion, one of the major reasons there's so much mental illness in the technology space.
Both focus on different goals and clearly they are not aligned and they shouldn't be either. I would be in favor of just getting the fundamentals to enter the workforce, get my feet wet, get a sense of how my interests match up with the market and then pursue focussed education in areas of interest.
This will require a lot of support from the academic institutions as well as progressive employers. This provides more arenas for longer and more meaningful relationships that are flexible, less rigid and can move faster to meet market needs.
I'm an engineering grad (as opposed to a CS grad). Most of the people who graduated from our mech eng course studied thermodynamics, control systems, fluid mechanics, acoustics.
Most of those people are now working jobs where they use those skills (or some of them) day to day. A CS grad studies algorithms, discrete math, fuzzy logic, compilers, possibly some networking/telecoms. And Day to day, most CS grads are writing CRUD apps/glueing APIs together.
A CS degree with at least 2 summer internships building real software ticks both boxes.
Let's be realistic. Most people won't do this. People can barely teach themselves the bootcamp programming part.
It doesn't have to be a thing that everyone does to be possible.
Why throw your money away on expensive bootcamps when you can just teach yourself everything?!
My first programming gig was before college, and I was completely self-taught (this was before CS was offered in 99% of high schools).
Learning how to program was easy. I was probably a better web developer in middle school than I am now (although JQuery happened at the tail end of my web programming days, so there was a lot less complexity. Or at least a different type of complexity).
I needed the formal structure of a degree program to learn CS. Past Linear Algebra or so, the math became too difficult to learn on my own.
I expect I'm pretty typical in that respect.
If someone tells me they taught themselves how to program, I usually don't think twice about it. Just a "me too, aint it grand!" If someone tells me they taught themselves CS, I'm much more impressed (and therefore, in the case of hiring, incredulous).
4,310 schools had a college credit CS course as of 2015 (cf 14,183 for calculus.) My anecdotal experience is that this number is increasing pretty rapidly. All the high schools in my area have a cs course.
1. Executable code provides a fast feedback loop that doesn't require instruction. That's hard to find especially for mathematics.
2. You don't really have to understand what you're doing in order to build something. So you can do useful stuff -- which is great for motivation etc. -- and then use that stuff to probe and gain a greater understanding.
3. The psychology is favorable to self-study because there aren't long periods of self-study before the material becomes truly useful.
4. A lot of CS is just more difficult. No one asks why Analysis is more difficult than Calculus -- it seems like a silly question on face. Maybe programming vs CS is similar.
2 and 3 are kind of a function of 1.
A Computer Science degree does not, and should not, be the sole qualifier for whether or not you want to be a programmer.
Many strong graduates wind up in roles at major companies - Google, Facebook, Amazon, Microsoft, etc - where they are working with teams to implement things that do require research, rigor, etc. Their value as a contributor is wrapped up in theory, the code is just an implementation detail.
Bootcampers, meanwhile, often find themselves at younger companies that are more focused on shipping features and stamping out bugs - areas where the ability to write and ship code quickly is a priority. The differences between a b-tree and a red-black tree will be moot to them unless they're interviewing; going beyond binary search, hashmap, and bloom filter sees diminishing returns on investment in the near term for most small companies.
This should be done in tandem with theory.