

Empowering Change: Programming Literacy for All - Lightning
https://blog.heroku.com/archives/2013/4/12/heroku_in_the_classroom_ut_on_rails

======
gkop
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.

------
SilasX
Heroku can help out by giving less cryptic, finicky error messages when you
try to deploy Rails to their site.

Half the benefit of their UT on Rails course was probably in getting Heroku
pushes to actually work.

------
kunai
This "programming literacy" schtick is one of the most absurd pieces of
pointless diatribe I have ever heard.

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.

~~~
CodeCube
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?

~~~
kunai
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.

~~~
SiVal
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.

~~~
mwcampbell
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.

~~~
SiVal
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.

------
NewAccnt
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.

~~~
saraid216
I don't really understand why something like JSFiddle isn't open sourced. Is
it just too much work?

