Join 3,524 readers in helping fund MetaFilter (Hide)


if (ourChildren.learning == true)
June 22, 2010 7:31 AM   Subscribe

Why Johnny can't code - David Brin asks how to get kids hooked on programming.
posted by Artw (112 comments total) 22 users marked this as a favorite

 
Bah. Show them HTML and Javascript and Canvas - I believe there's even a Processing port to JS/Canvas now - and they can not only run their stuff on any browser, they can share it with their friends, which is all they want to do anyway.

Actually, that might not be such a bad idea for a ....

I have to go.
posted by Michael Roberts at 7:42 AM on June 22, 2010 [3 favorites]


I'm mostly in agreement with Brin's piece, but I'm not sure that coding is the place to start. There are ways to inculcate computer literacy without actually writing a "Hello, world" in this, that, or the other language. Trying to convince a machine running DOS to recognize a new piece of hardware, for example, was an education in itself.

Of course, as a kid my first computer (and still the best, dammit!) was an Apple //c, on which I labored endlessly to try and get the turtle in Logo to do clever things. Mostly that involved copying verbatim from a fakebook on How to Do Clever Things in Logo, but I digress.

It is certainly the case that we ought to be doing something beyond training young kids to be endusers, but I'm not sure what that should be or how we should do it. The "computer science" (read: keyboarding) course I took in middle school did briefly introduce us to the concept of programming through Hypercard, but I don't know if today's 12-year-olds are having the same experience with Java or what have you.
posted by a small part of the world at 7:42 AM on June 22, 2010 [1 favorite]


The teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.
Edsger Dijkstra
posted by shponglespore at 7:43 AM on June 22, 2010 [11 favorites]


Show them HTML and Javascript

That's not simple enough. It's mixing a declarative paradigm (HTML) with imperative and functional paradigms (Javascript).

and Canvas

Seriously, compare the "hello world" from the BASIC era to the simplest possible use of canvas.
posted by Jpfed at 7:47 AM on June 22, 2010 [4 favorites]


We've searched for a simple and straightforward way to get the introductory programming language BASIC to run on either my Mac or my PC.

Well there's your problem right there. Both Macs and "PCs" (by which he means "computers running Windows") are explicitly designed to cater to the non-technical. That means people who don't want to learn to program.

On my Ubuntu system right now, I have 17 languages (from the "interpreters" Section) installed. Those are mostly out of the box (I may have installed Tcl 'manually'). Linux is both technically oriented towards technical people AND freedomly oriented so.

Not to mention the fact that...BASIC? You don't have to learn C++ (and I would probably prefer BASIC over Java), but come on. I loved BASIC back in the day too, but requiring your kids to learn BASIC today is just lawn maintenance (which scanning the rest of the article confirms).

If you want your kids to be technically adept, give them a technical resource to learn on, not a mass-market, dumb-downed one. Would you give them a soapbox racer to learn engine repair?
posted by DU at 7:49 AM on June 22, 2010 [2 favorites]


Would you give them a soapbox racer to learn engine repair?
posted by DU at 9:49 AM on June 22 [+] [!]


No, you give them a soapbox racer to get them interested in engine repair.
posted by Jpfed at 7:50 AM on June 22, 2010 [6 favorites]


Yeah, I remember going to Radio Shack and typing:

10 PRINT "Hello"
20 GOTO 10

on the TRS-80's. Damn, that just never got old.

OK, point taken.
posted by Michael Roberts at 7:50 AM on June 22, 2010 [8 favorites]


Whoa. This article is so old the last time I commented on it was when I had a Reddit account. It's a good one, though.

When I want to get somebody interested in programming, I usually get them started with Tumblr. It's only a blog engine, but it uses a template system, a bunch of variables, and it's pretty easy to generate a blog theme that works. Then they feel comfortable enough looking at code to play with other, similar systems like Drupal and ExpressionEngine, which require more of a knowledge of programming but still have a nice effort-to-output ratio. At that point they have a pretty good idea of if they care about programming or not.

Of course, that's an approach that more favors future designers than it does future programmers, since it tells people to care more about how things look and less about how they run. But then, I'm more a designer than I am a programmer, so that's not too surprising.

People here who are programmers (and I'm guessing there're a lot of you): How did you get started programming? Because I've tried a few times to really get involved in programming something, and I have a slew of ideas for things that require some programming knowledge, but I always pick up a PHP manual, fiddle for a week, and then get frustrated, give up, and go looking for a collaborator. The only time I've felt remotely engaged was when I discovered why the lucky stiff's (Poignant) Guide to Ruby, but that only went so far in teaching the language.
posted by Rory Marinich at 7:52 AM on June 22, 2010 [1 favorite]


d'oh, my method of counting installed programming languages is flawed for multiple reasons. Nonetheless, 15-20 is probably the right number, depending on how you count languages (for instance, does awk count?).
posted by DU at 7:52 AM on June 22, 2010


Rebuttal.
posted by plinth at 7:55 AM on June 22, 2010 [2 favorites]


The teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.

If only we had learned to throw actual explosive bananas instead of programming explosive bananas we could get rid of all of the BASIC hate.

Really, we all turned out all right. I promise!

I think today's BASIC is PHP. Simple to get started with, ubiquitous (on webhosts), and great for picking up bad habits.
posted by soma lkzx at 7:55 AM on June 22, 2010 [2 favorites]


Every Mac that I've bought in the last few years (I switched to Macs when OS X came out) has come with python.

Getting to the command line prompt isn't necessarily the most straightforward thing for most people (you have to start the Terminal program!) but it's not all that difficult. Brin seems to be claiming that starting the computer and getting directly to the BASIC command line prompt is the necessary feature; I'm not entirely sure that it needs to be quite *that* easy.

And it's perfectly possible to write simple programs in Python, and get the interactive environment that languages like C/C++ lack. (It's also not really all that hard to install it on a Windows machine, or at least it wasn't a few years back on XP the last time I did it.)
posted by grae at 7:57 AM on June 22, 2010


10 Install Linux
20 end
posted by mcstayinskool at 7:59 AM on June 22, 2010 [3 favorites]


BASIC? How I would have loved to have had BASIC on my VIC20. Some form of storage would have been nice too. These kids today will never learn anything if they don't use Assembly. Seriously, is Python not a good modern equivalent to BASIC? On the other hand, when I took an introductory programming course (it was a prerequisite and they would not accept my really old equivalent) at a community college less than 10 years ago it was taught in BASIC and it ran under emulation on windows just fine.
posted by Tashtego at 8:02 AM on June 22, 2010


Let's talk about the math book that Brin's child is using. The reason there is Basic in the back is so that they can run programs on their TI graphing calculators, which were rampant a decade ago. So get one of those calcs off Ebay and your son will realize the sheer power of Basic.

The idea that Python/Perl/whatever can't be used to show the flow of a program in intimate detail is wrongheaded. If anything, impediments to understanding flow and organizing the code are removed. The syntax of Basic forces you to plan out and make line estimates of your whole program before you even start, and if you don't, you have a lot of line renumbering to do. Your child won't be a better programmer because of it, they'll just be frustrated.

I'm glad his son is reading a C++ book. And I hope he reads more books in the future.
posted by hanoixan at 8:02 AM on June 22, 2010 [1 favorite]


Why Johnny can't code...
Um...because Johnny doesn't want to code?
It may come as a shock to Mr. Brin, but not everyone wants to code. In fact, I'll go out on a limb and suppose that the number of kids even remotely interested in learning to code is relatively tiny. I'll file this under "Nerd adult disappointed kids today don't share his interests."
posted by Thorzdad at 8:04 AM on June 22, 2010 [8 favorites]


