From the thoroughly brain charging article Coding for Success by Andy Young
Published in The Kernel, January 23rd, 2012
From the thoroughly brain charging article Coding for Success by Andy Young
Published in The Kernel, January 23rd, 2012
Alright, I’m ready to call it. If the 90s was the decade of the brain, and the 2000s, the decade of impossible to categorize millennial upheaval, this decade is going to be the decade of digital literacy. Or at least that’s what it should be.
When I say digital literacy I don’t mean this is the decade when everyone finally figured out how to use Twitter. I mean during the next ten years society is going to accept that computer science can no longer remain a field reserved only for specialists. It needs to become a core subject in schools, as important as math or english. And it needs to be something that all citizens are learning at whatever pace is realistic for them.
There are so many reasons for this, but the most important, every day we’re uploading more and more of our personal, professional and financial data into a cloud. If we don’t understand at least the fundamentals of how that cloud works, we’re leaving ourselves and our children vulnerable to all kinds of manipulation, surveillance and violation that we’re not even conscious of.
Some people will choose to gate themselves off with strict parental controls. But the Internet has the potential to be one of the greatest incubators of creativity, knowledge and social connection in the history of human civilization. Who wants to gate their kids off from that? Or more realistically, how long will you even be able to?
The best way to turn kids into good digital citizens, able to protect themselves and each other, is to direct them towards the knowledge and skills they need to make informed decisions consistent with good values.
Learning to program is no longer about learning how to make robots. More and more it’s going to be about learning how to stay human. As Douglas Rushkoff started pointing out last year, we are increasingly being faced with the choice of being the programmer or the programmed.
So how to start? We can call for massive educational reform, like they’re doing in the U.K. In January the Ministry of Education announced a huge overhaul of the teaching of information technology in schools. Last month The Observer ran a week-long series called “Why All Our Kids Should Be Taught To Code” It covered all the best reasons why computer science needs to become a core subject, and why information technology needs to be less about teaching kids how to use software and more about understanding how it is made (there’s an especially great article on why girls need to start learning it early, before puberty when they start to become more vulnerable to peer pressure.)
Enough with the stale back to basics testing. Incorporating computer programming into core courses will bring education alive. Fooling around with the functions that make a computer do your bidding, for example, calculating every multiple of three up to 10,000 in under 10 seconds, is empowering and makes math fun. Bringing some HTML or CSS into a research project is like mixing a magic graphics potion from twigs. These are challenging skills, but they’re skills with big, immediate payoffs. Most kids are smart enough to figure that out.
But do we have the time to wait for this educational reform? If you’re a parent there are great reasons to simply start learning to code on your own. There are few professions left in which knowledge of code won’t help your career dramatically. Do you really think you can’t learn something that can be taught to eleven year olds? If you’ve cut back from work to raise children, or your college degree is going to be gathering dust for a few years before you head into the work force, learning to code will keep you brain sharp and your skills fresh. And you can use these skills now to build games and projects with your kids. Literacy begins at home, whether it be analog or digital.
Nobody needs to learn enough to become a senior developer. But just spend an hour dipping your feet into one of the free coding education programs that have popped up in the last year. One of the first things you’ll learn is how to create a confirmation box.
>confirm (“Do you like my awesome confirmation box?”);
Run that in a browser console. Spend an afternoon hacking that box with a kid. Make up some nonsense choices. Another hour and you can learn to prompt some default choices. For fun try to force each other to make decisions that lead to embarrassing results. That confirmation box will never again have quite the same unquestioned authority for either of you.
If you do just that, you’re already one giant baby step ahead.
Thanks to Lisa Williams over at Life and Code, for the scoop on this.
I first found out about Turing when my mom took me to see “Breaking The Code,” a West End play in London, starring Derek Jacobi. Turing was considered one of the founding fathers of computational thinking, until the mid 1950s when he was outed and convicted of homosexuality. It didn’t get better. He committed suicide and the world lost a brilliant mind.
Last week my eleven-year-old son’s yahoo mail account was hacked. Ben’s on Facebook and doesn’t e-mail very much, so fortunately his list of contacts was small. Because he doesn’t have any bank accounts or credit cards, I guess I’ve procrastinated explaining to him the importance of having a reasonably complex password you change often
If you’re a parent who hasn’t done this yet. Do it now. Believe me, you do not ever want to see to see the look on an eleven year old boy’s face when he discovers his identity attached to thousands of e-mails offering to introduce people around the world to his “beautiful lady friends.”
One thing I discovered this week, however, is that I am a significantly different parent after three and a half months of coding lessons.
If this had happened last year, I probably would have shared my son’s sudden picture of the world as a cryptic, chaotic place filled with evil geniuses programming bots that inexplicably burrow their way into your private, vulnerable data. I would have soldered up the parental controls, because that’s all I would have known to do, and I probably would have done everything I could to protect my son’s innocence and to continue doing it for as long as possible.
But because of our family Code Year pledge, I decided, instead, this would be a good week to review what we’d learned about randomization programs. From what we already knew, it was easy to see how someone with just elementary programming skills could spout out enough random letters or numbers in under an hour to crack the accounts of people who still believed that they could easily protect their data with a simple memorable word or a birthdate.
It was also easy to imagine how some of these simple hacking bots were being created by teenagers in poorer countries, taking advantage of the fact that they’re learning core-programming skills that are not currently being taught as a part of a standard high school education in richer countries.
I’m not talking about skills fundamental to a computer science degree. I’m talking about skills so basic they can be learned by a middle aged mother and her eleven year old.
I didn’t have to go past week three, conditionals, to find a simple randomization project we could adapt to create our own superSecurePasswordCreatorBot.
We used the dice-throwing project. This elementary program throws a virtual set of dice to create a random score. With just a few more lines of code, we could replace the numbers on each side of the die with six meaningful words and six meaningful double digits. Call the program and we have a randomized, but memorable password that can be changed weekly. Add a third die, and we have a SuperDooperSecurePasswordCreator. As Ben’s knowledge of Object Oriented Programming develops we can continue working on this so that we can easily and automatically store our passwords for easy retrieval.
The important thing at this moment, however, is not so much creating an impenetrable password in a family war against an army of alien grifter bots. What’s important is that we’re engaged in a productive learning curve, not huddling together into some increasingly tiny information gated community.
Now I’m wondering if in protecting my son’s “innocence,” what I really would have been protecting was his ignorance, and mine.
We’ve grown up in a society that thinks that teaching people how to use software is digital literacy. But in the three months since I’ve started learning core-programming skills, I am being hit with the full on obvious truth that this is pretty much the same as if we were teaching people how to read without teaching them how to write.
Computers monitor and manage every aspect of our civilization. We would never make math something that people only started learning in university, if they showed an interest. Why are we doing this with computer science?
How is this different from the days where monks wrote and priests read from illuminated texts? While the masses listened enthralled.
Our progress was never dependent on how well we memorized or used the illuminated text. It was always dependent on how well we understood that text and used it to illuminate the world around us.
In the same way, our progress as a civilization is not dependent on how well we use, or even how well we make software. It’s dependent on how well we understand how it is made and how this computational thinking helps us understand the world we live in.
That’s the password to the next level.
With The Tower of Hanoi, I had fun with the evil powers of recursion. But I’m not actually learning code to teach my son to become a dictator, even a benevolent one, bearing brownies. While we’re learning recursion, it’s probably not such a bad idea to bring up the some of the consequences of creating formulas that make work and data collection efficient, but potentially dehumanizing.
A few years back a friend gave Ben a lovely book that shows both ends of the spectrum of rich creativity and mechanistic abstraction. Anno’s Mysterious Multiplying Jar was written and illustraed in 1999 by the Japanese father and son team, Mitsumasa and Masaichiro Anno. It tells a simple story of factorial development that starts with a jar, large enough to contain an ocean.
In this ocean is an island and on this island are two countries:
In each country are three mountains. On each mountain, four walled kingdoms. In each kingdom, five villages. In each village, six houses. In each house, seven rooms, in each room eight cupboards. In each cupboard, nine boxes. In each box, ten jars like the first.
The question at the end of the story is how many jars are contained inside the jar? The answer is ,of course, 3,628,800 a.k.a. 10 factorial or !10.
The first part of the story is filled with richly illustrated picture of villages, houses, rooms, cupboards, all with their unique, individual characteristics. The second part retells the story with dots instead. It goes as far as a two page spread representing !8, or 40,320 dots. The Annos don’t venture past that, since they’re writing a children’s book, not a heavy tome full of dots.
But the point, so to say, is made.
An old school software engineer showed me a computational thinking exercise the other day that finally helped me understand recursion. Or at least brought me a step closer to figuring it out.
The Tower of Hanoi is a classic math puzzle.
Go work on it. I’m going to assume you’re smart enough to figure it out eventually. Come back when you’ve done that. And don’t come back until then.
**Hanoi tiger mom locks blog door**
Have you figured it out? Oh really. So how many moves would it take to move a ten disk tower? If you don’t know that, then you didn’t really figure it out! Get out of here!
**Locks door again (secretly bakes brownies)**
Figured it out?
Of course you did. Have a brownie.
Now we can talk about your adventure. Remember that joyful moment of insight, when you realized that you could move a tower that reached the sky, if you wanted to, because you’d figured out the simple formula! (Start by moving the top 3 disks, then move the fourth disk on to the empty rod, then move the 3 disk tower back on top of the 4th disk, then move the 5th disk onto the empty rod, then move the 4 disk tower back on to that, then move the 6th disk onto the empty rod. Repeat forever.) But then there was the horrific realization of how much work that would involve, since every time you add a disk, the number of moves increases exponentially (the formula for figuring out the moves is actually (2 number of disks -1))
Welcome to a secret truth of civilization. Engineering has a simple solution to almost any problem, except where to find the slaves to actually do the totally tedious work!
A recursive formula is basically a formula that repeats the same work over and over, but always adding a little something else—or taking something away–so that the work is actually producing some kind of change.
Crack that and you’ve cracked a major concept in programming.
Now you just have to find slaves! Here bring them some brownies.
Just found out about this really cool UK project called rasberry pi. This is a $25 computer, the size or a credit card. It’s basically just a minimalist linux platform with a USB port. The purpose of it is to teach kids to program by stripping the computer down to its punk rock roots. Look how cute it is:
Polemical article here by Canadian novelist/developer Jon Evans in Tech Crunch on why hipsters shouldn’t waste their time learning to code. His argument is essentially, what’s the point, to be truly proficient at it, you should start learning it, like he did, at age 10.
Interesting that he compares learning to code just for the sake of learning code, to learning French when you may never go to Paris.
I’d be curious how his French is.
French is one of Canada’s two official languages. Outside of Quebec,however, few people are really fluent, or even functional in it. This creates political tension, but on a practical level it doesn’t make much difference.
I grew up in Quebec, however, where over the course of my lifetime, French became the official language of business, government and basically, life. I saw what happened to an entire generation of people who weren’t functional enough in French to get a job even working in a restaurant.
Americans are anxious. As they should be. They grew up believing that English was going to be the dominant language of business forever. And it probably will be for a long time. But anyone who can’t see that computer code is becoming the dominant language of trade in the world, is blind to the future or kinda has their head in the sand.
Does this mean that anyone who doesn’t have senior developer skills will be unemployed? No. The soft skills–conversation, social networking, etc.–will always be essential. But deciding not to learn code because you may never build an app, is like deciding to not learn French because you’ll never be fluent—except you’re living in Quebec, not potentially vacationing in Paris.
In the future, we may not know when we’re going to need a functional knowledge of code. But I have no doubt we’re going to need it.
On January 5, I made a whimsical New Year’s resolution. Like the other roughly 400,000 people who signed up to Codecademy’s Code Year challenge, I decided I would make 2012 the year I would learn how to code.
Usually New Year’s resolutions are about things you’ve been trying to accomplish for a while, or at least something you’ve been thinking about. I can honestly say, it had not once crossed my mind at any time before January 5 that I should learn to code. Or that I would ever want to code. To be totally honest, I wasn’t even quite sure what code was.
I was hooked by the headline of an article by Douglas Rushkoff on CNN.com. “Learn to Code, Get a Job!” Coding, he argued, was a skill that not enough people had, and companies were paying big money to find people who were “code literate.”
I was curious. For the last eighteen years I’ve supported myself primarily as a book critic. But the paying work now available to book critics, even those with almost two decades of experience, has pretty much dwindled to non-existent. People still call me regularly. But more and more they believe I should be doing this as an act of philanthropy, from my sacred perch as a wizened elder keeping the old ways alive. And why not? Everybody and her kitten has a book blog. What makes me and the roughly 20,000 hours I’ve spent doing this so special?
I can’t say I quit my job, so much as accepted that the world has quit my skills and expertise. I’m not bitter. I loved what I did. I’d curl up and die in my dusty but comfortable room full of contemporary first editions. But I’m the single mother of an eleven year old boy, so this is not a currently a life option.
I went to the codecademy site. Typed in my name as a “string.” And so it began.
And continued great for about ten minutes. Until it got harder.
Half an hour later I was staring at a screen. Squiggly lines and semi-colons were dancing in front of my eyes like alien creatures. I had felt this gut full of confusion before. Where? Oh, right. That time my son’s father and I drove across the El Paso border and found ourselves in Ciudad Juarez. Two Montrealers with about 20 words of Spanish between us. ( I don’t know where we’d gotten the idea that Juarez would be a friendly border town, kind of like Burlington, Vermont. But it’s not.)
Fortunately my son, Ben, was also curious about codecademy and was able to help me.
“What’s wrong with me?” I wondered. “Why is an eleven year old kicking my ass at this?
I now realize that Ben had an edge. Like most Montreal kids, he’s fluently bilingual. Since the age of 14 months, when I enrolled him in French language daycare, his brain has been trained to sift shared syntax from distinctive details. “Mom,” he sighed loudly, clearly enjoying his exasperation with my unusual attack of mental density, “if you write something after console.log, you have to put it in parentheses.”
My brain had also been trained in two languages, but apparently the master gears needed oil.
Cut to twelve weeks later. Ben’s still learning to code, but at a slower rate. Turns out that age and experience are helpful assets in cultivating the sheer bloody mindedness it takes to master this skill. An innate talent for perceptual reasoning probably doesn’t hurt either. But like any branch of science, and life in general, to succeed all you have to be willing to do is fail. A lot.
A couple of Wednesdays ago, Ben came home from school to a mother lost to the dark obsessive frustrations of “Snake Eyes.”
The challenge was to write a program that would record the random dice scores of four players, giving each an extra turn when a double is scored, but grinding the whole game to a halt when any player rolls double ones. This is, no doubt, an elementary problem for any programmer. But I was stuck; and until I figured it out, dinner would have to wait. Or Ben would have to learn how to find his way to Mcdonald’s and buy us both dinner. Which he may very well have done. I’m not sure. My memory of that evening is still hazy.
One day maybe I’ll look back on Snake Eyes as something akin to my first retreat into the desert of programming.
I just know I emerged a different person. Somebody who now sometimes has thoughts like “you know, a well sustained metaphor really works an awful lot like a multi-dimensional array.” Somebody who used to deal with panic through deep breathing exercises, but recently decided it would just be a lot faster to assign my anxiety to a variable and de-increment it in a “for loop.” Somebody who knows that most people will probably read that sentence as complete babble. But somebody who kind of doesn’t care. Because some people will get that joke. And those are my people now.
My moment of programming satori will no doubt wear off. But I do know that my resolution to learn code ceased to be a resolution a while ago.
Whether or not I continue, I’ve realized something important. For too long I’ve bought into a false dichotomy between books and technology. Because they’ve been with us for so long, we think of books as something natural, like trees. We believe they grow slowly and organically through the creative earth of the human soul.
Who can watch the horror, as technology mows them down!
Lo! It is the hero, Jonathan Franzen. Alone with nothing but his rapier condescension, falling to a mechanized army of tweets.
I know enough about the book industry to know what an illusion that is. I love books, but I also know that they are books, not sacred objects. What I didn’t know before, however, in a concrete way, is how much of technology is actually writing. All the things we think are destroying writing, are actually manifestations of writing. Robots are writing, 3D animation is writing, behind all the magic visuals, wizard of Oz-like, are the new writers.
The magic cannot happen without the people who love to play with the clunky blocks of text that keep the dream spinning. And the people generating the blocks of text, combining hard won craft with instinctive art, are not all that different from the people who used to write books, or screenplays, or even book reviews.
Just like the writers of yore, some of them are making heaps money. But just like the writers of always, many of them are giving their knowledge and mentorship away for free. Free for anyone with enough stamina and commitment to learn it.
Maybe codecademy will help find those people. But just as importantly, maybe it will help them find themselves.