Should All High School Students Learn Programming?

Google, Microsoft, Oracle and other tech giants propose that computer science become a required proficiency in Massachusetts public schools to help address the technology labor shortage. Critics call this a kludgy solution.

8 MOOCs Transforming Education

(click image for larger view and for slideshow)

Technology is pushing education in two directions. One is up the mountain known as technology adoption. The other is into the valley of creating demand for more tech-savvy people.

As any CIO knows, adding technologies always involves a climb. Technology advocates and sycophants will call the climb a gentle stroll and extol the views from the top. But getting something valuable out of a technology can be a perilous affair -- CIOs fall off the mountain, those meant to use the technology get lost or trapped or crushed in avalanches. Even those who make it to the top often find the view obscured.

The climb could get easier if we had more tech-savvy people. What if everyone in the country actually knew something about programming? Why don't the schools educate people to be more technological? Shouldn't the three Rs (reading, writing and 'rithmetic) get an update?

That's a proposal from some major technology firms, including Google, Microsoft and Oracle, that are pushing to have the Commonwealth of Massachusetts require computer science courses for all public school districts and add computer science proficiency to the standard tests a student must pass to graduate from high school. Those tests currently include English, math and a science or technology field. If the proposal finds traction, Massachusetts would be the second state to mandate technology education, after South Carolina.

One of the leaders of this push, Google's Steve Vinter, told the Boston Globe, "This is really about workforce development."

The Globe reported that there are about 150,000 computer science and math-related jobs added every year in the U.S., and only 100,000 college graduates with relevant degrees. The tech companies argue that many more jobs than those 150,000 require computer proficiency, and that it should be a core part of our educational system. Meanwhile, only 713 high school students in Massachusetts took an advanced placement exam in computer science last year.

People need to be able to read, write, do math and reason. All of these subjects should be taught in the schools. But do all people need to be able to code?

Before you respond, consider these questions:

-- Why? Existing math and science classes should teach the major building blocks of reasoning we need for programming.

-- What language would be taught? My knowledge of BASIC and Pascal, gathered in high school and college, isn't even worth putting on a resume these days.

-- What do companies do with their workers when languages change -- send them back to high school?

-- If companies think a few single-semester high school classes in programming will help, why don't they offer it themselves?

As to that last question, there's precedent. IGN and Zoho are two relatively small businesses that still manage to develop programmers from unconventional backgrounds. Zoho runs its own university to train high school students how to program.

If these smallish businesses can do it, why can't Oracle or Google or Microsoft? It might be easier for them to attract people capable of teaching programming. Such people would certainly make more money in the corporate world. Companies could set up apprenticeships that would create work experience for would-be programmers. Besides, isn't it disingenuous for tech titans to suddenly decide that the government, usually bashed for incompetence, is the best way to educate workers?

Education CIOs know they face widely divergent climbs. Even in a high-tech state like Massachusetts, the topography of education technology varies broadly: Some schools exist in a technology desert, with poor connectivity, no infrastructure and no ability to invest in teacher training. Their climbs are fraught with peril. Other schools, with resources and time, might indeed find the slope gentle.

Also, requiring computer science might turn it into just another subject kids feel is force-fed to them, warns Alec Resnick, part of the founding team of the Somerville STEAM Academy, a proposed public vocational lab school in Somerville, Mass., that will focus on computational, project-based education modules for arts and science. The STEAM Academy is tentatively slated to open in the fall of 2014.

"I read the Globe article, and the first thing that came to mind is, 'I really hope that computer programming doesn't become just another thing to push down the pipeline,'" Resnick said. "There's this notion that school is tasked with information transmission. I bristle when I hear people say we need to add this thing or that thing to the pile, computers especially. It's not a topic that you cover the way you talk about traditional subjects. The most exciting part of programming happens outside the classroom."

While Resnick doesn't argue that it's important for people to have fluency in computing, he also points out, "We don't measure our English literature teaching by how many authors it produces. Should we measure our computer science programs by how many software engineers we produce?"

There's an issue beyond schools: it's the way we program. I recently interviewed the CEO of a Massachusetts software company who thinks we need fewer programmers. "Should everyone program? I think that's wrong," says Alan Trefler, CEO of Pegasystems, a fast-growing Cambridge company that makes enterprise software. He thinks the U.S.'s entire approach to programming is wrongheaded and stuck in the 1950s. What businesses need, he says, is to eliminate the need for so much programming.

Maybe that's not possible. Maybe programming should become part of the vocational school curriculum. But jamming programming into an already maxed school day seems like a kludge. Let's hope Google and Microsoft and Oracle realize they're going to fail before they start, and come up with something better.

I like the article.Coding should be introduced to schools as a regular or at least an optional subject to choose, since the technology and the education itself are going in this direction.The curriculm needs to be created in a manner that it will not reject students' interest, but the opposite. Proper teacher should teach it.

I would agree that requiring students to take a semester of programming in high school warrants serious consideration. MassCAN sounds like it wants a lot more, though let me note that I could not reach the MassCAN people directly.

A practical issue with proposing to add computer science as a requirement are the number of things already jostling for time in the school day. I've had people make arguments that financial literacy should be added, and that every student should learn a second language (a spoken language, not a computer language). It's also a big question as to where we would find enough teachers who could teach computer science.I've heard anecdotally that it's hard to find math teachers, which would suggest a problem finding computer science teachers. I did not find statistics specific to Massachusetts on math teachers (I did find a report suggesting that there could be a shortage of math teachers in the future). If anyone has them, I'd be interested in seeing them.

It's a good point to raise, and perhaps worth a follow-up -- why isn't the existence of something like Oracle University, or Microsoft university, etc. enough to do the job? I assume Oracle U does still exist, but is not targeted at teaching non-programmers the art of programming.

These companies want all students to learn computer science. That is so nice and noble. However, unless you're going to extend the school day and/or year, you will have to drop something from the curriculum to make room for it. We don't have enough people who know how to program? Basic economics says if there is a shortage of something, raise the price you are willing to pay for it, that will increase the supply. Pay programmers more, and more people will be willing to learn how to become programmers.

It's not programming that's important - it's learning. And we are abandoning learning, substituting a collection of (soon to be obsolete) technical manuals and a slide rule or a calculator or a desktop computer or a 'smart' phone or a tablet or a brain-driven whatever for the real thinking that can derive knowledge from scattered information. If we don't understand the tools we use they will use us - and we won't like it.

And in the same vein I beg to differ with jonten's comments on binary, octal and hex math as being 'totally useless .....and... confus[ing].' I, too, was a new math victim in the mid '60s and, as with any subject, a the teacher who doesn't understand the material can't help the students, either. I guess I survived some bad teachers - I'm sorry jonten didn't.

For me, something stuck and when the time came to make those seven segment LED displays work (circa 1974) that hex math came back like gangbusters - and has never left me - just as the logarithmic conversions related to the slide rules that seemed so arcane, important and useless at the time are still useful when I work with filters, power devices and RF.

As for HTML - I don't write raw HTML anymore but it sure is useful when trying to figure out why a web page doesn't look right - it's the pidgin language of the web, often used but never honored.

But to get back to education - the word 'mathematics' comes from the Greek root 'to learn' - it is a way of training the mind and is closely connected to the key liberal arts of grammar, rhetoric and logic. Add arithmetic, geometry, music and astronomy and you have the seven classical liberal arts that are the wellsprings of our Universities.

If we equate education with knowing where to look in the manual we are the poorer for it - and we will never be able to write the manual, let alone build the thing the manual is supposed to describe.

Two thousand years ago Titus Livius bemoaned the decline in the education and morals of the youth of Rome - and each generation before and since has done the same. Times change, what we think we know changes, but the essential functions of the human brain do not change and if we think a quick look at the current (or two versions back) manual and a few lines of the latest coding language are 'knowledge' we are in bad shape - learning, in its core, does not change, and it is the responsibility of all of us to learn all we can before time overwhelms us all.

In the mid-1960s, when I was in middle school, it was decided that we needed to be exposed to "new" math. This was exposure to binary, octal and hex math that was totally useless and only served to confuse most of us. This looks like the same thing. I can't begin to list all of the programming, DB and HTML type languages that I've been exposed to over the last few decades in IT and most of them are no longer in existance. With things changing so quickly, the language they learn in HS will be outdated by the time they graduate. Most of the kids in HS will never move on to high tech jobs so why add this to the mix when most students don't seem to be grasping the basic HS courses.Make it an elective in HS and let them broaden their knowledge post HS.

Nothing wrong with all high school graduates having worked through one project giving a set of instructions to the little man inside the box, same a few weeks learning to sew a button or make a birdhouse.Maybe a few of them will realize they want to study it more.

But "so local tech companies donG«÷t have to rely on foreign workers to fill future programming and engineering jobs"? Besides the fact that they don't have to (stop showing young would-be engineers that they are setting themselves up for a career of stagnant wages, if they can find work in their field at all, and the right kids will do what they love -- as others wrote there are plenty of unemployed and under-employed engineers available now) there is no way to teach what one learns in a 4-year college degree plus years as a junior engineer in one, or even several, high school classes.

Kudos to the Gates' and Zuckerberg's and Karp's who had brilliant ideas at the right time and were able to develop them to marketability. If you were a manager with a legacy project that needs maintenance and enhancements and isn't a quick and dirty operating system nor a Web 2.0 social application nor a photo sharer, would you rather have one of those wunderkinder on your team, or a trained and broadly experienced engineer?

Like yours, our local middle school also taught all students "Keyboarding," which replaced the old Typing course. It did teach the students how to use the basic office applications: word processing, spreadsheets, presentations. Good skills for anyone to know no matter what career they ended up in, and certainly useful for any subsequent school and college courses.

Programming? Keep it as an elective, but encourage all school systems to offer it.