30 comments

[ 4.0 ms ] story [ 72.2 ms ] thread
If the goal is to get more people coding, the biggest problem that I see few people (besides Hartl) solving are getting people from absolute zero to a deployed project.

For web dev it means starting at a computer with just a web browser and showing them how to get a functioning site running which you can send a web address to outsiders, even a very, very minimal one. The definition changes with robotics, or other coding disciplines, but the absolute key is developing tutorials and tools which help people go from zero to minimal app deployment.

Once you get someone there, they can build on it using tutorials.

Maybe I'm biased but I wish Computer Science was more of an integral standard of education instead of an afterthought.

With all this discussion about Common Core, we're still at the point in my state where MAYBE a Computer Science can be applied to the Math credit requirement for graduation.

I just feel like so many schools view it as an optional afterthought.

Source: Physics teacher who has been begging his administration to add this course. Right now I have over 40 kids who meet after school to learn programming and scripting, but can't find it to be added as part of the official offerings.

Computer science is highly interdisciplinary and syncretic and as such cannot be neatly fit into a first-order subject without diluting it or investing in lots of prerequisite instruction, which for the purposes of a compulsory schooling system is next to intractable.

"Programming and scripting" classes are a different matter altogether with highly dubious benefits beyond far-fetched theorizing by its overly optimistic proponents.

Too much faith is put on compulsory schooling. Everything must be coordinated and planned. The very idea that one might acquire programming as a means to a pursued end later in life appears to be anathema to many people, who instead advocate that a ritualistic drilling of how to write lines of ALGOL will mystically make people "technically literate" and appreciative.

I teach computers and technology (basically stuff like Arduino, Twine, Scratch and so on) at an elementary school. Obviously my experience is just my experience - yours might be different - but there seems to be a fervor right now for applying technology at every level of education.

To me - the problem is not enough programmers willing to come into teaching. Programmers just want to be in startups right now.

> To me - the problem is not enough programmers willing to come into teaching.

Its not really surprising, considering that programmers can make significantly more (even before considering the lure of the potential upside of equity) in the private sector (startup or not) -- or even as programmers in the public sector -- than they could hope to teaching, and without paying for the additional required certification and credentialing requirements to get into teaching.

You've also got the almighty gender disparity problem again, in reverse. Teaching and programming have almost mirror-opposite gender splits[1][2].

Without going into the debate about the programming gender disparity and lighting that fire, if you've got very few teachers from the subset of the population that for whatever reason correlates with computer programming, you're likely to end up with very few school teachers that are interested enough or qualified to teach it.

I thank my stars that my high-school chemistry teacher had sons that grew up in the Apple II era to be computer programmers and that she thought it was important enough to teach an elective in it.

[1]http://www.aaeteachers.org/index.php/blog/757-the-teacher-ge... [2]http://www.techrepublic.com/blog/software-engineer/it-gender...

Age might be a factor. When I was in my 20's I had no real interest in teaching kids. No I'm older, with highschool age kids myself, now I have some interest in it (I am teaching 2 of my kids to program myself).

But I'm not sure I would want to teach a real class either. Computer Science is very hit-or-miss. Seems bad to force a kid to complete a class when they have no aptitude for it.

Final side note: I help run Boise Code Camp, which is held once a year around spring break. As part of that we devote one room just to kid topics (grade school-middle-school). That room accounts for over 10% of our attendance.

Perhaps you don't have the aptitude to teach that particular kid? It's harder to look inwards, though.
This prompts the thought that we ought to reserve a few days at the end of a school year for kids to try out computer programming. Then I realized that would be awesome for all the electives and got sort of excited. Then I remembered that any real change in the school system is effectively impossible and I got sad again.

(Would we still have shop classes if students had a chance to try it out first?)

No, we'd still have shop classes if we still saw a need for lots of factory workers. What we have instead is a school system that's designed from the ground up for turning out lots of factory workers (and farmers, clerks, and homemakers) trying to keep up with the times, and failing.

ETA: On reflection I suspect many here won't see it that way. It's worth pointing out that, even in the public system, there are different schools, and different subjects, for kids whom the system identifies as "smart", than for those whom it does not.

The former will generally have ample opportunities to learn about computers and programming whether it's officially sanctioned or not, and indeed will probably do so more successfully if it isn't, because being required to do it makes it feel less like fun.

