It's a fact: We are increasingly connected to computers and other devices. In many cases, we’ve almost come to see hardware, and the software that runs on it, as an extension of ourselves. What's interesting is how few people are speaking their own language - or at least the language their computers use. Yup, we're talking about computer coding, and there's a major movement of people who think more of us should know how to do it. Here we'll take a look at the disconnect between our reliance on technology and the public's overall lack of understanding about how it works. We'll also examine the arguments for and against widespread computer science education. (Learn about some of the earliest attempts at computer programming in The Pioneers of Computer Programming.)

Coding for Non-Coders: What's the Point?

There are a lot of compelling reasons to look at broadening education around computer programming. One is the job market, where experts decry a lack of skilled workers, and where analysts are contending that American IT education initiatives could push the U.S. skilled worker back toward prominence on the international stage.

But there is also the inherent value that these skills can bring to the individual and his or her skill set. Coding leads to a kind of concrete achievement, and as those who have experimented with it will often testify, it provides a tangible sense of personal victory and empowerment. Learning it provides deeper and more profound understanding of the nearly infinite ways that we can use computers.

The "Coding For Everyone" Movement

In recent years, educators and other advocates have begun to assemble solid initiatives to promote the use of computer programming in classrooms and in other educational venues. An article that appeared in Slate magazine in March 2013 covers an event called New America NYC, where pioneers in technology discussed the value of bringing computer programming skills to a greater global audience. The verdict? Basic computing literacy would empower anyone who uses a computer or smartphone. The problem is that the current education system is severely lacking in computer science education.

So how can kids learn these skills? A January 2013 article on Geekosystem covers Code.org, a startup led by Hadi and Ali Partovi (individuals previously involved in big projects like Facebook) that is generating videos for classroom use and otherwise promoting more accessible tools for building personal skills in computer programming and IT. Code.org spotlights innovator Steve Jobs' promotion of computer programming as a universal way to "teach people how to think." The idea that programming, which blends quantitative skills and language skills, can help the average person build certain cognitive functions is another argument behind getting more young people involved in computer science.

One of the most popular ways to promote computer programming is through free educational resources. These are becoming increasingly common, and include Mozilla School of Webcraft, Google Code University, Code/Racer and Codecadamy, among many others. In addition, some new technologies also promote good access to programming tools and principles, such as Raspberry Pi. The result is that learning code is becoming easier than ever.

Why the Critics Say, "Why Bother?"

Against the backdrop of this growing movement, there are also some who say that coding really isn’t for everyone, and that we shouldn’t push it on the masses.

In a story that appeared in Slate magazine in August 2013, writer Chase Felker talks about the difference between learning something and actually understanding it. Felker writers that while people can build basic projects without a lot of training, it takes huge amounts of time and energy to really be able to program well. As a result, the idea that the vast majority of people can learn enough coding to make it useful in any way may be overly optimistic.

This argument is an interesting one, and delves into the difficulty of mastering fundamental ideas about code sustainability that go far beyond syntax and into the principles that support stable and versatile working projects. For instance, correct syntax will get the computer to do what you want it to do, but it will not prevent any number of bugs or glitches, including potentially dangerous ones related to user-generated events that have their own impact on code during run time. In order to ward off many of these problems, the professional programming community has evolved various best practices and strategies using white space, commenting, modularization and other techniques that get into the formative coding of functions and procedures that need to work well together. Those, as you might imagine, are no less important than the basics, but they are harder to learn and understand.

Felker also promotes what he considers a healthy alternative to trying to get the average person immersed in what can be a very demanding conceptual framework. Instead, writes Felker, it might be useful to promote teaching the average person how to use software in a more practical way, such as how to maintain an operating system over continual sessions, or how to do basic network administration.

This is where there is opportunity for a lot of instructive debate. Where does the creation of a "hello world" program lead into the evolution of those principles that prevent much more complicated programs from hanging out and crashing in an array of awful ways? How much do people really want to know about computer programming, and who should teach them? Will a basic coding education provide real benefits for the majority of students, or just trap them in another annoying study that that saps their time and energy?

To Code or Not to Code?

While these questions can be raised, it’s hard to argue with the idea that the American educational system is underutilizing the power of teaching programming to kids. Many agree that the existing institutional and cultural realities of the education system leave a lot to be desired. From that standpoint, the clear advantages of introducing something like basic programming seems like a no-brainer. But as with all of the other curriculum that we use to bring up new generations of students and career professionals, it’s up to instructors and others involved in the process to find ways that deliver the positives of programming education without some of the potential pitfalls. It’s also up to the prevailing culture of the country to realize that it’s actually pretty cool to know how to use technology, and that when it comes to taking on the general study of how computers work, the average user can benefit from lighting a candle, rather than just cursing the darkness.