Why are you advocating the teaching Computer Science? Aren’t there far more important subjects for our kids in school?
Have you ever wondered why we have so many restaurant delivery apps? How many Task Rabbit style apps do we need to hire people to help us finish our to-do lists? Can all of the ridesharing services like Uber and Lyft be sustainable? Have you tried any of the multitude of apps that will arrange to pick up your dirty laundry, clean it, fold it, and deliver it back to your apartment, while you are at work? How do these questions relate to teaching computer science and the problem of diversity that plagues the technology industry?
I believe learning computer science is an important skill for both students and teachers, but what exactly does this mean? What is computer science anyway?
In “Computational Thinking and Coding for Every Student”, the authors Jane Krauss and Kiki Prottsman define computer science this way:
You can think of computer science as the study of how to use computers and computational thinking to solve problems, not merely the act of using computers. It’s like the difference between watching a movie and producing and directing one.
I like the metaphor of filmmaking because it makes it clear the difference between computer use and computer science. Consuming tech media is like watching a movie. Using computer applications is like choosing the movie. Computer science is like directing the movie. Who wouldn’t want to move their students to the domain of being able to direct their own movie? Student voice, self directed, relevant topics, of course we should be doing this.
The other part of the definition I appreciate is the “to solve problems” part. This is also the problematic part, here’s why. What problems are being solved by Task Rabbit, Blue Apron, Cleanly, Uber et al? Let me practice the computer science concept of abstraction to give you an answer. I’ll generalize an answer that can mostly work for all the services listed. These services get essential daily tasks done, for people who work long hours, who would otherwise run out of time to do them, and have enough money to pay for them.
In “Computational Thinking and Coding for Every Student”, the authors Jane Krauss and Kiki Prottsman define abstraction this way:
Abstraction is the practice of ignoring certain details in order to come up with a solution that works for a more general problem.
I think that captures the issue. You might be thinking, these services sound great, I have some of these problems, and it would be great to get them taken care of. Sure that’s one side of it. How many people in the world will not now, or maybe ever, be able to afford these services? I don’t know the answer, but I’m sure it’s a far greater number than the people who can take advantage of these services. Even more importantly, how many of these services don’t even address the problems that the vast majority of the people in the world face? For example, the working poor tend to have 2-3 jobs, and are every bit as busy as an overworked tech worker. I don’t think, however, the working poor are plotting their dinner options on Blue Apron.
The tech industry has a well documented diversity problem. It tends to cater to and hire upper middle class white males. I worked in tech for 2 years and I can attest to this. There are many recent studies proving this as well. Google it. How does this influence what products and services are built and shipped?
If tech companies are made up of primarily upper middle class white men, then the “problems” they solve, are the problems that they, and their communities, face. We know what these problems are because we know the apps that are in existence now. We know they work long hours and don’t have time to do laundry, make food, clean their homes, send flowers to their mothers, etc. Many people jokingly call these #firstworldproblems but it is a serious issue to consider. Most people around the world do not suffer from these problems, and yet, here we have tons of apps, devoted to solving these problems.
What would happen if we taught a comprehensive computer science curriculum to students in marginalized communities, to students of color, to students in communities that are underrepresented in the tech industry? A curriculum that focused on problem solving. A curriculum that was intentional in giving students from communities like these, a voice, and empowering them with the tools and skills they need, to build it and ship it. What problems would these students identify as urgently needing solutions? What apps and websites would they build? What issues would they tackle? How would our lives be enriched, all our lives? How would this impact equity and social justice? How could this impact the inequitable global distribution of wealth? How might this transform society? Do you see how much is being lost, but not empowering students like these in the realm of computer science?
What are the answers? I don’t know, but I want to find out. I get chills thinking about “what might be” if we offered CS to all students, because I believe the kids are alright. I work in the San Francisco Unified School District and we are rolling out #csforall in all grades K-12. We are going to find out. The kids these days . . . are not much different than kids in any other days. Let’s teach them, support them, and let them fly.
This post is the first of a series I plan to write about why it’s important to teach Computer Science (CS). Given the serious challenges many of our urban public schools are facing these days, rolling out a comprehensive CS curriculum is often met with resistance, sometimes rightfully so. I’m working on my elevator pitch so I can always have a succinct clear answer. Above was my first draft, I’ll have many more to come, until I get it right.Please follow and like us: