How about teaching English, Math, Science and such first? US students are in many cases barely able to read and fail miserably at math. Let's get everyone up to a first world level before we worry about computer science for everyone. CS should be an elective.
Jeff Atwood for Education Secretary.
Learning to code is overrated: An accomplished programmer would rather his kids learn to read and reason
BY Jeff Atwood
NEW YORK DAILY NEWS
Sunday, September 27, 2015, 5:00 AM
Mayor de Blasio is winning widespread praise for his recent promise that, within 10 years, all of New York City’s public schoolchildren will take computer science classes. But as a career programmer who founded two successful software startups, I am deeply skeptical about teaching all kids to code.
When I became fascinated with computers as a teenager in the early 1980s, computers booted up to a black screen and a blinking cursor. You had to learn the right commands to get them to do anything at all. In other words, you were forced to become a computer programmer in order to be a computer user.
One of the great achievements of modern computing is that we no longer need to be programmers to create, build and get things done with the amazing supercomputers that everyone carries around in their pockets.
That’s a victory we should claim for our kids — rather than purposefully, almost gleefully sending them back to the era before computers became user-friendly tools.
I’m not saying young people should be oblivious to the way the sausage is made, any more than they should be oblivious to where their food comes from. Indeed, in the coming decades, there are thousands if not millions of good jobs waiting for skilled programmers and creative thinkers who understand the logic of programming.
But as someone who’s been immersed in the digital world for most of his life, I can attest: Computer science is less an intellectual discipline than a narrow vocational skill.
If someone tells you “coding is the new literacy” because “computers are everywhere today,” ask them how fuel injection works. By teaching low-level coding, I worry that we are effectively teaching our children the art of automobile repair. A valuable skill — but if automobile manufacturers and engineers are doing their jobs correctly, one that shouldn’t be much concern for average people, who happily use their cars as tools to get things done without ever needing to worry about rebuilding the transmission or even change the oil.
There’s nothing wrong with basic exposure to computer science. But it should not come at the expense of fundamental skills such as reading, writing and mathematics — and unfortunately today our schools, with limited time, have tons of pressure on them to convey those basics better.
I’ve known so many programmers who would have been much more successful in their careers if they had only been better writers, better critical thinkers, better back-of-the-envelope estimators, better communicators. And aside from success in careers, we have to ask the broader question: What kinds of people do we want children to grow up to be?
It’s true. Anyone can learn to code. But very few people can explain why they wrote a line of code, what that code does or convince other people to use it and help them build it. These are all essential human skills that have everything to do with the art of communicating with other people, and nothing at all to do with the writing code that a computer can understand.
Learning to talk to the computer is the easiest part. Computers, for better or worse, do exactly what you tell them to do, every time, in exactly the same way. The people — well . . . you’ll spend the rest of your life figuring that out. And from my perspective, the sooner you start, the better.
I want my children to understand how the Internet works. But this depends more on their acquisition of higher-order thinking than it does their understanding if ones and zeroes. It is essential that they that treat everything they read online critically. Where did that Wikipedia page come from? Who wrote it? What is their background? What are their sources?
Learn to investigate. Be critical. Don’t just accept opinions you saw on Facebook or some random web page. Ask for credible data, facts and science.
I want my kids to experiment with their computers, to collaborate and learn with other people through them. To think of their computers not as special devices and instead leverage their potential.
What will you use it for? What will you do with it?
If you want your kids to have a solid computer science education, encourage them to go build something cool. Not by typing in pedantic command words in a programming environment, but by learning just enough about how that peculiar little blocky world inside their computer works to discover what they and their friends can make with it together.
We shouldn’t be teaching kids “computer science.” Instead, we should provide them plenty of structured opportunities to play with hardware and software. There’s a whole world waiting to be unlocked.
Atwood, a software developer, blogs at blog.codinghorror.com.