top of page

The Failure of Coding Education

Coding education is failing in the United States and across the world.

In 2020, as I write this, white America is at last reaching towards an awareness of systemic racism. Blackbird Code exists to solve a related problem: Very few students, and especially, very few non-white or non-male students, are learning to code.

According to, in 2016, only 75 teachers graduated from universities prepared to teach computer science -- in the entire country. In the same year, 12,500 math teachers were trained. With the welcome advent of the new and more accessible CSP test, the number of high school graduates passing an AP computer science exam roughly doubled between 2016 and 2019 -- to about 1%.

This despite the fact that President Obama placed significant emphasis on the subject, and a majority of states have a program in place with the intention to teach programming to all the students.

No point in sugar-coating it. This is a failure, and a vital one.

Why is this happening? I believe it's an interaction of tech culture with institutional and technological factors.

  1. Education moves slowly. Compared to other subjects such as math, the emphasis on coding education is new -- maybe ten years old -- and we simply haven’t worked out how to do it yet.

  2. Most coding teachers are Career Technical Educators (CTEs), who left industry to become teachers. These professionals learned to code in the “school of hard knocks” which coding education remains today. Due to the combination of factors outlined here, it was extremely difficult for them to learn coding, and they naturally expect that it will be similarly difficult for their students. This shared experience tends to result in a culture of expectations which leads teachers to expect less of their students -- except for those few students who appear able to learn such a difficult skill.

  3. Programming (coding) is a craft, requiring long practice to learn. This practice can only be achieved using software; but there are systemic problems with the software used for teaching programming. These problems arise from the combination of factors identified above: Systems change slowly, and the software is designed primarily by engineers, because the lack of educators trained in coding. Between an old-fashioned approach to education (focussing on explanation rather than practice), the abundance of engineers working on the design (who tend to agree that they way they learned is probably the best way for kids to learn today) and the fact that the necessary technologies are expensive and difficult to build, the systems end up using engineering tools to teach.

This last, it turns out, has devastating consequences. To say that these engineering tools (referring to unmodified programming languages) are “unfriendly” is an understatement. They are simply inappropriate for teaching and learning.

In a programming language (such as Python, JavaScript, etc.), when you make a mistake, the system is likely to ignore it. For a beginner, this often means that their program doesn’t do anything -- there may be no indication that they’ve even tried to run it. This is discouraging! Of course, there could be an error message, but these messages are written for engineers, who know they’re likely to be meaningless; engineers usually pay more attention to the fact of an error message than to its contents. But engineers have the experience to deal with their errors without a helpful message. Students don’t.

Blackbird Code proposes a solution to these issues:

  1. Software designed by educators (trained in programming) to be encouraging, friendly, and fun, using educational versions of programming languages and friendly debugging tools. We have invested the time and money to build these tools.

  2. This software can be used by teachers not trained in programming. Not much training is necessary to teach to it; the teacher can learn alongside their students. Depending on the specific needs of the teacher, we can provide training in various formats, including, when necessary, a two-week summer intensive and ongoing support. We do not charge for this professional development / training.

  3. The teaching strategy emphasizes extensive practice with the software.

  4. Coding education should start in middle school, before students' concepts of their own aptitudes have crystalized.

  5. Once it’s clear that all students can, in fact, learn to code -- that is, it can be taught as effectively as math is taught, and by the same teachers -- the requirement to learn advanced math (everything not useful to a non-engineer) should be phased out in favor of a requirement to learn programming, which is a more useful job skill, and similarly trains students in logic and problem solving.

  6. The culture of computer science teaching needs to change towards accessibility to all students. We often find it difficult to convince CS teachers to adopt a system that makes programming education so accessible. “You’re making it too easy,” they complain. “Students will think it’s not difficult to learn, and when they run into the real problems, they’ll be discouraged.” “Your system is too much like Paint by Numbers,” is another objection we hear. "You can’t learn programming just by following instructions. It’s a creative process.”

It is a creative process. But as with anything, you need to start from the beginning or risk causing the student to disengage. Our system provides many opportunities for creativity. It’s up to the teacher to decide when to invite each student to start to take advantage of them.

The process needs to be as supportive, accessible and fun as it possibly can be. This is how we’ll begin to succeed at teaching computer science.


  1. According to a blog post by (, “We found that in 2016, only 75 teachers graduated from universities equipped to teach computer science.”

  2. According to the College Board, in 2019, 27,276 high school seniors took the Computer Science A exam, and 24,445 seniors took the new Computer Science Principles exam (see Note that this is less than the total number of students who took the exam, mostly because students who take the exam in 12th grade often also take it in earlier grades. They do not record how many of the students who took CSA also took CSP, so the total number of students is unclear. The pass rates for CSA and CSP, respectively, are 71.9% and 69.6%. Of course, the pass rates for seniors might be higher than for other students, which is an unknown that I can only compare to the unknown number of students who took both exams. My conclusion is that something less than 52,000 graduating seniors took the exam, of which something above 70% passed it, for a total of something like 36,400 unique graduates, or just about 1% of the 3,642,960 graduates in 2018-29 (


bottom of page