hanoixan: I wouldn't want to defend BASIC as a choice over more sensible options, but a) line numbering isn't required in more modern variants (even the earliest versions I used on PCs didn't need line numbering) and before that there were renumber facilities so you didn't need to make estimates of how many extra lines of code you'd need to wedge in later.
posted by edd at 8:06 AM on June 22, 2010


Agreed. Python or Ruby seem like very simple programming languages to teach with. You can start of writing "do this then do this then do this" sort of code. Both languages have interactive environments too where you can experiment. BASIC seems like a step backwards.
posted by chunking express at 8:06 AM on June 22, 2010


I think people are seeing a problem where none exists. Even though you've got a million times more computer users today than twenty years ago, you've still got the same overall percentage of people that are interested (really interested) in computers as before. Owning an iPhone doesn't put you any closer to becoming a programmer than owning a television made our parents (or grandparents) electrical engineers.

Those textbook exercises were easy, effective, universal, pedagogically interesting -- and nothing even remotely like them can be done with any language other than BASIC. Typing in a simple algorithm yourself, seeing exactly how the computer calculates and iterates in a manner you could duplicate with pencil and paper [...] this is priceless. As it was priceless 20 years ago. Only 20 years ago, it was physically possible for millions of kids to do it. Today it is not.

Paper and pencil are still available, often for free. You do not need a computer to teach computing, any more than you need a calculator to do math.
posted by Civil_Disobedient at 8:07 AM on June 22, 2010


"Install Linux". Are you high? Might as well give them a pile of jet engine parts and hope they'll grok combustion.

If you want kids to program, show them cool results. If there was a simple language and interface that let you create Facebook bots and quizzes for your friends, they'd be all over it like a damn shot.

More people learned CSS from MySpace profiles (in the days before there were sites that would do it for you) than ever would from being given emacs and a copy of Firefox.
posted by bonaldi at 8:09 AM on June 22, 2010 [4 favorites]


I'd say that the prospect of working in the video game industry is responsible for more kids learning how to code than anything else. Its a glamorous and high profile occupation. And kids aren't too keen on the harsh realities of the game industry. Yet.

So eventually they'll come to their senses and get a reasonable job. Or, like me, they'll be too stupid to quit.
posted by hellojed at 8:12 AM on June 22, 2010


Invent Your Own Computer Games With Python is a free PDF, and helps you source free python installs for Windows (it's baked into OSx and Linux already). It's a great introduction to programming, is intended for young adults, and progresses quite quickly from text-based games to platformers. My 11 year old and I are working on it now, and I'm very happy with it.

Don't curse the darkness, light a flamethrower.
posted by jenkinsEar at 8:20 AM on June 22, 2010 [10 favorites]


You can't do anything interesting that isn't a command-line toy when starting out with any of the major languages. You need to lean how to use the command line, or the ins-and-outs of an IDE, or you're stuck with a toy that doesn't do much. You need to learn a keyboard-centric programming language. Python is not easy to learn - just easier than C.

In short, coding is old fashioned and obsolete for the average user. There's no advantage in learning it, unless you dedicate hundreds of hours of free time to learning it - anything less, and you really can't do much useful with it.

That's why no-one is bothering to learn how to code. Programming is an exclusionary subculture now, not a tool of liberation. Programmers made it that way.
posted by Slap*Happy at 8:23 AM on June 22, 2010 [2 favorites]


After my mother sent this article to my brother to get his thoughts he came out with I think one of the more fundamental issues here - back in the day it was possible to knock up a game in BASIC on a Spectrum that to all intents and purposes, didn't really differ from what you paid money for. Now a kid starting out has no hope of producing a game of the quality they'd be used to playing unless they went straight to modding, and how much of that involves coding depends on the engine used.
posted by opsin at 8:24 AM on June 22, 2010 [2 favorites]


The reason there is Basic in the back is so that they can run programs on their TI graphing calculators, which were rampant a decade ago.

Okay I'll admit it, I cheated a lot in high school math. My memory is fuzzy but I believe my TI-83+ had some sort of flash component and the teachers only knew how to clear out the RAM (taking the battery out). So once I figured that out I was so in the clear.

I learned 100x more by cheating than by learning rote. I remember learning about how find the roots of a polynomial in whatever BASIC variant was present on the calculator (written first in pseudo-code and working through it several times before dedicating myself to writing it on that horrible little key pad). There were a lot of easier tasks, but I also remember doing something that I later found out was related to the Taylor Series (details are fuzzy, but I remember seeing the Taylor Series, thinking it looked familiar and going back to my little calculator, and whoa, there it is).

This helped immensely during statistics courses where everyone was sort of stumped and I was happily hacking through Excel (ugh) or Matlab trying to get the answer. And when I say some people were stumped, they were stumped stumped, people who were otherwise very smart just couldn't make the leap, at least initially, and it seemed to really shock them. They though they knew what they were doing, but only had a very rote understanding of the problems.

I think the solution is to really change math departments into a sort of pseudo-computer science hybrid. More like Project Euler and less with a bunch of polynomials with instructions to find their roots. Sure there's going to be kids who just don't give a shit, like their are now, and it might be harder to root them out, but I think in the long run you're accomplishing a lot by showing kids that computers really useful tools beyond games like ping and perhaps a deeper understanding of the mathematical ideas being presented that goes beyond memorization.
posted by geoff. at 8:25 AM on June 22, 2010 [4 favorites]


Yeah, he's fixated on BASIC, and there are better ways of learning to program these days.

Part of the problem is that the problem set has gotten so much larger. We've been writing code on microcomputers for a generation now, and the sheer immensity of what's been built is hard to fathom if you're not deeply involved in it.

In the 8-bit days, you just couldn't do much WITH a computer. They ran at 1Mhz, and had no more than 64K of RAM. You could get access to a lot of the power of the machine with that simple and fairly brain-dead interpreter, and when you were ready to do more, the next step was getting into machine code/assembler. And you might do some simple sound routines, or some simple graphics stuff, and if you mastered both, you might make a simple game, and get into the software development business.

But man, these days, computers must be at least a thousand times as complex. There's layer after layer after layer of software abstractions that have been laid down. "Programming", by itself, doesn't mean much anymore. "Programming what" is the operating phrase. You're not just picking a language, you're picking an entire software ecosystem, a huge stack of abstractions to let you focus on the higher level functions.

An example that a modern kid might want to do would be a LOLcat builder. In that case, you'd choose a language you were comfortable with (maybe Python), find some graphic libraries that handle the image sources you want to use, figure out how to call their text-writing routines to let you overlay your captions, and learn how to write out the modified images. This wouldn't be terribly difficult... you could probably get a basic version of this up in a few days, assuming you knew Python reasonably well, and could have something quite polished in a couple of weeks.

Doing something like this in pure BASIC would be hellaciously difficult. You'd have to learn the internals of the file format, learn to decode that format to something in memory you could work with, learn to modify that image in ways you wanted, and learn to recompress that image to the correct file fomat on disk. Then you'd have to write text-rendering routines (and create fonts). And only then could you really start on your LOLcat builder.

Instead of maybe two weeks of work, in other words, it would take months, and you'd probably still be catching weird bugs a year later.

Brin is feeling nostalgia for a set of techniques that are largely irrelevant for modern programmers. There are very few people anymore that are directly wrestling with the hardware. Programming is top-down, starting with multiple layers of abstraction and working down, rather than starting with nothing but a language and working up. That second approach will probably make you a better programmer, but I'm not sure it will make you a better computer user.

It's quite possible that we'll be the last generation of people to actually routinely understand registers and bits and bytes and barrel shifting. There will always be experts that do, but I think that kind of knowledge will probably pass out of the general population. And I don't see that as a bad thing.

All that said, if Brin's kid really wants just BASIC, just a pure language without a lot between him and the computer, Blitz Basic looks like a good bet. I haven't used it myself, but it's damn fast. I've seen a number of freeware games written with it, and they smoke. There are real commercial games written in that language. It's probably the closest to the 8-bit experience you're going to get on a modern PC. It's cheap, and multiplatform... Mac, Windows, and Linux.
posted by Malor at 8:29 AM on June 22, 2010 [10 favorites]


Eh, I take issue with a few points. He seems to be really hooked on BASIC, and it's honestly not that good. Never was. I did have a computer capable of running BASIC when I was in high school, and occasionally typed in those programs that they (still) have in the back of math textbooks. But that was about it -- it didn't make me a programmer by any means. You type it in, it runs, it's interesting for a few minutes, but you don't really learn anything about programming as a result.

The reason most people aren't crying too hard about modern computers not being able to boot directly into BASIC, like my Apple IIc did, is because there are modern programming environments that let you do more, but still have a pretty easy learning curve. Python, for example. You can bang out a Python program that looks a lot like BASIC if you want to:
print "Enter a number"
A = input()
print "Enter another number"
B = input()
print "The sum is:"
print A+B
That's not good Python, but it works fine. The input() syntax is a little different than BASIC's, but it's not that big a deal, and it's in some ways more straightforward -- Python makes it obvious that you're assigning a variable to the result of input(), while BASIC's syntax IIRC does the assignment more implicitly ("INPUT a"). But like BASIC, you can work directly in the interpreter if you want.

And perhaps the best part about a modern language versus the Applesoft BASIC that I played around with, is that with Python you can keep going. There's really no ceiling that you're going to hit. When you're bored writing trivial programs that add numbers together, you can start doing basic flow control and loops. And from there you can do functions, if you want, or file input/output, or generate HTML ... all the way up to object oriented programming and MVC with complex frameworks. It's not a toy language.

The problem, I guess, is that BASIC was the standard introductory language for many years, and you could -- and still can, apparently -- find a lot of sample code in textbooks. Python, although popular as an introductory language, hasn't achieved that sort of universality. You won't find much Python in math books. But that's not really a commentary on the language as much as it's a commentary on the textbooks. But I'd bet that any kid with even a whiff of interest in programming, given a few hours' introduction to Python, could probably reimplement most of what's in the back of their math textbook and make it run -- and they'd probably learn a lot more in the process, since they'd have to actually think rather than just blindly typing. (Actually, I think textbooks should probably eschew any language in particular and just give examples in pseudo-code.)

He handwaves away Python and Perl as 'scripting languages' down around the middle of the article, but doesn't give much in the way of an argument as to why. It seems to be something about BASIC being closer to the bare metal, but I'm not buying it -- BASIC didn't teach you that much about what was going on in the machine registers or anything else. If it seemed closer to the metal it was just because it came burned-in to the ROM and showed up if you didn't run anything else. But it was still a high-level language.

All that said ... if a young person today is really hell-bent on using BASIC, they probably have a computer capable of letting them play with it in their backback: all the Texas Instruments calculators have a built-in programming environment that uses a dialect of BASIC. I'd be willing to bet that the sample code in modern math textbooks is really designed for calculators than for desktop computers. It'd just be tedious as hell to type in.

I get the author's general point about the direction modern technology seems to be going in, which is towards shiny sealed boxes and "No user serviceable parts inside" and walled-garden ecosystems, but the example he chose to use just isn't a good one. The budding software programmer couldn't be in a better position today. It's the electronics tinkerer, who used to be able to put stuff together on a breadboard from RadioShack that at least bore a resemblance to commercial devices, who is in trouble. You can't even buy a lot of modern ASICs as DIPs anymore -- everything is SMC. Tinkering, as a hobby and as a learning process, is definitely in peril. But the lack of computers that boot into BASIC is not a significant problem.

On preview, I see a lot of people have covered the same ground as I did ... serves me right for taking so long, I guess. Oh, well.
posted by Kadin2048 at 8:29 AM on June 22, 2010 [5 favorites]


Maple. You can see the math happen, it can do any math you might possibly want. Not to mention the ability to interface with a number of different languages and make pretty 3d graphs.
posted by Lemurrhea at 8:29 AM on June 22, 2010


In regards to the title: It is poor style to compare a boolean value to true/false literals. Should be rewritten as...

If (OurChildren.isLearning()) then { //raise the pi }

:-)
posted by Babblesort at 8:30 AM on June 22, 2010


As a kid, I wrote BASIC on an Apple II, then later on a PC with QBASIC, and most tediously on this blue plastic V-Tech thing with a one-line 30 character LCD display. (I had a lot of patience back then I guess.) It was immensely gratifying to type in the little programs from magazines or books, fix the inevitable typos, and finally run the thing successfully.

When I got back into programming in college, we were mainly doing Java, which I understood well enough. But I never really got that light bulb going on feeling that I got from BASIC until I took a class that used Python. I'm not a kid anymore, but I feel like Python is the answer to Brin's question here. The syntax is fairly friendly, and you can fire up an interpreter and just mess around. Plus it has libraries to do things that are actually useful these days (HTTP libraries, for example - it'd be pretty tough to do that in BASIC.)

That said, Python vs. PHP vs. C++ vs. whatever seems less important than having the desire to code in the first place. I feel like if you want to do it, and you can get over the initial cognitive hurdle, you'll be able to write code in whatever you language you want.
posted by evisceratordeath at 8:32 AM on June 22, 2010


The teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.

Where Dijkstra went wrong: the value of BASIC as a first programming language
posted by weston at 8:32 AM on June 22, 2010 [1 favorite]


One of the bits from BASIC missing in most programming languages now is a quick and easy screen display. Oh, sure, print stuff. Simple guessing games. Coin flips.

Still, once you got done writing your own cruddy text adventures (My working title, "Spelunker Doom," a tree of hapless choices mostly leading to you dying) and random equipment generators for Basic (heh) and Expert D&D, you wanted graphics. One of the great things about programming on my TI-99/4A was making my first maze-chase game. Draw out my map and then start the chase. Ah, but it was so slow, so very slow because each movement meant that, not only did I have to see if I was wrapping around my torus, I also had to check this enormous set of nested IF statements to determine if my sprite was slamming into my predefined walls (or dropping into deadly spike-filled pits. represented by a box with a ^ in it, of course). Finally, I realized that I could draw my map out to the screen at the start and then use the video buffer to check for walls rather than hit all of these checks in what was actually doubly-interpreted BASIC. It blew my little preteen mind when I realized this was an option and suddenly my game became playable with more than a few walls in place.

Okay, so graphics weren't so easy on my Apple ][e, and working with my eight lousy colors wasn't kind of crappy, navigating the video modes sucked, and I had to learn trig way too early to be able to do things like draw my own circles, ellipses, and the like. Still, the rule is there: kids ... want ... graphics. That is the lesson of LOGO. While I love Python a bunch, without a simple way to put the equivalent of a turtle on the screen and have it drag out lines, it will never be a replacement for those teaching languages.

Also, GOTO forever: haters gonna hate.
posted by adipocere at 8:38 AM on June 22, 2010 [2 favorites]


I coded games for myself in Basic on my C64 when I was 12. It was fun, and neat, and you could make a text game for yourself in a day or two. But then again, text games were still state of the art back then.

Maybe kids these days can do simple games with flash or something, but basically there's a "fun thing" to "time put in" ratio that needs to be met. Basic is definitely not going to meet it these days, and I'm inclined to trust people who stuck with coding if they say Basic trains really bad habits.

Other note: I just switched over to Linux, and while there's a lot I appreciate, command lines will never really hit it off with the general public because people are evolved to deal with objects more than abstracts- even virtual objects, represented graphically, are interpreted by the brain as objects. The modern experience of operating a computer is one of navigating menus (well trained by videogames, too) and exploring options from there, not learning commands to manipulate something you don't see visually in front of you.

That said, the common experience of a computer is further and further away from the what skills are useful for coding, but closer and closer for ease of use by the general population.
posted by yeloson at 8:40 AM on June 22, 2010


Lemurrhea: I don't think something costing over a hundred dollars even for the cheapest student edition is a terribly practical suggestion for this.
posted by edd at 8:42 AM on June 22, 2010


Oh, god, yeah, and I just remembered that my teacher in middle school wasn't happy that I finished the semester assignments in the computer class in just 2 weeks. She then pushed me to do more stuff with Logo, until I had it fully animating a jet plane taking off because it was drawing so fast.

Guh.
posted by yeloson at 8:42 AM on June 22, 2010


There is no reason for kids to get hooked on programming other than to make them professional programmers. The reason we learned top program computers back in the 80s is because the computer couldn't do most of the things you wanted it to do. The software that was available for sale was extremely limited, or it was extremely expensive. Ashton-Tate's dbase (not even a relational database system) was $500. A box of 10 blank floppy disks to pirate the software on was $20-$40, beyond the range of your average kid. You had to learn to program to get the computer to do what you wanted.

Now, anything you want to do with computers, you can get software for, and very often that software is free and the amount of time and effort it takes to get it and run it is negligible. I've build a computer from parts, installed windows, office, adobe creative suite, and a host of open source software on it in less time than it took me to write an address book program in basic or pascal back in 1984.

If we are talking about what kids should be learning in the very limited amount of time they have before they stop being kids, there are many other things I'd rather they learn first before learning to program.

They should learn math all the way up through calculus. They should understand physics, and be aware that the fundamental properties of our universe are not obvious and very strange, even if they don't fully understand the math.

They should learn chemistry, biology, english literature, history, social studies and all the other things that they teach you in school that some people say they will never need when they get a job. They should learn that those people are to be avoided, at all costs.

But they should go beyond that. They should learn to speak, read, and write Chinese. And classical Greek and Latin.

They should learn to play the piano, or the violin, or the trumpet. And how to read and compose music. They should learn how to draw and paint. They should do these things tangibly, not virtually. They should learn to turn to these things to deal with their emotions, and not drinks or food or pills.

They should learn how to plant and maintain a garden. They should learn how to wash their dishes, cook their food and scrub their bathrooms. They should learn how to plant and cut down a tree. How to use a shovel, a rake, and a hoe. They should learn how to work. Hard. They should learn that the hardest, sweatiest, grimiest work is often the most rewarding.

They should learn how to play one sport, as well as they can.

They should learn about their grandparents' religion and culture. And they should learn about their friends' religions and cultures. They should learn that culture is more than food and clothes.

They should learn how to ask grownups uncomfortable questions. They will later discover that many of those uncomfortable questions were asked long ago, and changed the history of the world.

They should learn that some books are dangerous. They should read those first, often, and openly.

There is a lot to learn when kids are kids. If there's time left over, they can learn to program, knit, bake cookies, build furniture, etc.
posted by Pastabagel at 8:46 AM on June 22, 2010 [25 favorites]


Oh sure, there's creativity in creating cool movies and Web pages. But except for the very few who will make new media films, do you see a great wave of technological empowerment coming out of all this?

Empowerment doesn't come from technology. It comes from knowledge. Wisdom. Understanding. If making a goofy Youtube film will lead a kid to ponder thoughtfully over 2001, then YouTube has done that child a great service.

Every PC ships with something like Notepad. You can write poetry, essays, and novels in Notepad. If every computer user used their copy of Notepad to write poetry or novels, then yes, I would see a great wave of empowerment coming out of that.
posted by Pastabagel at 8:56 AM on June 22, 2010 [1 favorite]


edd: line numbering isn't required in more modern variants..

True enough. Although Brin never specifies the flavor of Basic he's talking about, since he mentions the math books, I'm going to guess that it's something like TI-BASIC, which is structured with no line numbers.

I should have mentioned that I was only talking about my experience with classic "unstructured" Basic (Commodore PET, Color Computer, and then GWBASIC). When the structured dialects of QBasic and TurboBasic came around, that was a huge improvement. And when you compare VB to all of this, it's really not the same language, but more an attempt to capitalize on brand loyalty.

Given the variety of dialects, it's easy to say that in some bizarre world that Python could have been another variant of Basic.
posted by hanoixan at 8:58 AM on June 22, 2010


Why Johnny can't code

Maybe Jane wants to code, you should ask her.

Only, quietly and without fanfare, or even any comment or notice by software pundits, we have drifted into a situation where almost none of the millions of personal computers in America offers a line-programming language simple enough for kids to pick up fast

Having had a child go through a communications program through high school, where they used flash, html and css, I'll happily tell you that basic is boring. The kids who wanted to learn more found a way, using the previously mentioned languages.

Brin just seems to be ranting that kids aren't learning how they did when he was kid and thus, are doomed to fail or at the least, be robbed of some special skill or insight that only earlier generations were lucky enough to get.

The truth is that kids are fucking scary, because they're not only an acute reminder of our own mortality, they're a reminder that some of things you did or learned as a kid don't matter anymore. The world has moved on and done just fine without your precious knowledge.

Case in point: telling time via an analog clock. It's been an ongoing amusing and terrifying experiment the wife and I have performed, asking our teenage daughter and her friends to look at an analog clock and tell what time it is. Many can't or struggle with it. After all, there's always a clock on their cellphone or computer or iPod, so there's not much practice or practical reason to learn how to read analog clock. Other parents mentioned this inability at party last week and all of them clucked and lamented the dumbing down of America, yet none questioned whether the inability to tell time via an analog clock was even important, especially in today's world.

Maybe it was just a useful skill we learned in non digital world that is no longer important. The same could be said of many things, including learning BASIC.
posted by Brandon Blatcher at 9:02 AM on June 22, 2010 [5 favorites]


There is no reason for kids to get hooked on programming other than to make them professional programmers.

The guy that was in here peddling his $15,000 (a year!) "data mining" software would really love you. It was nothing more than simple regression analysis on a large dataset that Excel couldn't handle. I exported it in a csv, pulled out a copy of R and produced the same graphs he did in a little under 3 hours. There was some disbelief. I asked for a $15,000 raise, but have yet to hear back on that one.

Then again I fail to see how computer science is more plebeian than biology, history, etc. Yes, yes, computer science isn't programming but when you're having a discussion about teaching kids I think the two terms are interchangeable. It would be foolish to sit them down and start pontificating about global variables and dependency injection before a more comprehensive understanding of what computers are why they act the way they do.
posted by geoff. at 9:03 AM on June 22, 2010 [3 favorites]


hanoixan: I'm going to guess that it's something like TI-BASIC, which is structured with no line numbers.

Wait, TI BASIC as on the TI-99/4? That had line numbers. Extended BASIC also had this rather cool renumbering function that would redo all your line numbers to look like you got it right the first time. :)

I think it also had calls and returns, but I don't remember for sure.

I suppose you might mean TI BASIC on calculators, which I know nothing about.
posted by Malor at 9:07 AM on June 22, 2010


There are many reasons Johnny can't code, but I think an understated one is the plethora of well meaning people trying to get Johnny to use Python, and telling Johnny that Goto and BASIC should be avoided like the plague.

Python a great language and I'm all for a proper syntax, but if you can't make something a 12 year old will classify as cool in a couple of hours, it's worth jack-shit.

I really like "small basic", and as crumbly and as unsupported as it is, it's got awesome ideas. No object Hierachy, no local variables. Just the minimum of constructs that you need to make yourself a little program (including logo like turtle) and post it (easily) on the web.

I had 5 minutes spare, so I made this

I imagine being able to download enemies pictures and progressively insult the hell out of them in a way that could be easily posted onto forums / facebook, etc.
I would have loved to have this program when I was a kid.
posted by seanyboy at 9:10 AM on June 22, 2010


Oh, and on failure to preview:

Brandon Blatcher: It's been an ongoing amusing and terrifying experiment the wife and I have performed, asking our teenage daughter and her friends to look at an analog clock and tell what time it is. Many can't or struggle with it.

Interestingly, my father had a hell of a time with analog clocks. He was very happy about the advent of digital timepieces. He was a very smart man, but it always took him a moment of real concentration to figure out what time it was in the analog era.

I always thought that was bizarre, but maybe that was because he made really sure I could tell analog time. :)
posted by Malor at 9:12 AM on June 22, 2010


There are still plenty of opportunities to program nowadays, and plenty of motivations. If I was a kid in 2010, I'm sure I'd be into iPhone development. I'd probably waste just as much time as I did in the 80's hacking games and hardware. I'd probably mess with HTML Canvas.

I think the only difference is the bar is much higher. You can't pull out BASIC anymore and make a game in a day that rivals the commercial offerings. The early computers only had so much RAM, and there was a point where you had to say "that's it, the computer's full."

You can still make a silly web site or iPhone game, you just have to have a really unique idea because so many things have already been done.
posted by RobotVoodooPower at 9:15 AM on June 22, 2010


It's quite possible that we'll be the last generation of people to actually routinely understand registers and bits and bytes and barrel shifting. There will always be experts that do, but I think that kind of knowledge will probably pass out of the general population.

I'd argue that that kind of knowledge has never been held by the general population - no generation has "routinely" understood the lower-level ways that computers work. But while I think you're over-generalizing the spread of that kind of knowledge, I agree with your point that it's becoming less and less widespread.

I can change a tire, but I don't know how to change my car's oil. But changing a tire is much more of a survival skill, as opposed to maintenance. I'll make sure my daughter knows how to change a tire, but I'm less concerned about changing the oil.
posted by nickmark at 9:15 AM on June 22, 2010


Annoyingly, Brin writes...

It would be trivial for Microsoft to provide a version of BASIC that kids could use, whenever they wanted, to type in all those textbook examples. Maybe with some cool tutorial suites to guide them along, plus samples of higher-order tools. It would take up a scintilla of disk space and maybe even encourage many of them to move on up. To (for example) Visual Basic!

THEY HAVE.
AND IT DOES.


Also - David Brin. Get a fracking contact page on your website. You're not the freaking CIA. Or Amazon.
posted by seanyboy at 9:16 AM on June 22, 2010 [6 favorites]


and when you were ready to do more, the next step was getting into machine code/assembler.

Oh, how I longed for one of these. But I didn't earn enough money at my paper route to buy everything I needed and my parents didn't understand what it was well enough to buy me one.

But man, these days, computers must be at least a thousand times as complex. There's layer after layer after layer of software abstractions that have been laid down.

That's true, but the tools are a lot more powerful: there languages with more concise and less complicated idioms, and good libraries are more common. Who writes their own hashes anymore? Linked lists? Trees? There are some problem domains where you still sometimes need to do this, but a remarkable amount of stuff that used to be common work is now just taken care of for you.

And so many good tools are free. Nobody who has a computer and an internet connection in their household has the problem I had as a kid where I couldn't afford the tools. In fact, the profusion of good free tools is so broad that there is literally not time for one person to learn how to use all of them.

I think the problem isn't that tools that can do for a kid what BASIC did for a generation of programmers aren't available. I think the problem is either that the computers aren't limited enough, like they were when we picked them up (there wasn't anything else to *do* with our TI-99/4a other than run cartridge games and type BASIC programs, and you got a prompt to choose between that every time you turned on the computer)... or that people are just interested in other things.

You can't do anything interesting that isn't a command-line toy when starting out with any of the major languages.

Scratch? Visual Basic for Office Apps? JavaScript on top of HTML? You can do very useful and quite interesting things in all of these environments, never touching a command line.

And then there's geoff's tale -- which my experience tracks. If you know what a variable is, basic mathematical and test operations, control structures, and maybe subroutines and functions, you know enough to start writing your own attempts at numerical algorithms.

But most of all, I think you're being dismissive of "command line toy[s]." There's nothing wrong with toys, because play is one way to learn. No small amount of the stuff Brin and others talk about doing with BASIC was largely useless and impressive only to the author. Doing something "useful" wasn't the point: playing with the environment to get it to do anything at all was. And this is all still possible in any number of widely available environments today.
posted by weston at 9:16 AM on June 22, 2010 [1 favorite]


Look at the dateline:

Thursday, Sep 14, 2006 08:00 ET

Anyway, this article is just as stupid now as it was in '06 when I read it the first time. There are TONS of ways for kids to get into programming. Every computer still comes with a programming environment built in -- the browser. Just type your code in HTML files and javascript.

And there are hundreds of languages and platforms available at the click of a mouse. And lots of kid-friendly environments too. Brin just hasn't kept up with them, so he's not aware of them. That's the only problem, his ignorance.
posted by delmoi at 9:34 AM on June 22, 2010 [1 favorite]


