Empowering Change: Programming Literacy for All
blog.heroku.com
blog.heroku.com
And, just like contributing to open source, helping with educational programs has hardly any barrier-to-entry, and is something pretty much any tech company can get into. At the very least, encouraging engineers to participate in programs like Rails Girls is something every company should do. It's just smart.
Half the benefit of their UT on Rails course was probably in getting Heroku pushes to actually work.
We're developers. We make. You buy. That's how it's worked for ages and ages and ages now.
You don't need to learn how to code to be computer literate.
The only thing you will achieve from making it forced is disdain for programming.
I'm not arguing for either side but I question the idea that CS deserves less attention than the natural sciences in a school curriculum.
I'd like to see some CS in the standard curriculum, though, and I think I would replace "earth science" with it (in a typical US high school curriculum). "You don't think earth science is important?" is a red herring. Yes, everything is important to some extent, and we don't have time to teach everything, so almost every important subject has to be left out entirely or mostly.
I think a gentle introduction to the methods of programming is even more important. This isn't about computer skills, it's about thinking.
I say this because of experience teaching my own kids to program. It's amazing to me how hard it is to get the kids out of the standard "express your opinion" mode so beloved by the schools into a "nobody cares about your opinion, just whether it works or not" mode that they'll have to be prepared for to deal successfully with life in the real world.
And seeing them just try something, scratching their heads, try something else, scratching their heads without ever bothering to methodically walk through their own code line by line to see why it's doing what it's doing is hilarious. And asking them, "well, what exactly should it do?" and getting some vague handwavy answer, then asking for a precise character-by-character description of what it should output along with which line will produce each character and seeing their jaws drop in disbelief is amazing.
Their schools are so busy telling them to "be creative [because it's such a hassle to teach you to be skilled]," "express your [baseless, uninformed] opinions," "draw twenty pictures [because it takes so much time for you to do, me so little time to grade, and no one can objectively dispute my grading]," that to be forced to methodically, deliberately, and precisely reason through the creation of something that has to actually, objectively work, in which personal factors (politics of the teacher, student's ability to BS, etc.) are utterly irrelevant...that is something sorely needed in the curriculum.
And, yes, we already have math, chem, & physics for some of this objectivity, but programming requires learning to build systems that objectively do what they are required to do, and I think that's a vital skill that needs a bigger place in the curriculum.
If it ends up just another of those "I'm not going to actually teach you much, because it's so important [to my leisure time] that you discover these things for yourselves, so just be creative and show me what kinds of solutions you can come up with!", then it's not worth doing. This style of working doesn't come naturally to most people, and it needs to be carefully taught, not just assigned.
I don't know about you, but I actually like the idea of reducing the knowledge gap between users and developers.
Computers are so important in the modern world that I think it makes sense to require all educated people to know something about programming, just as education includes some knowledge of mathematics and science.