This is a fascinating article for me. I was a self-taught web developer, but I had studied engineering (not software/computer) in my undergrad so I was very fluent in algebra - which seems to be what programming is mostly about. I struggled to convince anyone that I was qualified, eventually got a crappy job at a fairly high-traffic website and bootstrapped my way up from there. However, along the way I met several programmers, some in high managerial positions, who actually sucked at programming. They could regurgitate bits of code and patterns if they had to, but as far as solving novel problems or teaching themselves new frameworks etc. they were totally lost.
One thing I noticed in undergrad is that it was hard to tell if some people just couldn't "do math" or if they weren't trying hard enough. No one understands complex math concepts the first time they see them and I certainly had to grind really hard in some classes to learn the concepts. But maybe they would have to grind 100X harder than me to learn them? Who knows. I like to think anyone can learn math if they work hard enough but I'm optimistic.
I think most people could probably perform math to a degree that is necessary to be a programmer or any other "close-to-math" profession at a sufficient level to remain employed using widely available tools. I doubt that all people can synthesize University math even if they spent an unlimited amount of time studying.
Well, what is "learning to code"? I'd say you start to learn how to code once you actually start to apply some of the theoretical classroom knowledge obtained.
I think "learning to code" is marketed as going to some intro course website, learning the basics of some language and boom, now you can code.
If you don't apply this to a real world application or hobby project, you never really get to wrap your head around the problem solving and debugging that start to occur when you are on your own, which I find crucial once you are thrown to the lions.
If I didn't have the classroom theory, I would have been thrown out of every interview I can recall. And sure, from time to time I've had to pretend to know some terminology whilst secretly studying up on it right after, but having the foundation taught by professors have surely been a building block in "learning to code".
I find the difference between "self-taught" and not almost laughable. Even if you have a post graduate degree in computer science to stay current and succeed in the field you will have to be particularly good at self teaching concepts, tools, frameworks, and everything revolves around being able to learn things on your own. Sure being taught more traditionally is very helpful for understanding underlying and foundational concepts but just saying someone is or is not self taught because they have a degree seems to not make a lot of sense. This probably relates back to why even a large part of those in degree programs struggle in the field if they don't have the self-teaching ability then even after earning a degree they won't succeed.
One thing I noticed in undergrad is that it was hard to tell if some people just couldn't "do math" or if they weren't trying hard enough. No one understands complex math concepts the first time they see them and I certainly had to grind really hard in some classes to learn the concepts. But maybe they would have to grind 100X harder than me to learn them? Who knows. I like to think anyone can learn math if they work hard enough but I'm optimistic.