The latter will have to learn that kind of thing on their own, if they're inclined to it, because the system isn't going to trouble itself, the attitude being that anything more complicated than making change and operating a point-of-sale system is almost certain to be wasted on them anyway, and trying to impart complexities to them will only leave them bored and frustrated anyway. (This is in fact true, in a superficial sense, but it has nothing to do with their ability to cope with complexity, and everything to do with the way it'd be put to them. See also: the utter, abject incompetence with which almost all high-school-level mathematics is taught.)

It works this way because it was explicitly designed to work this way by people who genuinely believed in the progressive utopia, where in exchange for there being a specific and fitting place for everyone, everyone was trimmed and pared down to fit a specific place. (See also: Aldous Huxley. Why do you think he went to the trouble of writing a book-length satire of this kind of thinking? Just for the hell of it?) Unfortunately, their design was fundamentally flawed, and they therefore bequeathed to us a system which cannot possibly bear up under its own weight. Fortunately, their design was fundamentally flawed, so the system they inflicted upon us will inevitably collapse and make way for something new which might turn out to be better, not least because it could hardly be worse.

I think those few days for students to try out new subjects is named "summer break."
I'm a single young male, it can easily raise eyebrows if I ever exhibit interest in being around young children. As another commenter mentioned though, maybe as an aspect of my youth, I don't even like children in general to begin with. Second, I have no idea how to teach someone that doesn't really want to learn and teach themselves -- I'll help anyone of any age who comes to me for help or guidance, but anything with groups where only 1/3 of them are paying full attention at any given time isn't for me. I can tell them all to work through Learn Python the Hard Way and help any individuals struggling, but they could just do that at home and get help on the internet or by live-chatting me/anyone else. I could give them all the work to make an LED blink on an embedded system, and a few of them might extend that to something more interesting, but that doesn't sound like something lasting. Lastly, I'm prone to explaining concepts in unconventional ways (as opposed to just repeating the textbook) which doesn't fit very well with a standardized curriculum that I'd need to be certified for to teach anything "serious" in a school setting as opposed to a random volunteer code camp.
I really appreciate this comment - you raise a bunch of good points. Your comments about children, though, are a perspective thing on your part - yes, society is very protective of kids and, yes, children are overly self-centered and (basically) insane...

But actually - the opposite is also true. In general, communities want men participating in kids' lives. You do have to build a little trust - but IMHO time well spent. And (elementary age) kids are also the best kind of people - usually they're not shouting, yelling and bawling - most of the time they are genuinely lovely people. Now this is a generalization - and it varies from place to place - and my school is only half comprised of lower-income kids - but yeah - kids this age are at an age of wonder and discovery.

Teaching is just programming a child's mind. I wish more programmers had an appreciation for that. I would venture to say that computers are MORE stubborn than children. :)

I think that more STEM folks _would_ be interested in teaching, especially those who are late in their careers. The problem is that the prospect of teaching high school is horrifying to someone that isn't prepared to deal with the discipline and safety issues that beset high schools today.
Might sound a bit crazy, but anyone else surprised at the reasonable gender equality in that photograph? I somewhat expected a large amount of male teachers, but if this is indicative of the average makeup it bodes well for future female CompSci majors.
Not really. More than three fourths of all public school teachers are female, and it was co-organized by the National Center for Women and Information Technology, so it makes sense. Even at the high school level, teachers aren't usually teaching what they have a degree in or have industry experience in, they generally major in education and teach whatever the school needs. A lot of my math/science teachers in high school were just following the book along with the class, especially the younger teachers.
This was my school growing up in small-town USA. Town population of 2000, no cities within a 5 hour drive, class of 60 kids. My math teachers typically had math degrees, but the science teachers were usually warm bodies. (no such issue with English, history, or spanish tho, had plenty of those)
I have a master's in computer science, worked in industry for a couple of decades, have been teaching high school computing for the past decade, and think of myself as a "real" computer science teacher.

At the high school level, I think it is better to teach computing as a broad-based life skill, not as a prerequisite to the AP exam, college major, or programming specialization.

Most students of history in high school won't be historians; most students of literature won't write great novels or screenplays; and so on. I think computing is like math and science generally, in this way.

I use Kernighan's "D is for Digital" book in some of my classes. He wrote it for an introductory college course for non-majors, and it works for high school students too.

> Most students of history in high school won't be historians; most students of literature won't write great novels or screenplays; and so on.

But by the same token, the economic effects are quite apparent. It takes a very special individual to rise above the pack in history and literature to turn that into a successful career. For most, with so much competition, it will never be more than a hobby. Anecdotally, I have a couple of friends who are published authors and I would be surprised if they are ever able to recoup the cost of the time they put into it, let alone sustain their costs of living.

Programmers are fortunate right now that the skill is relatively rare amongst the general population and when demand exceeds supply, prices rise. The concern isn't so much with everyone being a programmer, it is that only a few will be able to make money at it when the supply starts to exceed the demand, much like careers in history and literature today.

You can already see this happening a bit in the online freelancer marketplaces. It is, apparently, easy to find people to write code for $1 or less per hour. I have doubts about what kind of quality one might get for that price, but the project listings I see, regardless of how low the offered price is, always have dozens of proposals.
> The concern isn't so much with everyone being a programmer, it is that only a few will be able to make money at it when the supply starts to exceed the demand, much like careers in history and literature today.

I thought a lot about this when I got my first job with a BS and was making more (inflation-adjusted) than my mother with an MS ever made teaching elementary school.

Why do programmers make so much money, relatively speaking?

And the answer is that supply and demand of qualified workers in a specialization is only part of what defines your income range. The other, usually dominant, component is "What is the real value of my work product?"

A teacher's real value is the teaching they've provided to X students. In a physical setting, X has a ceiling. But say, ceteris paribus, we compare to an online teacher who can teach Y students, where Y>X.

The online teacher's employer can afford to pay him or her more, because they have created more real value ($value/student * greater number of students). Even if the work they do is no different.

The miracle of computing systems is that they leverage output. "Do" a calculation once, and you can repeat it as many times as you want.

So, accepting that computers increase productivity generally speaking, what do you think the real value created by the people who can program the things that leverage a worker's value is?

In essence, we get a piece of the following pie: total_created_value = ((existing_worker_value * improvement_multiplier) - existing_worker_value) * number_of_affected_workers

Where workers can be actual people or just systems

But the key is that our value scales with number_of_affected_workers, with limited additional effort on our parts. So if we can make an improvement for 1,000 people, there's always going to be a decent living in that -- because the consumer can afford to pay for the work. They may choose to save that money themselves, but in my experience people are willing to pay to get better product (more reliable, on time, more features, etc etc).

Computer science is the science of the 'theory of computation' (essentially mathematics): proofs of correctness, complexity theory, numerical methods, symbolic logic, etc.

I am glad that your course is called 'computing' and _not_ computer science, since they are usually misconstrued (as in this article). I am all for teaching children how the digital world works, and introducing them to the concepts of electronics, programming etc. but it call it what it is.

Computer science != programming. Programming is an applied skill across nearly all scientific disciplines. Physicists, climate researchers, statisticians, etc, all require programming to do their research.

Completely agree with your general sentiment "Computer Science != Programming" but disagree with the fact that you seem to discount it as a part of computer science all together. Computer science is all the things you listed and also includes a lot of programming in any applied capacity of it.

I agree these courses are often mislabeled and it does the discipline a great disservice, but programming is a part of a computer science education and programming language theory (which you can only really learn well from programming) is a part of computer science itself. How else can you put algorithmic theory and data structures into practice? It's just not the whole thing.

Computer science people on the more mathy side of the spectrum tend to discount applied computer science completely, and that annoys me. Maybe we shouldn't call a plain coder a computer scientist - but anyone who regularly applies theory in practical applications in a programming context and occasionally runs experiments should be considered an applied computer scientist.

For better or worse, a big part of studying computer science at the undergraduate (and presumably high school level) is programming. And programming is a part of computer science, but of course you're right coding/programming != computer science and that misconception is a problem.

I think the difficulty is the break between job title and discipline. And discipline titles (in all fields) have always been a bit historical-wonky.

By profession, we're all effectively software engineers, data engineers, or computer engineers, according to our work emphasis.

But then you've got the weird break you noted where academically and theoretically, everything we do is math. Or more reasonably, at least a larger proportion than any other discipline except physics and pure math.

So... we could always just go the physics route and retitle the discipline "Computing" and ourselves "Computerists"! (No trailing noun)

Make computer science teaching something a computer programmer can do in his spare time!

I have TAed at Cornell and ran my own section for beginner Java and pretty sure I can do a great job of teaching students. However, why would I leave a programming job or a founder job to do a teaching one at a huge pay cut. Make the part time easy to do and I can drive to a school daily near lunch hours and teach an hour of class and grade homeworks after work.

You're right about the pay for teachers. However if you look at the way it's worked out for adjunct professors at the college level, the part-time pay is even less, plus they miss out on benefits. If there's any high school teachers' union involved, I'd bet they'd be against allowing part-time teachers.

Once I chanced upon an ad for high school comp sci teacher. They were willing to waive the Master's degree requirement as well as the teaching credential requirement. As you note, the pay was ridiculously low, about 30-35% less than industry salary for a fresh-out-of-school graduate. Would have been nice though, for someone eager to teach but wanting to skip the 2-4 years of extra training.

From article:

> "Until CS Principles, 95% of my students were math and science majors."

Since when did high schools start making kids choose majors??

That was a teacher from the Alabama School of Fine Arts, which began as a state-funded program to pay the fees of private, after school music, art, writing, theater, and science/math schools so all kids, especially lower income kids, could have access to private, fee-charging programs that developed talents other than just sports. Eventually, the program evolved into an actual public school, but one which requires auditioning for the specialty you are interested in. The author of "The Hunger Games" is a graduate.