Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think the author overestimates how much encapsulation we will see of actual programming. See the recent HN entry on programmerless programming (http://news.ycombinator.com/item?id=1753634) as well as Brooks' "No Silver Bullet."

Beyond that, he misunderstands the reason for teaching programming. Not everything taught in high school is expected to be the basis of a student's profession. We don't teach English classes with the intent or expectation of turning all of the students into professional literary critics, and we don't make everyone take algebra because we think they will or should all become mathematicians. Similarly, the basics of programming can be useful to a lot of people who aren't professional programmers. Everyone I know in technical fields (and many people who aren't) had to write code to solve a problem at some point.

With regard to applying existing encapsulations, it seems there are too many with interfaces too different to gain much from teaching how to use individual components. If we can find something that applies generally to all of them, we'll have something worth spending the time to teach.

Perhaps I'm less inclined to see programming as something exclusively for specialists because I first learned programming from someone whose profession and primary expertise are not programming.



This is exactly what I think. I often rant about how everybody needs to learn to program, but what I mean is not so much being able to write code in a specific language as the mindset of approaching problems, and having an understanding of how a computer works. Today programmers are in a sense the gatekeepers of information and I don't think that's healthy in the long term.

There are several layers to this. In general, I think people older than ~50 approach computers in a totally different way than people younger than ~20, with us in the middle a little spread out. A good friend's father, for instance, used to hit Space in his word processor to center headings. He didn't do this because he didn't find the button for center alignment, he did it because he didn't think to look for it.

Another dad recently bought a new Android phone. He was studying the rather thick manual carefully, while his 10 year old daughter grabbed the phone, snapped a picture and just started using it. Startled, her father asked her how she knew all this stuff, to which she replied that she didn't know how to do it beforehand, she just did what seemed reasonable.

It might be a stretch, but I think that programming is on the same range of using computers (tools in general? I don't know) in this way. Solving problems is basically trying what seems most reasonable first. A well defined API is usable without even consulting the documentation.

I definitely think that teaching basic programming and computer science to everybody would be a huge win to society.

Sometimes I think of myself as a literate monk in medieval times. I imagine that lots of people would request their services, friends and family needing help with writing and reading. This is also one of the biggest reasons for my wanting more people to learn how to program: It's purely selfish, I get awfully stressed by having people come to me with ideas they can't implement, trying to make me do it for them.

I'm sure a lot of people here have similar experiences.


"We don't teach English classes with the intent or expectation of turning all of the students into professional literary critics, and we don't make everyone take algebra because we think they will or should all become mathematicians."

That's right, we teach English because we expect students to be able to read and write and speak cogently. We teach algebra because we expect them to be able to use it in most jobs that will be available to them. We should teach programming because... We you know? It really isn't quite as urgent.

I believe that kids should be taught just enough about computers, including programming, so that they are demystified. A student in high school doesn't need programming as a skill, but he doesn't need to know that a computer is a tool to be manipulated, not an 'experience' to be bought. One course in Python in high school would enough for this, but more valuable possibly would just be teaching them that can open up the command line once in a while.


>We should teach programming because... We you know? It really isn't quite as urgent.

90% of office workers would benefit from the ability to write an Excel Macro. I don't even think that's a hard sell. Any businessman who understands what Excel does would understand that.

Of course, long term Excel is a toy, and there are all sorts of benefits to be had from more general tools like Python.


> Of course, long term Excel is a toy [...]

I too, would like this to be true. However, the unfortunate truth is that the main market for windows-based HPC is... monstrous, clusterized excel computations.


I'm just sort of pining for a far flung day after programming becomes established as an ordinary middle-school and high-school class, and those students grow up and become MBAs and CEOs. For now we have Excel. :)


I think we teach programming because it helps people:

Understand that there are such concise ways articulating thoughts that every letter means something, and the thought must be fully specified. And what can go wrong with simple logic mistakes -- and likewise how things can seem to work just fine despite the existence of certain classes of mistakes.


> We should teach programming because... We you know? It really isn't quite as urgent.

Well, if you only focus on job preparation, maybe. But education is not just supposed to prepare people for work; it's supposed to prepare them to be good citizens. That requires teaching students a whole variety of skills, but it particularly requires teaching them analytic modes of thought.

Learning how to program means learning how to think in new ways. Generally speaking, those modes of thought are not taught in other educational disciplines: e.g., solving problems via recursion or iteration, and algorithmic thinking generally. So CS education fills a niche that, in large part, would otherwise go unfilled. Coupled with its more "practical" economic benefits, offering it seems like a no brainer to me.


Well, if you only focus on job preparation, maybe. But education is not just supposed to prepare people for work; it's supposed to prepare them to be good citizens. That requires teaching students a whole variety of skills, but it particularly requires teaching them analytic modes of thought.

Being a good "citizen" is a full time job, and a job which pretty much everyone fail at. Everybody need to specialize or find themselves a niche within the economy and get good at what they do so they don't get out-competed. "Citizenship" knowledge just get swept by the wayside.

I don't much about foreign policies, domestic issues, drugs, nor do I have time to learn the shenanigan of elected officials, etc. I know computer programming. I also know attempts by self-interested people who try to get a piece of the pie at the expense of the public in my domain. Software patents and intellectual property right in general are what I am really informed about.

The issue of "governing" should take care of itself much like every other profession take care to solve other people's problem instead of expecting entire people to be wise in governing.

Knowledge in our economy's workforce is diffused. Nobody know how to make a pencil, but there are lot of people who knows how to make part of the pencils, or make possible making pencils. Nobody will learn how to make all part of the pencils, because people gain from specialization and division of labor.

We shouldn't expect the masses to be reasonably wise and strong enough to guard their interests from harmful special interest. Forget the concept of citizenship duty and rework the system according to the real strength and limitation of the people.


Everybody need to specialize or find themselves a niche within the economy and get good at what they do so they don't get out-competed. ... The issue of "governing" should take care of itself much like every other profession take care to solve other people's problem instead of expecting entire people to be wise in governing. ... Forget the concept of citizenship duty and rework the system according to the real strength and limitation of the people.

I think this is an incredibly dangerous attitude. Society works when human beings recognize what they have in common; a society in which all social and political organization is based on specialization and individual differences is a society in which people are divided and susceptible to tyranny. I will gladly trade some economic productivity for a citizenship which recognizes its common interests, actively pursues them, and knows how to defend its members against exploitation.


> We should teach programming because... We you know? It really isn't quite as urgent.

...because we expect people to be able to reason through problems and understand that the computer isn't magic.


I think the author expects students to use programs like Safari and Microsoft Word with hundreds of man-years of polish by UI professionals. As a journalist, perhaps he is so lucky, but business people aren't. Business people have to configure generic software and use web apps slapped together by low-paid programmers who don't have the time or expertise to do good UI design. That can be very much like programming, unfortunately, and I can't think of anything else you could teach high school students that would prepare them for that task.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: