By Michael Kaiser-Nyman
As our society grows increasingly aware of the power of computer programming, both to shape how our world works and provide high-demand jobs, some people have suggested that we require all children to learn how to code. I think this is a terrible idea. Here's why.
When I was a kid, I became interested in programming, and I was lucky enough to have parents who helped sign me up for community college classes. In an era when coding has become such an important skill, it would be absurd to require kids to navigate the community college system if they're interested in learning to code, and despite this post's title, I'm all for offering courses in our K-12 education system. But I also strongly believe in the importance of letting kids choose if and when they want to learn programming. When my interest waned as a teenager, my parents didn't pressure me to continue coding, and I think that's part of why I ended up becoming a successful developer - I had the freedom to pursue it when I wanted to and when I was ready. Forcing all kids to learn to code risks killing the joy of it for those who would otherwise come to love programming, and turning it into yet another test to take for those who never had any interest in the first place.
Furthermore, the focus on teaching kids to code is misplaced: the most important skills our education system can provide to children have nothing to do with software or technology. When I started Epicodus, before I ever wrote a single word of curriculum, I asked many programmers and hiring managers what Epicodus should teach. I was shocked: people talked very little about languages or design patterns or technologies. Instead, I heard about teamwork, self-awareness, communication, and humility. "Sure, that's fine," I would say, "but what about the coding skills? Isn't that the important thing here?" The resounding answer I received was "no". Across the board, employers told me that they needed a certain baseline level of skills to hire somebody, of course, but so long as somebody had that baseline, their so-called "soft skills" were far more important. One developer told me something along the lines of: "I can teach a junior developer the coding skills they need to solve the problem at hand, but I can't teach the curiosity they need to solve the next problem without my help." Another told me "The greatest risk to a software company isn't their code, but how their employees work together."
At Epicodus, we try to foster soft skills like communication, teamwork, and curiosity. But the best time to develop these skills is as children. People can learn to code as adults - I see it happen every day. Their gains in soft skills are smaller and come more slowly, though. It would be great if every child had the opportunity to learn to code, but it would be far better if every child graduated high school excited to learn and explore, effective communicators, and adept at resolving conflict with their peers. Even if they had these skills and had never seen a line of code before, they'd likely turn out more successful than a programming whiz coming out of the average American high school today.
There are many great reasons to encourage kids to learn to code: it sets them up with a vocational skill, it helps them understand how our technology-driven world works, and it develops their problem-solving and logical abilities. But not every person wants or needs to learn to code, and even those who do can be successful learning as adults. The interest in coding in K-12 education is misplaced. It's far more important that we re-tool our education system to give kids more opportunities to develop teamwork experience, communication skills, and curiosity to become lifelong learners.