As someone who learned to program at age 14 and who benefited immensely from the opporunities my high school's computer provided, I think that it's a great idea to give more children a similar chance. Programming was more fun than just about anything else I'd ever done, and it quickly displaced math, physics, and law as possible career paths for me. (No, I probably would never have become a lawyer, since math and science were too much fun, but I was interested in law and policy even then.) And yes, quite obviously my career path was shaped by that early opportunity.
Given all that, I'm delighted by the White House's "Computer Science For All" initiative. Even people who don't become programmers—probably the large majority of students who will take these classes—will benefit from that sort of thinking. That said, I do have a few concerns.
- Teaching the teachers
- The White House recognizes that we need far more people qualified
to teach computer science. It's a crucial need, but I wonder if
$4 billion is nearly enough money. I wonder if we need another level:
teaching the teachers who will teach the children's teachers.
The teachers have to really understand programming. I had another spot of luck when I was young: I had a relative who know how to program and who could answer my questions. My career almost died aborning; there were two or three crucial ideas that I just didn't get at first. I don't know if I'd have been able to work past them on my own.
- Reteaching the teachers
Computer science is incredibly dynamic, even at the introductory
levels. Let's put it like this: the iPhone is less than 10 years
old, but it's completely changed the industry. Teaching children
to program but ignoring smart phones would be a bad idea, if only
because they'll be less interested in the subject
matter. But progress isn't stopping
with smart phones; not very many years from now, school kids will
want—need—to learn about programming the next big thing,
whatever it will be. Internet
of Things? Wearables? Programmable drones?
I have no idea, but I'm sure it will happen.
In other words, the teachers are going to need frequent refreshers. The curriculum will also need frequent updates. There is in-service training today, but I suspect there will need to be more. In most subjects, the content of the course doesn't change drastically every five years; in computer science, it does. (Yes, programming is programing. But the details of what you program will change.)
In other words, the the training budget has to be an ongoing commitment. Even if $4 billion is the right number now, more will be needed not very many years in the future.
- Buying Equipment
requires computers and software.
Computers age and they don't age gracefully; software is even worse.
The hardware will need
to be replaced every 4-5 years; the software will need to be
upgraded every year or two. This, of course, also requires money.
I suspect that there also should be a subsidy for equipment and Internet connectivity for poorer households. You learn programming only be doing, and it takes hours of non-class time for every hour of instruction. Students who don't have easy access to current-enough computers and software won't learn.
In other words, teaching programming to all children will require a notable amount of extra money, on top of today's budgets, every single year. Furthermore, if extra funds are not allocated to poorer districts, much of the money spent there will be wasted and we'll worsen the digital divide.
I am not saying that the White House initiative is a bad idea—quite the contrary, in fact. I am saying it's just the down payment on a long-term effort. The challenge now is to identify where the continuing funding will come from. It might be reasonable to give priority on the initial outlays to districts and states that have identified and committed to a sustainable funding model—but again, this has to be done in a way that won't worsen poverty.