Seriously, compare the "hello world" from the BASIC era to the simplest possible use of canvas.

<h1>Hell world</h1>
<canvas>....
posted by delmoi at 9:35 AM on June 22, 2010


Let's talk about the math book that Brin's child is using. The reason there is Basic in the back is so that they can run programs on their TI graphing calculators, which were rampant a decade ago. So get one of those calcs off Ebay and your son will realize the sheer power of Basic.

TI calculators are still pretty popular, but bizarrely have hardly any more CPU power then they did when I was in highschool. TI has really been coasting.
posted by delmoi at 9:41 AM on June 22, 2010


Though this isn't about kids, I confess, I always wanted to learn about computer programming. I once "shopped" a class (it was some kind of intro course that was mandatory for CS majors), but during the first exercise where we were supposed to pair up, my partner was so rude and condescending to me (she made me feel like an idiot -- effectively she turned around and said she'd already learned how to do whatever we were doing and while I have some programmers in the extended family, they don't talk about it at any length with me ever so I was already nervous but thought, hey, it's an intro class, everyone is learning) that I decided to drop the class for another econ course.

Perhaps I will take one course pass/fail at the community college or something. But I bet it's full of mean 12 year olds who will look down on me.
posted by anniecat at 9:46 AM on June 22, 2010


Both Macs and "PCs" (by which he means "computers running Windows") are explicitly designed to cater to the non-technical....On my Ubuntu system right now, I have 17 languages (from the "interpreters" Section) installed. Those are mostly out of the box (I may have installed Tcl 'manually').

Out of the box OS X comes with AppleScript, Python, Perl, PHP, Tcl, Ruby, bash, tcsh, zsh, awk, and JavaScript. Possibly out of the box but definitely available on the included development disc are C, C++, Objective-C, Java, and assembly. So that's 16 (13 if you lump the shells together and discount awk).

