Teaching computer science is no more about creating more software developers than teaching English is about creating more novelists.This is important. A lot of justification for more computer science is about jobs. That is a popular “reason” by politicians and people in industry and it is a popular target for critics. Audrey Watters did so at “What Do We Mean By 'Computer Science for All'?” on her blog. Gary Stager took it on at President “Obama Discovers Coding – Yippee!” Both well written attacks on a straw man in many ways.
Jobs are hardly the reason most CS education activists are trying to get more computer science into the school curriculum. Even the companies I have been interacting with see CS education as more than about jobs or even about people learning on their software. Sure politicians like to pull out jobs as a way to get funding for things. It’s an easy excuse for just about anything. There actually are good jobs in the field and not just for people doing full-time development. And companies are looking for good employees. But there is more to it than that.
We need people to understand computing. We don’t teach physics, biology and chemistry to create more physicists, biologist, and chemists even though there are good jobs in those fields and we do need people to do them. No, we teach them so that students understand the world around them.
Unless you have been hiding under a rock there seem to be more and more computers in the world around us these days. Shouldn’t people understand them somewhat? What I mean by CS for All is a lot more than jobs. And I think that is true for most of the people I know who are celebrating Obama’s CS for All announcement. It is about:
- Opportunity for everyone. Right now we have an abundance of white and Asian males in the field. That is horribly limiting both for underrepresented groups and for us old white males who would like more creativity and innovation in computing. Is it fair that only students in well-off schools get the opportunity to learn computer science?
- Understanding the abilities and limitations of technology. How can you have a discussion about Apple’s current disagreement with the FBI over building a way to break into iPhones if you don’t understand software and computer science?
- Becoming literate in a modern liberal art. Part of being an educated person today has to be understanding some computer science along with the other sciences and disciplines that make up a well-educated person.