Heroku has long been investing in making programming education available to more people just by providing their free tier. Continuing and expanding their support for engineers contributing to educational programs is smart for Heroku, just as is investing in open source software. Both endeavors benefit Heroku's marketing, recruitment, and employee satisfaction.
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.
Sites like jsfidle.net and codebin.org are the perfect solution for education, except there isn't a lot of reason they need to be run remotely. It would be great if they offered a local version, but somehow I think that's not going to happen.
Maybe you wouldn't get so flustered if you just mentally append " who want it" to the end of phrases like "Programming literacy for all". I mean, is it really so bad to make it as easy and accessible as possible for someone who thinks they might want to get into writing software but doesn't know where to start?
That's not what these "programs" are doing. They're trying to force CS into the curriculum, which is one of the worst things you could do. Offer CS as an elective, sure, that's a great idea, but don't make it mandatory.
The only thing you will achieve from making it forced is disdain for programming.
Do we all disdain math, writing, science, and history because they are forced? I imagine most of us did to some extent, but then again, some of the forced skills have turned out to be useful.
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 un-downvoted you, because I think it's ridiculous to downvote someone for the content (rather than presentation) of an opinion.
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.
I think you're on to something here. Give the students a programming assignment, require precision in both the logic and the output of the program, and grade at least in part on whether the program passes a test suite.
Grade entirely on whether it passes a test suite, but teach them how to work through a challenge like this: how to decompose a big problem into a collection of small ones; carefully thinking about each sub-problem (what cases will it have to deal with, in what sequence, what exactly should it output and how, etc.); how to match the initially buggy output to their code and reason through the debugging; how to build up in stages from a small, partial but working program to the full thing, and so on.
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.
> We're developers. We make. You buy. That's how it's worked for ages and ages and ages now.
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.
13 comments
[ 4.3 ms ] story [ 41.1 ms ] threadAnd, 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.