Maybe in 17 years or so, there will be an Arduino / rPi / Beaglebone explosion of entry into CS programs? Look at things like this cool program put on by the Durham County (NC) Public Libary this summer:
Kids learned to program in Python, on a Raspberry Pi, and each of them left at the end of the day with their Pi, and accompanying monitor, mouse, keyboard, etc. Some of these kids were underprivileged kids who had no computer access before, so the event was a pretty big deal for some of these kids. From what I heard, a few parents teared up at the end when they found out their kids got to take all their stuff home with them.
More programs of this nature, and more access to Arduino, rPi and the like, is one of the things I hang my hope for the future generations on.
Aside: I'm proud to say that our other co-founder here at Fogbeam Labs, snkahn, was one of the co-conspirators who helped pull that together.
That's awesome; I'd love to do something like that here, and I agree that it'll go some way towards redressing the balance. I'd love to see all kids in all schools being given that kind of experience as part of the regular curriculum.
No more than TFA was advocating "One C64 Per Child" :-)
All joking aside, I think the advent of very accessible, low-cost SBCs, coupled with languages like Python, is a Good Thing. Our local hackerspace, Splatspace, also helped sponsor the Teen Tech Camp event, and we do a lot of stuff that's geared towards working with kids (teaching Scratch, doing "Squishy Circuits" demos, helping with "math and science night" at a local school, etc), and I'd like to see us do even more of that sort of thing.
One of my biggest regrets right now is that I'm so damn busy with Fogbeam Labs, that I don't have as much time as I'd like, to personally teach some classes and what-not. But I keep telling myself that things will stabilize eventually, and I'll be able to do more of that stuff...
Well, it sounds like you've been doing a great job. I guess the challenge is figuring out how to scale what you've been doing to allow other volunteers to replicate your success!
Turn on any modern PC/device. Then look at the hoops you have to jump through to run the equivalent of:
10 print "my sibling smells"
20 goto 10
Computers of that era booted up straight into BASIC and you could easily enter the above. It was obvious to anyone watching exactly what was going on and they could have a try.
You can conceptually do the same thing now, but have to jump through hoops first. Download the right dev environment, work out how to start an editor, work out what code to write, work out how to run it and finally see the results. Devices are very personal now, so no one is likely to watch you do this, and trying to mimic it is far harder than turning your own device on.
Hopefully we'll end up with single function devices that can do this. The RPi is a good step in that direction, but still requires a lot to get going (look at all the cables and other bits and pieces you have to connect first.)
One device with such a low barrier to getting started programming that kids still have access to is TI graphing calculators - I got into programming through my TI-84 back in middle school, writing quadratic equation solvers and the like , and eventually playing with graphics and simple games. I certainly wouldn't recommend that anyone specifically choose the calculator as a starting platform, but it's a great way to accidentally discover programming. And it was a great way to kill time at school for several years...
I think the hoops for doing this sort of thing are greatly exaggerated. Windows has had a scripting language built into it for years in the form of Powershell. OS X has a variety of other tools: Python, Ruby, Perl, etc. And then you have the web, which has a huge number of repls for various languages. Like repl.it which has Forth, Python, Lua, Scheme, Javascript and others.
Basically, I think that the reason people don't program as much as some would like has nothing to do with access to programming environments.
I think the author's point about how computers used to come with programming manuals is a good one. The spirit is different. The computer environments now are, in my opinion, better for learning programming. More languages are installed by default or easily available and the Internet is much better for learning than the books I remember using. But this kind of assumption that people would be buying a computer in order to mess around with Basic or Hypercard no longer seems to be the rule.
I was actually kind of impressed with the Sugar environment when I tried it out with my nephews. They spent a lot more time experimenting with the thing than I even expected. Something was different about that system. It encouraged exploration in a way that their normal YouTube and video game habits didn't. Maybe it was just the nature of the applications.
I'm a pythonista myself. The instructions to someone wanting to do Python are:
- find out what platform they are using (Unix, Windows, Mac, iDevice, Android etc)
- Ensure Python gets installed or is accessible (add in version 2 versus 3, 32 bit versus 64 bit)
- Work out what the text editor or "IDE" will be
- Enter the code (no gotos in Python)
- Run the code and view the output
While these hoops are nothing for you or me, they are significant for others. Note how people report A/B testing showing that extra steps towards various goals results in big dropoffs.
Incidentally this is what repl.it does with QBasic:
> 10 print "hello"
Parse failed: Syntax error at 1:10: Token("hello")
> help
=> 0
I understand your point, but I think it comes down to self-discovery. Using the C=64 (and other home computers of the era) enabled you to discover that programming existed as a thing, and then to learn more by digging deeper. Modern computers are much, much better at the digging deeper side of the equation, but completely fail on creating the initial spark of interest.
In my experience, if you can create that initial spark with your kids (as I did with my daughter, just by showing her the C=64 programming book I had as a kid), then they _will_ want to know more.
So how about this: embed an RPi into a kids keyboard, and have it boot straight into a Python interpreter with libraries loaded so you can immediately start writing programs that draw stuff on screen and play sounds. Encourage tech-minded parents to run labs at their local schools that use these devices, and encourage local IT companies / universities / government to subsidise the cost of providing every student with one.
The OLPC was sort of an earlier version of that. I'm all for solutions that have that kind of ease of use - no hoops or hurdles from pressing the power button, through being able to do something immediate that you can show off to others.
I got a tiny little bit of that old C64 feeling showing my daughter how to cheat at Cookie Clicker (a browser game) yesterday. It's got nice and clean Javascript source code with comments, and all you need is a console prompt.
This is a subject that is very dear to me, so I will try not to rant about it.
There are a couple of things "wrong" with the way we teach kids computers today.
Our educators are in the hands of the masters of consumers. When a new technology comes out, we all abandon the current stuff, and engage in the upgrade cycle. Repeat until generations have no clue any more about what the old ways were.
This is an absolute falsehood pushed upon society by those who wish to control the consumer base. It is consumption destroying education, plain and simple.
The point is this: Every C64 that was ever produced - heck, every 8-bit computer, ever - STILL WORKS, or can be MADE TO WORK in the area of computer education.
It is absolutely arbitrary that computers get old. Every machine that was ever made, is still just as useful as it ever was - the difference is, the user walked away (because they are consumers not users).
I have a large collection of 'antique' computers in my midst: C64, Atari, Oric, Atmos, Telestrat, MSX, heck .. even a BeBox and an SGI O2. All are still working, all are still quite capable of engaging a young mind in the exercise of exploration and discovery that makes a good developer.
And, my 3 year old and 6 year old kids LOVE THEM. They absolutely LOVE the old sprites, the old simple ways. The 6-year old takes immense joy out of typing:
.. into an old Oric Atmos thats been set up exclusively for him to be able to do that .. in fact the very first writing he was able to do was in typing in a BASIC PROGRAM!!
The 3 year old absolutely loves that he can turn the machine off and on, and off and on, and off and on .. and it will still work. Can't do that with Daddy's workstation!
So the point is, parents: disconnect your kids from the consumer trap. Give them old computers to learn computing on. Everything they will ever learn, WILL STILL BE VALUABLE TODAY when they 'grow up and get a bigger computer' - the reason is, because computers still work, fundamentally, the same way.
I predict my 6 year old will be hacking in assembly by the time he is 10 - just like his Dad did. And thats what made me the developer I am today.
(BTW: yes, I also have rPi's, Beagleboards, and so on.. when they're ready, they'll be available to the kids to hack on. But if the kids can't do their own low-level programming by the time they get the rPi dusted off, I will be very surprised..)
EDIT: Another thing that is 'wrong' with computers today, imho, is the decoupling of development from use. Again, our computers have been turned into consumption platforms - the moment that Microsoft removed the developer tools from being part of the base OS image, computers started to lose a lot of value. Any OS that doesn't ship with a way of building apps for it, inherently included by design, isn't an Operating System - its a Consumer Capture System.
Do everything you can to get development tools back into the OS, people. It is more important than the desire to reduce the effect of having 'too many smart developers out there'..
The problem isn't a lack of devices with the bare bones showing, where tinkering will produce results to be learned. The problem is that some things, like iPhone apps, are so much more polished than anything the average 12-year-old can produce that anything they make is discouraging by comparison.
How many teenagers would it take to produce Candy Crush, a highly-polished game made by a team of teams -- art team, multiple app coding teams, database team, facebook integration teams, financial team, and management team. Man-years of effort went into making that game.
Now be 12. Be a gamer. Be a kid who's choosing between struggling to make HTML5 Canvas work on a webpage, and playing games with friends.
Absolutely. Here in the UK, we had an astonishing programming renaissance in the 1980s, fuelled largely by the Sinclair micros. They were pretty awful computers by most measures, but they were also very cheap, so they sold in their millions.
A talented teenager could spend a few weeks writing a game and realistically hope to see it commercially published. Even the most ambitious games took no more than a few man-months. Several major UK games studios were founded by people in their teens and early twenties during this period, most famously Codemasters. Nobody really knew what they were doing and games were something of a cottage industry, so there were no real barriers to entry. There was a distinct punk sensibility, with weird and irreverent games being published on cheaply-duplicated cassettes.
The British programming boom also benefited from a variety of other factors - the BBC taking a major interest in promoting microcomputers, a very supportive government and an exchange rate that made Japanese consoles punitively expensive.
Since when do 12 year olds compare themselves against highly polished products put out by companies with hundreds of employees?
When I was 12 I wasn't trying to build Seven Cities Of Gold, I was happy just to have a little blinking sprite move across the screen.
Nowadays you can fire up a browser and scratchpad and have a hello world alert box pop up in five seconds. And there are arduinos, and raspberry pi's, and crazy cool robotics kits. There's still plenty out there to motivate kids who are interested in tinkering.
When I was 9, my parents got a 286 that had a Qbasic interpreter among other things, and it came with a game where a gorilla throws a barrel at buildings. When I read the code, I was startled to learn how easy it was to understand - multiply this by that, draw these here if this happens, etc. Then I tried to write my own programs and kept getting errors. And nobody anywhere -- not my parents, nor schoolmates or teachers, faculty, clergy, or TV characters had any kind of problem like that. The lack of support was ultimately what discouraged me, I suppose.
And today's 9 year old can now hop in the internet and learn everything there is to know about programming. Ditto for making electronic music, robotics... I am so jealous of the opportunities kids have now.
Back in the Olde Dayes, if you weren't geographically close to a mentor, you were pooched. I had to chip away at all my knowledge bit by bit. My only consolation is that I learned the Hard Way, so I feel I have a more fundamental understanding and appreciation of the subject matter.
Going on the internet to fill out those old topics though... all the little pieces suddenly combine, the blockages removed... it all suddenly becomes clear, it's like having an extra sense or gaining 100 IQ points.
The main difference between then and now is that back then you stumbled upon it, and now you need to make a concerted effort to find out where to start.
Yeah I guess our popular end user products are much more polished now and don't force you to get your hands dirty. I remember you couldn't even start a game without typing some cryptic code into the computer. So that extra push isn't there anymore and you can easily use all of this technology without ever learning anything. On the other hand, I think we now have much more information available and easily accessible for those who do choose to get involved.
Completely agree, and I think the problem I'm trying to solve is making sure every kid has the chance to find out whether they want to know more by showing them at a young age that it's actually an option that's open to them.
Agreed. I got access to a C64 when I was in primary school, and was absolutely wrapped in creating my own text-based adventure games, and extremely simple sprite-engine games. I also played Archon and Ghost & Goblins, but I wasn't put out that I couldn't create them.
It's true that modern games and apps set the bar high. But the stuff I produced on the C=64 when I was 14 was equally as basic when compared with the games of the time. It's not about making something as polished as what you can buy, it's about becoming fascinated with how something works, and learning about things at a deeper level through self-discovery.
The stories kids write and the pictures kids draw are primitive when compared to what they could buy, but they still like to spend time making them!
I am not an iOS developer, but my friends' two 11-year-olds have produced a few apps, without any formal training. Not polished, but they work. I don't have any other evidence that these two are extraordinary geniuses.
My impression is that iOS developer tools (and modern high-level tools generally) provide beginning developers with a much quicker path to producing highly visual applications than I had as beginning C programmer decades ago.
More visual feedback == more fun == more motivation to continue.
It's about That Feeling. I got That Feeling from the Atari 800 and Apple IIgs, you got it from your C64, I sometimes manage to find it still, with the help of liquor and a Lisp interpreter (but not at all from the line-of-business apps that make my living now). Without That Feeling, you're not going to go past a certain level in software development, no matter how many dry facts you learn. How do kids get That Feeling today? It sure isn't from iOS devices.
I'm kinda' researching this question for my MSc e-Learning technology, so I've got a lot to say on the matter, but I'll try and keep this brief.
We need the CompSci equivalent of Meccano sets for kids to tinker with. Something that's easy to just pick up and start playing with, gives instant feedback, and equips them with the skills to go and play with bigger and better toys.
The guys at Khan Academy understand this well, and they've built something pretty slick. <https://www.khanacademy.org/cs/browse-programs> I guess you could describe it as a cross between processing.js and JSFiddle, with a showcase for interesting new projects.
From my limited interactions with the system, I'd say it's already pretty good, but to be great they need to figure out how to make peer-teaching work better. Also, I think they would benefit from an even more accessible "just pick it up and play with it mode", rather than insisting that the kids sit through tutorial videos before they can do anything.
I remembered my first 'programming' experience. Went to the library and pour through the BASIC books, found an 'I spy' game that only had like 12-15 lines of code.
Went to my friend's C64, typed everything out and then sat looking at the screen after typing 'Enter' for the last statement.
Nothing happened obviously. That damn book didn't teach u about compiling, running and I am not even sure that book was about programming for C64 or what not.
One of my earliest programming gaffs was on a C64, typing in some code from a magazine, which didn't work.
When my dad got back from work, I showed him what I'd painstakingly typed in over the course of what seemed like hours to an 8 year old, and that's when I learned what pseudocode was. >_<
It's totally true. In the 1980s we as kids had to learn a more complete mental model of what was happening inside the computer, just in order to operate it, even without necessarily programming it (although we did that too). Starting in the late 1990s computers became more like appliances. Nowadays university students haven't a clue what's happening behind the fancy interface.
I'm not saying appliance-like functionality isn't a good thing ... for the masses it undoubtedly is.
But as the OP's article points out quite nicely, it's not conducive to lighting a fire inside a young mind.
I remember going to the back of computer magazines and transcribing pages upon pages of BASIC code corresponding to various games ... (on an Apple II) ... those were definitely the days.
Back in the C64 days everything was absolutely fresh. Everything was exciting. No one was an "expert". Everyone was just really enjoying experimenting. THAT'S why it was exciting. It was undiscovered country. To kids, it's boring now. There's nothing to discover. Deep down, kids want adventure. It seems computer science is being relegated to the same box mathematics is stored in.
Wow, it's like you're digging around in my memories (watch where you step!). I remember talking my mom into buying me the C=64 Programmer's Reference Guide... it changed my life.
Would be interested in discussing feedback on this post; I'm about to enter a Startup Weekend, and would love to do something that could address this problem.
I completely agree, have felt the same, and lamented this to a friend just days ago. It's great to know that there are others out there. For me, my exposure was via an IBM PS/2, LOGO, and GW/QBASIC, but the effect was the same.
Arduino and other development boards are getting cheap enough that they should be part of school computer science curriculums. In lieu teaching Basic et al. (which is still the standard for BASIC microcontrollers from Parallax) they could instead be persuaded to learn C/C++.
Like Legos or Erector sets, kids are more fascinated with toys they can build with rather than play passively (which they get bored of quickly). Replace "toy" with "exploration venue" and you have a whole new world of possibilities.
Most people who own cars have little interest in how they work under the hood. Same is true for computers today. It's not just true for machines but all parts of life. I know several adults who hardly ever cook, despite that fact that they've been eating meals cooked by other all their lives. Using something doesn't necessarily mean you'll want to learn how to create it yourself.
That's true, with the exception that learning how to write a program is also a lesson in how to think logically. Rather than teaching everyone to be programmers, the goal could be to use programming as a tool to teach everyone how to think.
Awesome article. Parents 'in the know' seem to have to educate the children themselves instead of relying on the school system (the australian insights of the author apply in Germany, too).
Out of the same notion I am doing a series of video tutorials on how to create browser games for my 14 year old girl and her classmates.
It's also in english so as a side effect they get into that as well.
The comment about 10% of CS graduates in Australia being female rings true and I think it's a highball. I'm typing this as I sit in a systems programming lecture at UQ and the attendance is hardly 5% female.
Of course that's a sample size of 1 but it's still worrying.
really interesting. im a couple years younger than op ..had an atari 400 - with the basic book:) .most of my friends had c64s.
i didnt't even seek a career in sw dev. ..but ended up here anyway. i think much of the reason is those days punching in basic, moving on the BBSs, fidonet ...getting into C, sockets and win32 and yada yada yada holy crap i fly a desk for living! originally wanted to be a pilot ...now i can afford to learn to fly but dont have time ..back to messing with that irc bot web wrangler thing im hacking for the fun of it.
I went to university in 2007 (born in 88), but I grew up with a Commadore 64. I guess being brought up by a relatively poor single mum has its advantages
http://durhamcountylibrary.org/2013/06/teen-tech-camp-2013/
http://exitevent.com/teen-tech-camp-hosts-future-developers-...
http://www.slj.com/2013/08/technology/powerful-partnerships-...
Kids learned to program in Python, on a Raspberry Pi, and each of them left at the end of the day with their Pi, and accompanying monitor, mouse, keyboard, etc. Some of these kids were underprivileged kids who had no computer access before, so the event was a pretty big deal for some of these kids. From what I heard, a few parents teared up at the end when they found out their kids got to take all their stuff home with them.
More programs of this nature, and more access to Arduino, rPi and the like, is one of the things I hang my hope for the future generations on.
Aside: I'm proud to say that our other co-founder here at Fogbeam Labs, snkahn, was one of the co-conspirators who helped pull that together.