Despite being “someone who’s been making software and Internet technologies for 20 years”, tech pioneer Anil Dash is “skeptical about ‘teach the kids to code!’ as a panacea for all of society’s ills”. Me too, and he does a great job of making the point.
To start with the obvious elephant in the room, many of the people advocating for these programs aren’t particularly knowledgeable about technology, or the economics of today’s tech startups, in the first place. (Most people making policy haven’t yet realized that there is no “technology industry”.) And most of the technologists advocating for these programs aren’t particularly literate in how today’s educational systems work, or what constraints they face.
Most of those policy makers also don’t have a clear idea of what students need to learn and be able to do before they move into the real world. Their concept of “school” is usually firmly rooted in the 1950’s, with their favorite “solution” – charter schools, STEM, standardized testing, coding, and more – grafted onto the standard framework.
Anyway, in the case of coding for all, advocates often make an economic claim, one that says American companies will be desperate for new workers to write software, with the numbers often in the hundreds of thousands. But even if all those vacancies come to pass, Dash says turning schools over to code training is not in the best interest of society.
If the effort to educate many more programmers succeeds, simple math tells us that a massive increase in the number of people qualified to work on technology would only drive down today’s high wages and outrageously generous benefits. (Say goodbye to the free massages!)
And at a more philosophical level, a proper public education, paid for by taxpayers, shouldn’t be oriented toward simply providing workers for a group of some of the wealthiest, most powerful companies to have ever existed.
However, Dash does believe that every students does need a basic understanding of technology literacy and computer science, saying that these concept, woven throughout the curriculum could be “a powerful way to empower the most marginalized, most needy people in society”.
Rather than turning every school into coding academies, he wants us to commit to some broad principles about how we teach computer science, including teaching computational thinking which includes an understanding of how “human concerns are translated into problems that computers can help solve”.
As we commit to broadly teaching technology, we must do a better job of addressing all of the personal, social, cultural, and civic concerns that arise with technology’s transformation of our society. Teaching CS as simply a way of filling a pipeline of employees for giant high-tech companies is not enough. Indeed, if that’s all we succeed in doing, we’ll have failed. But if we can show a whole generation of young people that technology and computer science can be one of the tools they use to pursue their passions, and amplify their impact on the world, we’ll have made a worthy addition to the canon of material that students use as a basis for their life’s work.
As someone who has studied computer science and taught programming classes, Dash’s ideas sounds a whole lot better than what is in most of the “computer science for all” proposals I’ve read.
I’m a big advocate of teaching programming to all levels of students, but it is never about the students becoming programmers. It’s to instill in students a basic understanding of how technology works, what boolean logic is, and the basic of computer science.
Students learn to write without the expectations of becoming authors. They learn music without the expectations of becoming musicians. They learn basketball, baseball, and other sports without the expectations of becoming professional athletes. Why would teaching programming be any different?