Obviously not all CS grads are clueless, but unless they spend some time independently learning something beyond the college curriculum, they're often worthless when they start their first job. A bootcamp person (I've hired from General Assembly in NYC,) can generally build a complete CRUD app without much help, including deploying it to AWS or Heroku, using SCM correctly and ensuring it's covered with tests.
Of course, everyone's business has different needs. If I were working with SPARK or Ada on ultra-critical systems, at the entry level, I'd definitely prefer the CS grad, but for general web applications, the bootcamp grad often hits the ground running.
I think one major issue people like you have is that they don't realize that most people who take these courses aren't baristas. My class average was late 20s with 5+ years of proven work experience, most frequently in high professions (law, medicine, finance). I worked in finance for 6 years. I didn't need to take "CS250" to be capable of learning data structures. I just did it on the job instead of over one semester. It's easy to train people who have a proven history of success at work. It is much harder to gamble on a 22 year old with no work experience, regardless of their degree. That's a pretty easy decision for many hiring managers.
There are plenty of reasons to go to a bc besides "welp, I woke up today and felt like being an engineer"-- maybe you're working for a doomed company, or you want to change cities, you feel your growth is limited at your current gig, or you just want a break from your routine. Ymmv but it's a mistake to flat out dismiss all bc grads.
Not saying that's normal. But my very limited experience with bootcampers has been positive.
Yes, they were hired for the same reason bootcamps exist: demand.
Of course, anyone coming out of a bootcamp (or undergrad if they have no work experience) is going to be a relatively inexperienced hire, and not all companies have the inclination/ability/experience/desire to support these kinds of hires and the mentorship they require.
I've been a hiring manager for a very long time, and my opinion is that it's foolish to dismiss any potential source of candidates, especially one where you are not directly competing with google/facebook/amazon/goldman sachs. Many people from flatiron have engineering or math degrees, and realized after school they loved to code.
Also, back in the day, when I was a sophmore in college, someone hired me to be a sysadmin when the only experience I had was running the network in my college dorm for 6 months. Within a very short time I was writing all kinds of code, learning a ton, and making small but meaningful contributions. I've worked as a software engineer ever since. My first boss took a risk on me, and it worked out really well for him, and me. Some of the best hires I've ever made had skillsets that didn't, on paper, line up very well, but they turned out great. These experiences are why I'm willing to take risks in hiring.
I think most hiring managers are far too narrow minded when it comes to this stuff, although I understand why that's the case, too.
My anecdotal observation is that bootcamp grads favor consumer tech companies where the product (or sub-product) isn't very technologically complex, and has room for (very) junior developers. It does not take a senior dev nor a CS degree to stand up Rails and produce by-the-numbers CRUD workflow apps.
I think the reasons for hiring bootcamp grads are varied, but they are much cheaper than degreed candidates, get the job done (for junior-level work at least), and are "hungrier" than degreed candidates - especially compared with candidates from pedigree schools who sometimes perceive themselves as being above junior-level grunt code.
Anecdotally everyone I've hired from a bootcamp has worked out, but it's worth noting that the pickings can be slim. I reviewed two graduating classes for candidates and would say maybe 1/4 of them even come close to being interviewable.
The one person we ended up hiring had previous experience in a very relevant field and we felt would add perspective. We recognized they would need some work and we all took / take time after work to work with them. They've improved a lot and now are a pretty potent developer (six months after we hired them).
I think that's probably a standard experience. Perhaps a 5% pass rate for new junior developers from bootcamps, followed up with a known need to develop them further. That's fine though, because we can pick them up at a much lower rate (initially) and grow them. Those people are usually much more loyal, and will have a lower turn over. As long as their salary grows consistently with their competency.
When I was interviewing right out of bootcamp, there were hiring / engineering managers who told me straight up that their companies would never hire bootcamp grads and that they didn't know any 'reputable' eng orgs that did either. Which was hilarious given that I knew people at the top companies whose only software background was in bootcamps.
Part of the reason is that most of my friends took the bootcamp experience off their linkedin after working for a year or two. It wasn't relevant anymore, and there were always people who think bootcamp grads only get hired out of desperation.
We (the interviewers) did spend a lot more time discussing him than other candidates that same year. He interviewed extremely well, had a compelling story about why he took the path he took, but we hadn't hired somebody without a 4-year STEM degree in ages. He was persistent, didn't get scared off by our hesitation, and we decided that his persistence was a strong enough additional signal to take the risk and make an offer.