THE GAP by Ira Glass from Daniel Sax on Vimeo.
Learning to program is incredibly difficult. The degree of difficulty varies from person to person. Some struggle more than others sure, but I don't think anyone would say that programming is easy.
The Dev culture at large however gives the impression that it is easy. "Anyone can learn to code", they say. "Fake it, till you make it", is the ethos. Learn in public. Hashtag 100 days of coding.
You got "self-taught" developers with YouTube channels selling you that you can "self-teach" yourself, $15 Udemy courses, wannabe mentors with only 2 years of experience flexing in online communities, Bootcamps, and incredibly nice Canadians like Wes Bos.
These people are not saying that it's literally easy, but they sell people the idea that it can be. They sell the idea that if you follow a number steps, that if you follow this formula or that formula, you'll get there soon. We all love formulas.
I think many people starting out are aware that it's hard. We know that it will take time, but we all tend to bury that knowledge a bit and go along as if we'll be able to reach mastery sooner rather than later. This is why we fall for formulas. We buy all the Udemy courses, books, and get expensive loans to go to Bootcamps.
Teaching people to program is probably even harder. We came up with Computer Science as the best way to impart the knowledge and discipline of Programming. But I don't think we have cracked it yet and it's probably because this is a relatively new field of knowledge that is constantly changing. It hasn't settled.
Other knowledge domains like Sports, Chess, Medicine... these disciplines have been out there longer. They've had the time to develop best practices when it comes to teaching it and learning it. Most people that get into these domains have a better idea on the learning time frames and where they are in the "learning curves". They know up front that it's going to take at least 8+ years to practice medicine. People that teach the Violin have a good sense on what it takes, and how it long it takes, to get at least decent at the Violin.
Programming unfortunately is not quite there. It hasn't been battle tested that way. There's been some attempts, like identifying levels like junior, mid, and senior, but this is mostly a hr/salary negotiation thing, than something that can reliably indicate someone's knowledge rank.
Identifying gaps is difficult, specially when you're on your own. Because you know, the unknown unknowns. It's going to take time. How much? Probably way much longer than you think, and you should be ok with that. You don't need to spend 10 years learning to code to get a job in Programming, but you probably need 10 or more to become actually good at it.