Ask HN: My 8-year old nephew finally wants to be a hacker. How should he start?
Today, while visiting SF with his family, he finally asked me for help to get started. He even told me that he wants to become the best computer geek in his class (I love that it's becoming cool to be a nerd, and wish it was like that when I was in third grade :)). Being 8 years old he's of course very interested in mobile apps and games, but I don't have much experience with either kids or building mobile apps/games. Still, I want to give him the best advice possible so I figured I'd ask you guys:
* How do you start coding and building apps when you're 8 years old?
* Are there tutorials/getting started guides that are particularly suitable for kids?
* Anything else he or his parents should know?
Ideally he'd be able to build something cool relatively quickly without understanding everything. He can always dive into the details when he know how things tie together at a high level, but it's probably important that the learning process is rewarding and fun all thew ay. At least that worked for me and now I get off over low-level stuff and algorithms on a daily basis.
I'm hoping for help and recommendations particularly from people who have (or just understand) kids, or have otherwise guided a young aspiring hacker onto the path of true awesomeness. Any advice is welcome though as I'm somehwat limited to vague talks about XCode, Swift and showing him what mobile OSs really look like (i.e. Android mascots at Google).
22 comments
[ 161 ms ] story [ 2793 ms ] threadI don't have kids myself and thus no direct experience to share, but my friends with kids in this situation seem to have the best luck with the hardware-based tools.
Two that come to mind:
https://www.play-i.com/
http://littlebits.cc/
I'm sure there are numerous others these days.
Good luck!
-June
(Play-i)
http://scratch.mit.edu/
Build K'Nex with him. Eat dehydrated ice cream with him and explain why it is often called "astronaut ice cream". Take him to children's museums where he can play with levers and such. Fly a drone with him. Heck, build and program a drone with him. Fix a bike together. Get a VCR for $5, hook it up to a TV but in pieces so he can see the parts move as the image comes on TV. Do the same thing with a DVD player right after that. Build model railroad together. Get ham radio certified. Visit whatever local planetarium / star gazing events are out there. Grab a multimeter and let him measure different things. Take two D batteries and connect them with a piece of steel wool and watch it light on fire. (Ok, maybe not that one...)
I mostly asked for mobile apps/games because that's what he is mostly interested in and asked about. It might not be the best way to start though. And you're right, hacking certainly isn't limited to coding, and he can learn from building all kinds of things. I wish I could do that, but we live 5500 miles apart and my time is pretty limited.
Luckily for him, his dad already does a good job at building stuff with him :-)
Maybe a bit of C++ in a few years.
Python, raspberry/arduino, legos, and a 3d printer maybe. For conceptually higher level programming: a turtle graphics framework like netlogo or pythonturtle.
Nothing beats being able to program things that interact directly with the physical environment, hence the hardware recommendations. The only reason why this teaching approach is not universal is that sometimes you might want to try things that require too much effort or resources to be done 'for real', like a robot fighting arena, for example. Turtle programming is nice because its syntax is agent-oriented. This way you express things like path finding, competitive behaviours (robots shooting lasers at each others, pew pew), and other things that are cool (not only for kids) in the most natural way.
Maybe your nephew won't be able to write bounchy interfaces, but if he can learn how program a robot to make it understand where it's located and how to outsmart other robots, he'll already have half a CS degree in his pocket even before going to university.
And Scratch has a great community.
A far more common story than any parent pushing their kid to accomplish anything is a parent burning their kid out so severely that they hate it for the rest of their lives. See forced piano practices etc etc. It's much easier to burn out a kid than the opposite. I'd be cautious.
Even if I had given him obvious signals I fail to see the problem. It's like suggesting a kid who's naturally comfortable around a football to try out soccer. Whether he likes it or not, trying it will be a net win: You've either helped him discover, or rule out, at least one out of an infinite number of things he might want to do in life. To your point, it becomes problematic when he tries it, doesn't like it and you insist/force him to continue, or otherwise make him feel bad - particularly if the motivation for doing so is anything but his own best interest.
Having said that (and going a bit further off topic) I also think that there are cases where you actually want to "force" kids to do things they're not immediately excited about. Think about how a big part of most educational systems work: Kids often don't like doing homework, but most continue to study for years out of their own free will. Many don't like math, but end up loving when they start to understand how it works, and giving it a fair chance is necessary to get to that point. Even if you don't like math you'll still benefit from and need to learn the basics because it's used everywhere. The same argument can (to a rapidly increasing extent) be made for coding.
Trying new things is a crucial part of developing as a person and learning what we like and don't like. It's also pretty much what being a child is all about (disclaimer: I don't know nearly enough about kids to claim that, but it seems reasonable to me :)). It's our responsibility as adults to help facilitate this learning process for the children close to us (and ourselves for that matter), and they will benefit from it as long as we're respectful about their choices.
For the programming/coding aspect of hacking, it's important to have something visual, like Scratch[3]. Web coding could also be a good starting point, starting with HTML/CSS and moving into JavaScript.
[1] http://coderdojo.com [2] http://coderdojosv.com [3] http://scratch.mit.edu/
I think starting with HTML is ideal as it's very simple, the web browsers are forgiving of syntax errors, and you can visually see results right away.
You can then naturally transition into learning programming to generate HTML.
And I think it's important for most of this to be self-guided with the help of books and such. The results will be much slower, but I think it will be more fun and educational.