That matches my experience: but it's to be expected as most CS degrees are applied Math not Software Engineering. You have to respect that.
The thing which makes SEs good is being smart and having passion. Self-taught selects for that. For young people, take a smart young person and put them through a CS degree whilst working. They'll be instantly productive and with a little guidance can be successful. Over time they become exceptional.
This was my first thought when i read the headline.
Many people were told to get CS degrees because they will get a job, not because they love it. The cost of quitting a degree or not using a "valuable" degree is relatively high, especially for people who are inclined to coast. Most people who start college also graduate, even if they aren't prepared or love their program, so we have lots of bad cs graduates.
On the other hand, most people I know have at least dabbled in learning to code. In this case the cost of quitting is very low and the cost of getting good is reasonably high, so it self-selects for people who excel at it and love it.
That said, if you only compare people with similar aptitudes, my experience is that people with formal training are better.
tl;dr: The most important thing to me is comparing past work, interview and personality. If you have a CS degree with no personal projects, you won't get a job offer. If you don't have a degree but have active projects with good code then I don't care if you have a degree. That said, I have been getting hundreds of applications for every entry level job I post so I can normally find someone who has both.
The thing which makes SEs good is being smart and having passion. Self-taught selects for that. For young people, take a smart young person and put them through a CS degree whilst working. They'll be instantly productive and with a little guidance can be successful. Over time they become exceptional.
That was my path.