I come from a country with free education and the latter part is just plain wrong.
Autodidact people are nearly always terrible programmers because they haven’t learned how to think. The few of them that actually understand CS principles are typically unable to work in teams because they’ve never been taught the fundamentals of working together. If they do have the right sort of personality (extremely rare in CS) they wont have the business side of things, making them unable to work with the people they are making systems for.
Of course I lead teams in digitization where, self management, team work, business and customer interaction is part of what my programmers need to do.
I’ve hired a lot of people by now, back between 1995 and 2005 a lot of them didn’t have much of an education behind them, and we’ve frankly spent 5 years cleaning up their mess since.
Today we simply require a degree.
It’s a little different in the IT department, they prefer certificates over degrees, but a lot of university engineering programs know this and give their students the essentials.
We do have a mix of technical degrees. There is the candidate or bachelor(people typically never stop here) at the universities for the full education, but we also have various academy degrees that are “almost bachelor” programs, which focus less on the theoretical and science things and more on practical application. Both roads are perfectly fine, but you really need that piece of paper if you want a job that requires any sort of thinking.