&gt; There seems to be a ‘double hump’ in the outcome of any programming course between those who can code and those who can’t.<p>In my humble opinion, this is because the pedagogy sucks. Intro CS classes tend to teach in a very weird way, with very conflicting goals. Is the point to teach your way around a linux shell? Tooling? Basic programming? Algorithmic thinking? Good engineering practices? To teach automata theory? Complexity theory? Most courses answer &quot;ALLLLLL OF IIIIIIITTT!&quot;<p>Further down the article, you see that there is a large percentage of self-taught programmers. I suspect that this ratio goes through the roof if you ask &quot;have you done a lot of CS &#x2F; software learning on your own&quot;.<p>This is because self teaching lends itself better to learning and practicing over and over the diverse variety of skills required to be a successful programmer. Intro classes go very quick and fail to instill any of that. So those who are successful are a lot of times those people who are already long exposed to computers, algorithms, programming or the ideas accompanying those in some shape or form. Or those who find it immediately fascinating and put in much larger amounts of time than a course would normally require.<p>Those folks who simply haven&#x27;t had a lot of time programming struggle, and eventually they drop out. And nothing changes to improve this because part of the class succeeds, and thus the conclusion made is that the part that dropped out must have been &quot;bad&quot;.<p>There&#x27;s a false dichotomy here. Yes, programming is difficult. Yes, being successful in the real world requires a lot of work. And yes, like any craft, the rabbit hole only goes deeper. But the conclusion here isn&#x27;t that most people just &quot;don&#x27;t have the aptitude necessary&quot;. Most people, given the same time and guidance, can succeed.<p>The most important part is that getting somewhere immediately &#x2F;useful&#x2F; can be quite quick. That&#x27;s where programming shines - reasonably low investment costs for a moderate benefit for a lot of people, which eventually rolls into a high investment cost for a massive benefit.