Teach Yourself Programming in Considerably Less than Ten Years

A bit of a brain dump. It might turn into a tutorial one day. For now, a ramble.

The title of this post is a hat-tip to Peter Norvig, author of a significant essay, Teach Yourself Programming in Ten Years. While I can’t disagree with many of his points there (most are spot on), I do reckon he makes the mistake of promoting the myth of there being something special about programming, and by extension, programmers. While in special cases this might be true, I wish to argue that in general, nothing could be farther from the truth.

You don’t need 10 years to be able to program, 10 minutes, more like. The prerequisites are basic literacy and numeracy and a bit of hardware on which to express yourself. But be warned, it’s the red pill, Alice’s rabbit hole. I forget where I read it, some coder’s little girl had been introduced to programming, quote was something like: “it’s like lego, but with a never-ending supply of pieces”.

// digression starts
I’m being bold in suggesting you can program in 10 minutes, but it’s trivially provable. Open the developer tools in your favourite web browser, find a console, type in

console.log("Hello World!")

press Enter, and there, you’ve programmed, done.

But there is another key message, the one you can see in Norvig’s piece, that it doesn’t stop there. Learning this stuff is a continual process.

I say I’m being bold here, and I should qualify that. I do believe it’s a very important issue. I got into coding in my early teens (am 51 now), and I’ve put in the hours on this stuff. But I was lucky – thanks to having arty family, science fiction, and a mildly mathematical bent, and most of all growing up in the period when to understand computers you had to understand electronics, I was nicely positioned and highly motivated to find out more. I still find the stuff seriously compelling, but the environment has changed in a massive way. Nearly half of India’s 1.2 billion people have no toilet at home, but more people own a mobile phone… i.e. a computer. But programming, despite being an activity carried out by millions of people is still quite an arcane thing, for most people it’s a kind of magic. But it’s well within the scope of anyone capable of using a mobile phone.

Not sure if this is digression or the key argument I’ve got to get across. I’m a junky for history documentaries, rarely finish a book (reading or writing, hah) nowadays, but the BBC is still occasionally informative. Where did the text characters we use every day, the numeric ones come from? The evil Islamic empire mostly. In the 1980’s I was all for Direct Action, politicians suck, landed on a vaguely anarchist standpoint. But those riots of the period did little apart from give justification to the hang-um brigade. I don’t think much has changed. But technology has. I dropped my street-level feelings, now I believe the only way we can make the world a better place is to play on our strengths in the Anthropocene era. I’ll have to ask Norvig, but I suspect given his writing of (excellent) artificial intelligence books, he leans a bit towards the singularity kind of idea.

I now think the best way of changing the world for the better is through technology, basically Englebart‘s idea of the augmented Homo Sapiens. If information, data, is made open by default, the evil bastards, fascists and self-serving/nepotic politicians can’t get a foothold.

Yeah, digression. But if *everybody* (more or less) can program, it liberates everyone.

The big ideas of programming are about modelling the real world in a different environment. I would recommend the idea of Model, View, Controller (a fairly standard approach), it lacks a lot of subtlety, but asa first approximation works well. Model is the abstraction of concepts, shopping list. Carrots, spuds & onions. View is how you see the thing, picture of them veg. and maybe a button for “Order some sprouts”. Control is how the stuff is wired together.

Tried explaining The Stuff to me fidanzato

model abstraction, mish, analogies

politics, augmentation

A young friend, Julian, came to stay a few months ago. Young, intelligent and good-looking, brimming with confidence, the world is his oyster. He asked me, “so how long will it take me to learn how to program?”. My immediate estimate was a week (assuming an hour or two a day). I did recognise one subtext, that he was really asking, “how do I make web sites?”. I think I showed him something like the Javascript “Hello World”, but then went on to basics of markup.

Advertisements

One thought on “Teach Yourself Programming in Considerably Less than Ten Years

  1. bentrem

    I saw a real good documentary on the cog-psych of … well, put simply … folk who really do seem to have no sense of direction. Easy to dismiss that as some sort of quirky laziness, given that most of us are pretty good at “way-finding” (Who’d have survived without it?!) but it’s true. Some folk just don’t have that internal compass, or however it works. (Best theory is that we generate a “cognitive map” as we go, as though looking down on our area and adding landmarks as we identify them.)

    What came to mind then … and just now … you know how some are gifted not just with the ability to learn the syntax, but … how in blazes do we imagine successful algorithm to novel problem? that has to be among the highest of human capabilities.
    Point being: some folk really, really, really don’t get it. Almost as though the simplest existential logic doesn’t in-form their cogitation. And FWIW this, I suggest, is tightly related to problem-solving in general, including “trouble-shooting” i.e. fault isolation and identification.

    Why I care about this? we’re finding out that basic aspects of world-view arise out of differently constituted psyches. Our differences as individuals extend all the way down to our most basic experience of the the world … and of course how we experience whatever we experience in-forms what me make of whatever we experienced i.e. what meaning we ascribe to it.

    I would never suggest anything like “I can make a good software engineer out of anybody” but … here’s my punchline … just as we can truly teach anybody the basics of logic and syntax, so (I suggest) we can communicate to most anybody (except psychopaths and sociopaths) thinking that validates a society based on amity and solidarity and empathy.

    //*phew!*//
    🙂

    –ben

    Reply

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s