University industry, unions, and academia more broadly, set the tone that if you want to do anything "for real" you must go to school. Many companies, parents, and ordinary lay people are convinced.
My (somewhat limited, I am young) experience tells me that competence is a completely inadequate predictor of whether somebody went to school for computing or software, but self-importance is an excellent one.
One of my university teachers told us that to become a real programmer, you have to design and build at least one language of your own. I wouldn't choose the same words; but having done several, I sort of agree. You need practical experience before it makes any sense though.
The problem is rather the expectation of the employers: No civil engineer is expected to build huge bridges in his free time.
If one could build bridges that easy, I am sure people will do it.
But lots of architects design things in their spare time.
Is software engineering closer to civil engineering or closer to architecture.
One of the best parts of college is the ability to learn more about yourself, diversify parts of your life, and experience new things. It's hard to do that when your life is split between school work and personal work.
I worked my life away at side projects and a part-time programming job in college and looking back there's so much I would've done differently. CS programs across the country need a wakeup call.