It's true that Windows doesn't come with a lot of languages out of the box (though at least it's got JavaScript and a (rudimentary) assembler), but Microsoft does make free versions of its Visual Basic, C++, and C# IDEs available online. They're not even particularly cut down from the for-pay versions.
posted by jedicus at 9:47 AM on June 22, 2010


Just put an empty canvas and a little javascript entry box on everyone's Facebook page and I guarantee the kids who are interested will start to learn how to program. There are still a ton of easy to learn "toy" languages out there as well, you can just do more with them than we ever could. Use Lego Mindstorms NXT, or an Arduino and you have child friendly physical computing. Flash and Unity are almost as beginner friendly as Basic, and you can put your stuff up onto the web. Learning to program is easier than ever, there are just too many options for where to start.
posted by ecurtz at 9:48 AM on June 22, 2010


There is a distressing amount of misunderstand what programming is/can be used for in this thread. Command lines are exclusionary? That must be why all the great books of history were paintings. Regular people don't need to understand programming? Yeah, there's no need for regular people to specify how processes and data should play out and interact.

Programming languages are tools a human uses to communicate with both other humans and computers. Neither humans nor computers are going away any time soon.
posted by DU at 10:03 AM on June 22, 2010 [1 favorite]


In 1979, the thing that made getting past the horrible lack of resources was that the product was so engaging. What really helped was people like David H. Ahl and his book on computer games in BASIC.
posted by plinth at 10:26 AM on June 22, 2010 [2 favorites]


I just built a little buddypress site for my 10 year old and his friends and he is itching to customize the theme. Hello HTML, css and php. I think the end result will be a lot better than what I painstakingly typed into my trs-80!
posted by Biblio at 10:30 AM on June 22, 2010


Kids need to learn programming like they need to learn how to handle a nuclear power plant.

BASIC is to software engineering as fixing your bike is to mechatronic engineering. It might hook a few kids, but I know lots of kids who were into writing programs in BASIC who never spent any time writing software after high school. And I know a LOT of competent, professional software developers who never saw a computer before their first university programming lab.

Software development is a professional field like medicine, engineering or law. It needs a in-depth post-secondary education. Kids should get the hell out of the house and go camping and play some little league because the time to do that will be hard to find once you've entered the grind of adulthood.
posted by GuyZero at 10:39 AM on June 22, 2010 [2 favorites]


"Install Linux". Are you high? Might as well give them a pile of jet engine parts and hope they'll grok combustion.

Are you high? I used command-like QNX quite happily in, uh, 1985. Oh, and VMS. I even used structured basic on QNX, complete with subroutines and no line numbers.

There are plenty of kids who with minimal guidance are very capable of installing and using a linux machien from the command line. It's very, very simple. If you can't handle a command line feel free to go back to your cave and continue trading rocks for fire.
posted by GuyZero at 10:44 AM on June 22, 2010


I agree with his main point, but think his focus on BASIC is misguided.

BASIC is an awful programming language, and teaches awful habits. I have yet to see a version of BASIC that wasn't a total loss. VB .NET is the only one that's remotely tolerable, and it bears almost no resemblance to the AppleBASIC I remember from my youth.

Definitely though, definitely definitely definitely we need to get kids started early on this stuff. I remember the wonder I experienced as a child when I realized that I could make this machine do whatever I wanted, like I was some kind of god or something.

So, I'm curious, what does get kids into programming these days? Does web development do the trick? I would think that it would be an easy way to interest kids in coding, but I feel like there's a high barrier to entry there. I mean, yeah, there's HTML, but that doesn't count. Javascript counts as programming, I guess, but I feel like it's more of a supplement than an actual programming language. From there, it's a BIG jump to actually developing webapps, which requires the understanding of a lot of rather complex pieces. Might be more than a kid could handle.

One thing I liked about the OLPC is that it apparently had some kind of "code button" that immediately exposed the source code of whatever program you were running, and dropped you into some kind of debugger mode. Unfortunately, OLPC was a failure, from conception to execution.

I guess what was special about AppleBASIC was not the language itself, but the immediacy of it. I mean, you started your computer, and it plopped you right down into a programming language. Not many modern equivalents to that.
posted by Afroblanco at 10:45 AM on June 22, 2010


I used command-like QNX quite happily in, uh, 1985.
Which means ... what? Your age isn't in your profile, like.

There are plenty of kids who with minimal guidance are very capable of installing and using a linux machien from the command line.
Of course there are. If they're that sort of kid, they'll probably take up programming anyway. The point is to try and appeal to those who don't: in general, the bulk of the type who got into it in the 1980s.

And they got into it because of the results. Kudos among your friends was principal among them -- for a time, making cool games wasn't far off playing guitar well. When installing linux is cool, then "1. Install Linux" will be an answer to this challenge. Until then, they might as well be using VMS.
posted by bonaldi at 10:57 AM on June 22, 2010


When installing linux is cool, then "1. Install Linux" will be an answer to this challenge.

Done and done. Visit any mildly technical forum and "the cool kids" will have installed or be installing linux. That's because the trendsetters and cutting edge software are using linux. And that's because linux is just Better For Technical Things. Which is what I said in the first place.

Describing linux as a "pile of jet engine parts" is about 15 years out of date. It's more like a well-equipped, well-lit, friendlily-staffed workshop with all the modern safety equipment. Where else should you learn woodworking? With a rock and a penknife?
posted by DU at 11:04 AM on June 22, 2010 [1 favorite]


Besides, who cares if installing Linux is as complex as a jet engine? No one seem upset that we don't have 10 year-old designing jet engines. Your analogy is both false and irrelevant.
posted by GuyZero at 11:05 AM on June 22, 2010


Other parents mentioned this inability at party last week and all of them clucked and lamented the dumbing down of America, yet none questioned whether the inability to tell time via an analog clock was even important, especially in today's world.

Yeah, context is everything. I often point out to my friends, the number of once commonplace things which are effectively meaningless to the new generation - such as operating a rotary phone dial, the "ding" of a typewriter carriage, flipping over the audio tape, a busy signal, etc. Most of these things don't matter.

Some things I think are always useful- the ability to identify cardinal directions on a clear day, first aid, cook a meal etc. But then again, I don't think most folks under our great-grandparents' age have those as regular skills anymore either, so it's not like this generation is "any worse" in that regard.
posted by yeloson at 11:07 AM on June 22, 2010


Which means ... what?

I was programming in C before I could drive. OMG I AM SO AMAZING.

Having said that, it wasn't exactly a sustainable advantage. It's not like I retained a 10-year experience advantage over every other developer out there. Just like there's no correlation between when you started to walk and whether or not you became an Olympic marathon runner. To repeat my actually important points, kids should be kids and worry about vocational training somewhat later in life.
posted by GuyZero at 11:07 AM on June 22, 2010 [1 favorite]


Kids need to learn programming like they need to learn how to handle a nuclear power plant.

No one seem upset that we don't have 10 year-old designing jet engines.


No offense, but this is stone-age view of programming. A priesthood of programmers made sense when there were only like 5 computers in the world, but a lot of kids today have more than one computer in their pocket. That many of these computers don't have an easily accessible programming interface is a bug, not a feature.

Listen in to conversations about these devices and you'll hear them complaining that it doesn't work quite like they want or they wish they could do X with the data or whatever. Or "you know what would be cool?" conversations. There is more to programming than is dreamt of in your VMS manual, Horatio.
posted by DU at 11:09 AM on June 22, 2010 [4 favorites]


Shouldn't we teach Johnny to writte good test cases, project management, software specs and datamodeling rather than code. I mean asking why Johnny can't code is like asking why can't Johnny hang drywall.
posted by humanfont at 11:14 AM on June 22, 2010 [1 favorite]


Malor: TI-BASIC.
posted by zsazsa at 11:19 AM on June 22, 2010


asking why Johnny can't code is like asking why can't Johnny hang drywalldo basic math

Seriously, people. It's a fundamentally useful, widely applicable, easily learnable skill. It's not (just) a vocation.
posted by DU at 11:19 AM on June 22, 2010 [1 favorite]


To repeat my actually important points, kids should be kids and worry about vocational training somewhat later in life.

Programming for kids and other beginners doesn't have be vocational training. It can be play. There's work and practice involved as well, but that's the case for basketball and building forts and making friends and Mario Kart, too.

I'm reminded of what Miller Puckette (author of MAX and pd) says about music and computers:
We speak of “playing” a violin, not “working” it. While music making entails a tremendous amount of work, it has to look like play, even to feel like play, if the musician is ever to survive the ordeals of practice and rehearsal (not to mention the privation of working for little or no pay). If using a computer program feels like working in a bank or a hamburger chain restaurant, musicians won’t (and shouldn’t be asked to) do it. [pdf]
posted by weston at 11:28 AM on June 22, 2010 [1 favorite]


It's a fundamentally useful, widely applicable, easily learnable skill.

So is playing team sports, a musical instrument, singing, knowing how to disassemble a lawn mower engine, changing a flat tire, reading a map (though maybe that's up with reading analog clocks these days), cooking, speaking a second language, swimming, etc, etc. But there are only so many hours in a day.

As a guy who learned BASIC at age, ugh, 7 or something I have no issues with the fact that neither of my own kids can program. My own father seemed unworried by my lack of understanding of fractional distillation of crude oil. Or, honestly, anything at all to do with chemistry.

A priesthood of programmers made sense when there were only like 5 computers in the world

Programming is no more a priesthood than medicine, law or any branch of engineering or science or specialized business like supply chain management.
posted by GuyZero at 11:28 AM on June 22, 2010


I'm curious, what does get kids into programming these days?

It depends, but it's often the same as it was 10 or 20 years ago: a parent or older friend or teacher who gave them that first book. Having a personal connection used to be important because learning resources were scarcer and less user-friendly. Now, if anything, your mentor is useful because she cuts through the overabundance of choice and gives you a starting place.
posted by tantivy at 11:32 AM on June 22, 2010 [1 favorite]


So is playing team sports, a musical instrument, singing, knowing how to disassemble a lawn mower engine, changing a flat tire, reading a map (though maybe that's up with reading analog clocks these days), cooking, speaking a second language, swimming, etc, etc. But there are only so many hours in a day.

Except for the musical instrument, I did all of those as a kid. AND I programmed (in BASIC, on a TRS-80).

My own father seemed unworried by my lack of understanding of fractional distillation of crude oil.

Once again, you are treating programming like (it should be) some specialized, niche knowledge. It's completely not. It is a fun activity (for some) that should be more widely understood, if not practiced (by everyone else). I think my analogy to basic math skills is 100% apt.
posted by DU at 11:33 AM on June 22, 2010 [2 favorites]


Tashtego

(regarding what I hope is an ironic endorsement of assembly language.)

Corridor? We used to dream of living in a corridor!
posted by The Confessor at 11:36 AM on June 22, 2010


Ok, sure, I can totally agree that if you're into it programming is as much a hobby as music, woodworking, whatever. Absolutely. And that it can be enjoyed by anyone, sure.

The linked article, however, was a little OMG NO MOAR PROGRAMMARZ! in tone. There is absolutely no correlation between something's popularity as a hobby and the presence of professionals in the field. People don't tinker with their cars like they used to but it's not like we're about to run out of automotive engineers or mechanics.
posted by GuyZero at 11:38 AM on June 22, 2010


yeloson: "The modern experience of operating a computer is one of navigating menus (well trained by videogames, too) and exploring options from there, not learning commands to manipulate something you don't see visually in front of you."

I my shitting god I HATE MENUS just let my type the fucking thing I want rather than having to win a booby prize in some kind of mouse dexterity competition of skill first.

The other day I was working on a project where I had extracted the frames of a 12 minute video into still images in order to manipulate each image with a gimp script. I decided to try to share one of the images on a web site, so I typed in the full name of the file I wanted to upload into the file upload dialog. And then firefox froze up for at least three minutes scanning the directory and making icons for each and every stupid video frame, before it finally realized that I had typed in the full name of the file I wanted.
posted by idiopath at 11:56 AM on June 22, 2010 [1 favorite]


Given that my office was formerly occupied by Randy Pausch, I'd be remiss in not bringing up Alice as a viable option.

One of Randy's complaints was that a lot of people's first (painful) experiences with programming was to go through a lot of effort to get a measly "Hello World". So he created Alice, a way for kids to use computers to do storytelling, and incidentally learn about programming. With Alice, kids have a reason for learning programming.

PARC had another really fun approach, which was to have kids learn how to program using modular robots. I remember being pretty impressed by what some kids came up with one summer I interned there.
posted by jasonhong at 12:04 PM on June 22, 2010


Oh and if you want to go down memory lane (and to completely disprove the thesis that computers are dumbed down and you ain't got no basic):

Applesoft Basic in Javascript

Also, Holy Shit, but it looks like someone rewrote the entire Visual Studio 2008 IDE in Javascript:

CodeRun IDE

Wow.
posted by geoff. at 12:05 PM on June 22, 2010 [3 favorites]


No one seem upset that we don't have 10 year-old designing jet engines.
No one seems to be arguing that the best way to pique children's interest in mechanics is to start with a jet engine, either.

Done and done. Visit any mildly technical forum and "the cool kids" will have installed or be installing linux. That's because the trendsetters and cutting edge software are using linux.

Hahahah, right, sure they are. Putting aside that "the cool kids" of a mildly technical forum are not the cool kids, could I see some evidence of these trendsetters and this "cutting edge software"? I'd esspecially like to see the stuff that won't run on Macs, because there's a big fruity elephant hanging around here dripping with so much actual cool that plenty of people like you deride it for having nothing else.

I realise that if your worldview has it that Linux is cool and that it's technically the best of the best, then yes, it is the hammer to every screw.

But if you have an understanding of why kids do the things they do, of why they got into coding in the 1980s and aren't now, and can remember when you didn't have a beard, then you might be able to think of better ways to get them interested in programming than offering them a fresh Linux install or a command-line prompt.

I think my analogy to basic math skills is 100% apt.
So, you're basically saying it should be something that the majority of people loathe, that they tolerate because schools make them, and that a very small minority take professionally? Yeah, hard to see why kids wouldn't flock to programming in DU-land.
posted by bonaldi at 12:08 PM on June 22, 2010


GuyZero: Kids need to learn programming like they need to learn how to handle a nuclear power plant.

Computers are very nearly infinitely malleable devices. And learning the ways in which you can shape those devices to do precisely what you want is emphatically a good thing. You don't need to know programming at a professional level to get a great deal of use out of the skill. I'm not a true programmer, but I get tremendous use out of being able to create programs to do things I need.

We're handing these kids the best tool ever for manipulating data. Teaching them how to do it properly seems entirely desirable. BASIC itself doesn't matter in the least, but simple algorithms and programming can be a daily use skill for many people.

Afroblanco: I have yet to see a version of BASIC that wasn't a total loss.

Microsoft QuickBASIC for DOS was an excellent product. It was a very advanced version with lots of good features, like no line numbers, subroutines and functions, several different looping constructs, and multidimensional arrays. I don't think it had the equivalent of structs or polymorphic variables, though. It compiled down to native code executables that ran really fast. The 16-bit DOS memory model was a problem, but it was for all programming languages on the PC at the time.
posted by Malor at 12:14 PM on June 22, 2010


I cut my teeth trying to code with BASIC on old 8-bit machines - Vic-20, Dragon 32, Atari XE, and got pretty good by the time I got TurboBasic, although never to the point of doing anything remotely publishable (mostly due to a complete lack of comprehension and education about how putting and moving data into different parts of memory causes graphical displays. I still don't really understand, unfortunately).

I dabbled with assembly language, and even went as far as finding a copy of 'De Re Atari', and getting various assemblers (on cartridge, IIRC) - but that just seemed even more mysterious.
Similarly, "programming" by typing in endless DATA statements from the back of a magazine was a lesson in frustration (until 'Get It Right' was introduced to the Atari world, at least) and again more mystery.

BlitzBasic on the Amiga was cool, so I'm pleased to see that they're still going - I have fond memory of Zombie Apocalypse and the Skidmarks series, but again, no idea where I'd start with making something similar. AMOS came close, but was super-kludgy, and I think I boycotted learning it out of principle based on the quantity of atrocious PD that was released using it.

I don't think that I ever came across a good tutorial that worked up from the basics (no pun intended) of input, logic and processing algorithms through to how to display things on screen, and I think that this is where I lost the drive to learn to program properly.

Nowadays, I've tried to dabble in C/C++, Ruby on Rails, Python, but to no avail; Java(script) and HTML more-so, but not extensively or spectacularly so. The one thing that has worked however (and weirdly) was doing little bits of coding at work - QuickBasic for DOS (inherit dodgy old programs, re-work the code to iron out bugs and make them more user-friendly) and later, VBA in Excel (building all sorts of applications and things to speed up various tasks). I can see how in effect the VBA structure is like a cut-down IDE (and obviously not usually the best tool for a job - but when all you've got is a hammer...), and I've found it quite handy to understand a bit more about objects, properties, etc. and to actually get from a blank slate to something useable. I suppose that this only worked for me because I had a specific end-point to achieve and only had Excel available, and I can't quite imagine trying to get a youngster interesting in building anything like the stuff I build at work...

All of this has lead me to think a bit more about this subject - who nowadays learns how a computer is built? Where do they learn and how? I don't mean assembling the motherboard+RAM+power, etc. but rather the raw silicon. Why does moving a mouse move the pointer on-screen? How does a PC start itself up? Do people start off learning "Hello, world" and gradually - like some kind of narcotic - they eventually find themselves writing the code that forms the basis of the hardware processors?
It feels like we take so much for granted nowadays that some of the essential information and knowledge is now more akin to magic - we may well have built the current generation of computers by standing on the shoulders of giants, but I'm worried that there's not enough of them left to keep supporting us...

On preview, apologies for such a long-winded ramble...
posted by Chunder at 12:32 PM on June 22, 2010


No one seems to be arguing that the best way to pique children's interest in mechanics is to start with a jet engine, either.

heh. I don't know about that... if you've ever read one of those books that's gigantic exploded cross-section views of things the jet engines are pretty f'ing amazing and have piqued the interest of more than a few kids I know. Unfortunately, there's a pretty big gulf between books and being hands-on in this field.

We're handing these kids the best tool ever for manipulating data. Teaching them how to do it properly seems entirely desirable.

So does learning to cook or play a musical instruments but empirically I see a lot of kids learning to do neither and no one seems very upset about it. It's a big world and as awesome as computers are, they're only part of it.
posted by GuyZero at 12:55 PM on June 22, 2010


Shorter David Brin: Are there no smithies left to teach my boy the manly trade of blacksmithing? Damn that impertinent rapscallion Stephen Jobs, damn his eyes, I say!
posted by Halloween Jack at 1:14 PM on June 22, 2010 [1 favorite]


Also, Holy Shit, but it looks like someone rewrote the entire Visual Studio 2008 IDE in Javascript

Wow. The damn thing actually works!
posted by Artw at 1:18 PM on June 22, 2010


So does learning to cook or play a musical instruments

Those are rote skills, albeit fun in the second case.

Programming helps you think.
posted by Malor at 1:29 PM on June 22, 2010 [2 favorites]


Oh wow, where to start. Well, wasn't this the guy who recently argued that writing stories of space captains having sex with blue alien women made one a predictive authority regarding first-contact scenarios?

But yeah, he seems to be hung up on BASIC without realizing that there's about a dozen languages that will do the kinds of algorithmic design cites, at least three of which come standard on any Macintosh. There's no reason someone can't do hangman or push a dot across the screen in perl, python, ruby, or bash. Doing so would require just about the same amount of code as well.

Pastabagel: There is a lot to learn when kids are kids. If there's time left over, they can learn to program, knit, bake cookies, build furniture, etc.

Well aside from the obvious biases towards a "great men" model of humanistic education, I did most of that and dabbled around with computers. Why? Because it was a ton of fun.

seanyboy: Python a great language and I'm all for a proper syntax, but if you can't make something a 12 year old will classify as cool in a couple of hours, it's worth jack-shit.

I made a cool toy when I was a pre-teen that was a long tube made from the most garish fabric I could find at the fabric store, stuffed with polyfill and with a pair of googly eyes on top. It was cool not because it was an outstanding example of 3-D textile design, but because I made it myself.

Yes, my early guessing games never come close to Paperclip, Oregon Trail, or Dragonriders of Pern, but they were cool because the process of entering commands and having the computer do something that originated in my mind was cool.

bonaldi: No one seems to be arguing that the best way to pique children's interest in mechanics is to start with a jet engine, either.

I don't know. Much of my interest in electronics and computers came from having an actual Erector set (a patently unsafe relic from the 1950s with barely-rounded metal beams and lots of tiny little machine screws) and one of those Radio Shack electronics kits which allowed you to build mostly-useless things like bad AM radios and a one-note theremin. If a kid shows obvious interests in those directions, I don't see a problem with giving them those tools and letting them run wild.

Contemporary Linuxes don't qualify as a bunch of jet engine parts either. With the fringe case of gaming aside, I have fewer headaches with Ubuntu than any flavor of MSWin. But having said that, there's little you can do under Linux that you can't do under OS X or MSWin either.

GuyZero: So does learning to cook or play a musical instruments but empirically I see a lot of kids learning to do neither and no one seems very upset about it. It's a big world and as awesome as computers are, they're only part of it.

I don't think that the people raising this complaint are particularly concerned about STEM education either. Rather, I think it's more a complaint about *gasp* advances in usability making their particular geek pedestal a wee bit smaller.

Practically none of this discussion is touching on the fact that STEM education left LOGO and BASIC behind over a decade ago.
posted by KirkJobSluder at 1:32 PM on June 22, 2010


Malor, if you think cooking is a rote skill then honestly I feel kind of bad for you. It's as much an art form as any art and you'll find more people raving about good cooking than you will about good programming.
posted by GuyZero at 1:34 PM on June 22, 2010 [1 favorite]


Malor: Those are rote skills, albeit fun in the second case.

Programming helps you think.


Oh my, in a thread filled with stupid comments, this rises to the top.

Pretty much the entire argument for ___ is always that ___ makes you think. In music education, it's about analyzing things like theme and variations, breaking down musical works into their respective parts, understanding how those parts work together, as well as procedural ideas that are analogous to structured programming.

Now of course, the tricky part is always the issue of generalizability. Does understanding music analytically help you understand novels, political speeches, or computer programs analytically? That's a big question with lots of claims and counter-claims. But it's not something that can be dismissed with, "those are rote skills." Because if that's all you're getting from ___ there's something deeply wrong with the education you are getting.
posted by KirkJobSluder at 1:43 PM on June 22, 2010 [1 favorite]


If you want your kids to be technically adept, give them a technical resource to learn on, not a mass-market, dumb-downed one.

You know what, you can also install those same exact 17 languages (and the majority of the other F/OSS tools found on linux) on any Windows machine for free with Cygwin. The OS has nothing to do with it. Stop spreading FUD.
posted by Rhomboid at 1:49 PM on June 22, 2010 [2 favorites]


Those are rote skills, albeit fun in the second case.

Programming helps you think.


Malor, I'm all about kids learning to program (APPLESOFT BASIC REPRESENT!), but music education has been scientifically shown to help kids' brain development. There's no need to deemphasize music education here.
posted by Jpfed at 1:55 PM on June 22, 2010 [1 favorite]


Which to rant a bit further, from the C64 programming magazines I got, it was pretty clear that I couldn't do Oregon Trail, Paperclip, or Dragonriders of Pern in basic given that most of the example programs involved POKEing octet data of assembly language into memory registers. I don't think Brin is expecting his son to design Oregon Trail from BASIC either, just understand the algorithmic logic of a program, and that can be done in any of the languages he rejects for apparently arbitrary reasons.
posted by KirkJobSluder at 1:57 PM on June 22, 2010


Kids need to learn programming like they need to learn how to handle a nuclear power plant.

Well, until we all have home nuclear reactors, this statement isn't true yet.

There is absolutely no correlation between something's popularity as a hobby and the presence of professionals in the field

Maybe. We'll see. But programmers of my generation are certainly extremely likely to have been doing it since they were young. And it skews towards the good ones. It's not 100%, of course. But I don't think there's any substitute for getting that intuition and willingness to experiment that comes with being young and having free time. You're not going to code the same way in college that you do when you're 8 or 10 or 12.

Basically, I think there is a strong correlation between kids who tinkered on their C64s and Apple IIs and professional progammers. I'm not sure if you can replicate those conditions today, or if its necessary, but I guess we'll find out. Certainly we need more programmers, and since the pay is really good already we need some other way to attract them.
posted by wildcrdj at 2:07 PM on June 22, 2010


Basically, I think there is a strong correlation between kids who tinkered on their C64s and Apple IIs and professional progammers.

If you're a developer of a certain age it's inevitable that you played with a C64 or an Apple II simply because every kid (well, every middle-class kid) used one to some extent.

I can think of a dozen kids I knew who had C64s. I am the only person who pursued software professionally. One is a doctor. One is in IT which I consider something different from being a programmer. I dunno what happened to the rest of 'em but they're not all developers I'm pretty sure.

It's not a correlation so much as a subset (or something).
posted by GuyZero at 2:18 PM on June 22, 2010


Microsoft QuickBASIC for DOS was an excellent product.

We are talking about the same language, right? The one that made functions and subroutines fundamentally different constructs?

So many awful, crufty things about MS variants of BASIC. I don't understand why anybody thinks these languages are suitable for beginners. I mean, hell, at least Java and C# are internally consistent.
posted by Afroblanco at 2:19 PM on June 22, 2010


No one seem upset that we don't have 10 year-old designing jet engines.

Huh? Ten-year-olds don't get to design jet engines because building even a trivial jet engine (in the sense of one that has an axial compressor and the rest) is fairly expensive and time-consuming and requires a fairly decent machine shop.

But if we all had little nanotech fabricators or CNC mini-mills sitting on our desks that could turn out anything we wanted, and some kid wanted to design a miniature jet engine, I'd tell him to go for it, because that would be pretty awesome.

So I'm not really buying your analogy. If some kid wants to do something and it's possible for them to do, and it's not really hideously dangerous in such a way that it can't possibly be made safe, then they should by all means go for it. If they want to cook, let 'em cook. If they want to program, let 'em program. Or paint. Or whatever. At a certain point it's probably wise to try to steer their interests towards something that will let them be self-sufficient in adulthood, but in middle and junior high I'm all for letting kids do whatever the resources exist to allow them to do, on top of a basic core curriculum.

(As an aside, when my father was in middle school he built a working steam engine; this was back when they still had "metal shop" in school. He remembers it quite fondly as one of the more interesting things he ever did in school. I can't really relate since by the time I made it to that age, metal shop had already been budget-cut into a distant memory, but it sounds like it could have been fun. There was never any intent that most of the kids in that class would design steam locomotives, it was just a pedagogical device to get them thinking about how things work and how the tools could be used to make stuff.)

The thing is, modern computers -- at least for the moment, stuff like the iPad excepted -- are like having the software version of a CNC mill on your desk. Sure, not every kid who learns a bit of programming when they're in middle or highschool is going to become a software engineer, nor do you need to have programmed in highschool to have a career as a programmer. But there's a more important lesson, which is demystifying software in general: once you've done some programming you can begin to see how commercial programs work, even though they're much more complicated than yours. But you can see that they're not magic, and that at some point they all started off as big text files in someone's editor somewhere. Given the role that computers play in our society (and the increasing role that I'm confident they'll play in the future) I think that's an important lesson.
posted by Kadin2048 at 2:21 PM on June 22, 2010


The C64 was the top-selling single model of the 80s and sold a total of 30 million over its extended life span, and at $600 a pop, a pretty hefty luxury expense. Computing devices are much more accessible these days, offering many more hooks for the novice hacker to get into creating stuff.
posted by KirkJobSluder at 2:25 PM on June 22, 2010


Because there's no limit for how much one person can absolutely constipate a single thread...

So I'm not really buying your analogy.

So that's kind of backwards and it's my fault for not thinking and/or writing more clearly.

Kids should be allowed and possibly encouraged to do anything. Absolutely, if there was a way to build a functional jet engine go for it. Write an iPhone app. Win the Little League World Series. Build a robot. These days simply walking to school instead of getting driven by your parents seems like too much to ask of most kids, but whatever.

But should we be upset when kids aren't easily able to do something that is possibly very important? I say no. Life is long and the world is big and programming and inserting arterial stents are very important but I'm not going to get too upset if it's not accessible to kids or beginners of any age.

And, having said that, the argument that programming is somehow inaccessible without BASIC is also wrong.
posted by GuyZero at 2:29 PM on June 22, 2010


There is no reason for kids to get hooked on programming other than to make them professional programmers. The reason we learned top program computers back in the 80s is because the computer couldn't do most of the things you wanted it to do.

That's completely wrong, and it invalidates the rest of your self-righteous diatribe, which was better (and far more succinctly put) when Heinlein said it. But his point wasn't that THESE things are good, and THOSE things are bad, as you so happily divide the world. It was that you should be exposed to, and take an interest in, many things.

We know that when kids are given an introduction to computers in such a way that they can build things with them with little initial work, they occasionally enjoy it. Some others get bored. And yet others find it so completely mind-blowingly awesome that it ends up becoming a great passion of their lives. We know this because it happened to so many of us. We weren't frustrated with this useless machine that "couldn't do most of the things we wanted it to". We found ourselves in a perfect playground. It was like having an infinite (ok, merely "very large" at the time) box of Lego that let us build whatever we wanted, whatever we could simply think of.

All we want is a way for today's kids to have the same opportunity. Not to take violin or baseball or Rudyard Kipling away from them. This is not a bad thing.
posted by CaseyB at 3:02 PM on June 22, 2010 [1 favorite]


There is no reason for kids to get hooked on programming other than to make them professional programmers...There is a lot to learn when kids are kids. If there's time left over, they can learn to program, knit, bake cookies, build furniture, etc.

Programming doesn't exist in a vacuum. I learned to program as a 10-year-old, and as a result, high school math was a breeze. Basic (as opposed to BASIC) programming is just algebra. And geometry, if graphics is your thing.

And even if programming and math were utterly unrelated, I would argue that baking, programming, and furniture-building -- IOW, hands-on, useful skills -- are infinitely more useful to most children than what's actually taught in school. I've always found it unfortunate that every skill I have that's put food on my table over the years (music, web design, programming, electronics, painting, floor-installing) were things I learned on my own at the expense of school, rather than as a result of it.
posted by coolguymichael at 3:29 PM on June 22, 2010


Well, that and computer science has a lot of other areas of application beyond just professional programming. In the sciences you'll be working with statistical languages and modeling theories. The arts are grabbing computers as both a medium of expression and as essential part of production workflows. The humanities are looking to computer-aided search algorithms and text processing as a way to deal with massive volumes of textual data.

Is it essential? No.
Is it potentially useful? Yes.

coolguymichael: Programming doesn't exist in a vacuum. I learned to program as a 10-year-old, and as a result, high school math was a breeze. Basic (as opposed to BASIC) programming is just algebra.

Students are often no longer learning algebra, geometry, calculus, and physics by painfully entering numbers into functions and painstakingly graphing the results. They're often programming those functions into devices or software that will show them the results, and let them explore alternative hypotheses.
posted by KirkJobSluder at 3:39 PM on June 22, 2010


Coding's not for everybody, only for the right sort of mind. You can't find these minds, they find themselves.

Get them a Commodore 64 or a Trash-80 or anything that boots up in BASIC ... (or some other language that you can do things in inside of 10 minutes, like LOGO) ...

Doesn't have to be hardware, could be an emulator. The main thing to avoid is the idea that "programming is hard" and "you have to take classes and study for weeks in order to do it". Because it's not and you don't.

Include lots of programs written by others to learn from, in source code so that they can modify what others have done. I know this tactic works because I've seen it work hundreds of times. But only for the right people.

If Johnny doesn't code, given that environment, he hasn't got the curiosity and creativity and peculiar almost-OCD mindset.
posted by Twang at 4:38 PM on June 22, 2010


After a couple of years you could get a C64 and a 1541 disk drive for maybe $250 dollars at Toys R Us. And someone has already mentioned that the Vic 20 did have a Basic interpreter, unlike what Tashtego said.
posted by rfs at 9:03 PM on June 22, 2010


I like the look of this free BASIC in javascript.


@plinth
, David H. Ahl's 101 Basic Computer Games got me interested too. I wonder if his middle name is really "Hollerith."
posted by Hello Dad, I'm in Jail at 4:25 AM on June 23, 2010


BASIC? How I would have loved to have had BASIC on my VIC20.

I had my brother's VIC20 - my dad refused to buy a PC on the grounds that, in 1993, this machine could do anything a PC could - and it could program in BASIC. Which I used to try a lot, as the tape player was buggered, only to get POKE ERROR LINE 50. Not many places to work out how to resolve that by the early 90s. When we did get a PC, in 1998, it was an Amstrad386 (I think) meaning I am one of the few 28yr old non-geeks who can work with DOS and knows what GEMstart is.

Surely it's less necessary for the average kid to know programming now, though - I remember how in 1999 designing a website involved fiddling with Dreamweaver and HTML codes. Now, I could set up a website just like one I wanted to then by going to Wordpress, choosing a theme, and changing it a little. I am computer literate, but do not work with computers, and that is all I personally need.

I learned to sew when I was a kid, because it was less boring than Countryfile, and I still find it useful now. Why not teach Johnny that so he doesn't have to go to the drycleaners?
posted by mippy at 6:47 AM on June 23, 2010


Those are rote skills, albeit fun in the second case.

Music helps me think, particularly playing music - it's mathematical and logical. Cooking is an art. (Baking is a science.)

Programming can be something of a rote skill. A lot of the outsourced programming is approached like this.
posted by krinklyfig at 10:47 AM on June 23, 2010


GuyZero: "Malor, if you think cooking is a rote skill then honestly I feel kind of bad for you. It's as much an art form as any art and you'll find more people raving about good cooking than you will about good programming."

The distinction here is that programming is not tied to a medium or a subject. Food and music are expressive, and variable, but they are not nearly as general and abstract as programming, and they don't quite carry the range of possibilities that good programming can. Raw frozen seal meat as served by an Inuit is more similar to an Italian caesar salad than declarative programming is to object oriented programming. Not to mention the differences between DSP, database design, game engine programming, algorithmic music composition, user interface, network programming...

Programming captures a certain variety of abstraction and formalization of thought that is similar to that in philosophy or mathematics but it is distinct from those and both broad and deep in the insights it has to offer.
posted by idiopath at 5:53 PM on June 23, 2010


idiopath: The distinction here is that programming is not tied to a medium or a subject.

Well no. Theoretical computer science isn't tied to a medium or subject, as it involves whether certain propositions regarding theoretical logical systems that might be implemented with semiconductor gates can be proven using certain formalisms.

And for that matter, neither is music theory, which can create compositions that cannot be performed using any existing instrument or human being, and likely are not even in the realm of a person's ability to listen to them, as Laurie Anderson and Lou Reed just demonstrated.

But programming in the sense argued by Brinn and others here isn't general or abstract at all if the explicit goal is to make a computer execute simple designed algorithms using an idealized choice of BASIC. Not that there's anything wrong with that, but let's not set up a strawman of theoretical Turing engines vs. a strawman of music performance when all we're talking about is pushing a dot across the screen with a loop construct.
posted by KirkJobSluder at 7:47 PM on June 23, 2010 [1 favorite]


Speaking as someone who has seen his compositions performed and also written computer programs that others have used (minor ones that nobody here has heard of - but at least I have crossed into the world of actual experience here), the practice of programming is more generally useful and more powerful as an all purpose tool than composition or performance of music.

I say this in the context of assertions that kids don't need to be encouraged to program because that is just a niche thing.

Programming is harder, and less fun, but it is not nearly as niche a hobby as performing or composing music. And just like everybody can and should learn to play music, and to cook, everybody can and should learn at least the basics of programming.
posted by idiopath at 8:15 PM on June 23, 2010


Programming is harder, and less fun, but it is not nearly as niche a hobby as performing or composing music. And just like everybody can and should learn to play music, and to cook, everybody can and should learn at least the basics of programming.

Why? I need to cook to feed myself, but I don't need to program to be able to do my job or anything else essential. It might be a fun hobby, but like many (but not alll) hobbies is not a necessity.
posted by mippy at 4:22 AM on June 24, 2010


idiopath: Speaking as someone who has seen his compositions performed and also written computer programs that others have used (minor ones that nobody here has heard of - but at least I have crossed into the world of actual experience here), the practice of programming is more generally useful and more powerful as an all purpose tool than composition or performance of music.

Certainly, if only because we live in a world where we interact with dozens of microprocessors a day, and little to do with grandiose bullshit regarding abstractions and formalisms that are not used, taught, or understood in the practice of "writ(ing) computer programs that others have used." Those abstractions and formalisms are on the level of proving whether certain types of memory management are mathematically error-free, not on the level of applying the MVC pattern in Objective-C to a CRUD application.

I say this in the context of assertions that kids don't need to be encouraged to program because that is just a niche thing.

Of course it's not. Neither usually are concepts in ___ which can almost always be applied well outside of it's primary domain.

Programming is harder, and less fun, ...

I disagree on both counts.

... but it is not nearly as niche a hobby as performing or composing music.

Really? Perhaps I have a bit of cognitive synthesia, or I might just be promiscuous with my metaphors, but I see patterns analogous to music everywhere, including computer programming.
posted by KirkJobSluder at 4:57 AM on June 24, 2010


In fact, there is a tendency for pragmatic anti-intellectualism among programmers. Some of it is reasonably justified because they are paid to produce programs people use rather than programs that demonstrate theoretical concepts, and the two rarely overlap.
posted by KirkJobSluder at 6:04 AM on June 24, 2010


Some people seem to be repeating the idea that computer programming isn't something that most people will ever use. I disagree rather strongly with that. While most people probably won't ever be professional software developers, in the sense of doing it full time and getting paid for it, our world is saturated with computers and the ability to write simple programs is an incredibly useful one.

Just by way of background, I am not a software developer, nor do I have any formal training in computer programming (which I'm sure probably shows). Most of what I get paid for involves either talking, or writing in English, or fussing with numbers in Excel. I don't get paid to deliver code.

However, the (relatively basic) amount of programming skills I do have, I use all the time. The other day I got sent a huge list of SKU-type ID numbers. It contained tons of duplicates and invalid entries that needed to be cleaned out. Although I could have done it in Excel*, it would have been fairly obnoxious, and it was about thirty seconds worth of work in Python.

You don't need to know much actual programming or CS theory before you start seeing places where a little custom code would save a lot of time and effort. That's what makes it worthwhile for a young person -- or anyone else -- to learn. Once you stop seeing computers as magic boxes that can only do what the software you buy tells them to do, and start seeing them as generic tools that can do anything you want -- if you want to spend the time telling them exactly what you want them to do -- you can utilize that anywhere you want. It can be a hobby in itself, but it's also something that you can use in conjunction with just about any other interest imaginable.

I don't want to get into programming vs cooking, because I also enjoy cooking and it also seems like a useful skill that everyone ought to know. It's not an either-or proposition. In some ways I think there are parallels: people ought to know how to cook so that they can make food for themselves rather than having to only eat whatever they can find in a box; programming is similar, except instead of Kraft Mac-and-Cheese, it's commercial software. Commercial software, like Kraft Dinner, may get the job done, but if you have some minimal skills you may be able to produce something that's a lot more palatable. Even if your programming skills are the cooking equivalent of tossing some Tabasco into the saucepan (as mine are), it's still empowering to have some control over the results.

* Excel 2007, that is; Excel 2003 has a relatively small row limit. Even had I gone that route, it still would have required 'programming' in the sense of writing the formulas to sort and filter the list the way I wanted. Although many people might not think of that as 'programming' (especially if what they really mean is 'software development'), it's certainly close enough to be a transferable skill.
posted by Kadin2048 at 8:21 AM on June 24, 2010


I have nothing really to add but my own life story. My dad gave me a budget to build my own computer when I was 14, I didn't save any money for an OS and ended up with an ancient-even-for-back-then version of Linux. I slowly dipped into programming, and was pretty handy with Python by the end of high school. It was a pretty bumpy road, since I didn't have any good teachers for a long time and my parents were continually skeptical that playing with the computer was a good use of my time. I stuck with it and now 12 years later I'm working on my CS PhD. Someday I might even get a job!
posted by miyabo at 9:18 PM on June 25, 2010 [1 favorite]


« Older Sci-Fi Airshow - Take the guided tour....  |  Neil Cicierega may be responsi... Newer »


This thread has been archived and is closed to new comments