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