Ask HN: My 8-year old nephew finally wants to be a hacker. How should he start?

10 points by runesoerensen ↗ HN
For years I've been hoping that my nephew would eventually want to become a hacker. I strongly believe that he can do whatever he puts his mind to - he's really smart and have the necessary curiosity and persistence, but also some more difficult-to-define ways of thinking and personality traits (despite his young age) that I recognize mostly from the best hackers I've met. The Force is strong with this one.

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 ] thread
You're the uncle I hope to be to my 2 year old niece when she gets older. Good onya!

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

Good idea, playing with hardware seems like fun. Thanks!
Hey @runesoerensen! We are going to be at the Creativity Museum in SF during the month of October, so tell him to keep his eye out and come by to play with the bots while we are there!

-June

(Play-i)

I don't think he'll be in the Bay Area by then, but I'll make sure to tell him about Play-i. I might show up and play with the bots though :)
Not sure if this is up his alley or not, but you might look at Scratch:

http://scratch.mit.edu/

I think it is. One of the games he talked about is indeed very heavy on story and animation.
It is premature optimization to push him too much one way such as into app development. It sounds like you just have an inquisitive 8-year-old so help him learn and grow. He might end up being an amazing bio-physicist, so I like the idea of exposure a lot more than setting him specifically into only programming.

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

No, definitely do that one! I did as a young'n by brushing 9V contacts against the steel wool and had fun times with negligible burns.
I've never wanted to push him in any particular direction - or push him at all for that matter. That's also why I'm excited he asked about it himself: Becoming a hacker is (and should be) a choice.

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

I think you should teach him to write HTML documents and then move onto JavaScript (including node.js) if he's ready.

Maybe a bit of C++ in a few years.

A raspberry pi is a great way to get into hacking. Lots of great guides are online and oriented for younger kids.
I haven't delved into it, but I hear you can learn quite a bit of programming from Minecraft. And even if nothing else comes of it he gets to play a game his peers are playing and can talk to them about it.
This seems to be true - he's already playing it a lot and has referenced it several times when we've talked about how to build stuff (outside of Minecraft).
In my opinion you should not use apps as a teaching medium. Apps are not that cool in the end and while some hackers might build apps, building apps for sure doesn't help you become a hacker in any way. Hence, my recommendation:

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.

I've been hacking since I was 10, and I started off with Scratch <scratch.mit.edu>. It's visual programming, and it has a remarkable zero-to-sixty time. I've run a couple of Scratch events, and I've had kids come in cold (no coding experience at all) and code pong in 2 hours flat.

And Scratch has a great community.

I'd take your question in good faith, but the phrasing of the title seems somewhat suspicious. "Finally". Did he do this himself, or have you given him subtle signals?

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.

I see what you mean and I agree that parents sometimes end up pushing their kids too far. I'm not his parent and I've not tried to make him do something he doesn't want, but I'm excited that he's excited because I recognize his potential - hence the "finally". I might've had some small influence on this interest, in the same way my older siblings have influenced me by doing what they do, but what's really wrong about that? It seems a lot better to influence somebody in a direction that can be immensely productive and rewarding than, say, negatively influencing somebody by being a cracked-up rockstar. Positively influencing and affecting each other is a feature, not a bug, of good families.

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.

I think pushing him to be a hacker will turn him away from it as everything your parents/relatives tell you to do.
When I was eight years old, I self-learned HTML and CSS, which eventually lead to learning JavaScript, then Java. Currently, I volunteer at CoderDojo[1] (Silicon Valley chapter[2]), an organization that teaches kids to code at free sessions. If there's a chapter near you, I definitely recommend that you check them out.

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 started around age 10 on HTML and then programming after that.

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.