Ask HN: 12 year old tech savvy girl – books, programs, events, advice?

81 points by forkandwait ↗ HN
Hi HNers,

A friend of mine's daughter is interested in tech, 12 years old, a little shy (if that matters), good grades, and a good circle of friends. Her mom wants to foster growth and confidence and all that good stuff. She has been to two two-week camps, one a co-ed disaster, one a girl only success. Anybody got any advice?

Thanks!

90 comments

[ 3.1 ms ] story [ 166 ms ] thread
Stay simple and buy her a POSIX-compliant C programming book.

She'll have a server running in no time.

:)

Start with Programming in C or C A Modern Approach (although the latter is expensive even second hand) and learn some basic Linux.

Then K&R just because everyone should read it.

Grab C in a Nutshell, Understanding and Using C Pointers and C A Reference Manual for reference.

Then get the Linux Programming Interface book.

Okay maybe a bit overkill for a 12 year old...

She should get her own computer if she doesn't have one already. How about a Raspberry Pi or two?
Or just a pre-owned system from Gumtree. You can pick up a solid ThinkPad with an i5 under £100 easy. I like ThinkPads as they are solidly built and can usually always run Linux without much hassle.
Give her a linux install disk and maybe a few pointers on how to use it as well as a copy of K&R C. I was about her age when I started!
Baby steps. Install Arch Linux. /s
I volunteered to teach 12 year kids on programming. I found out that teaching through Arduino was the best method. The love seeing their product becoming alive.

I would suggest starting with particle photon and do some mini projects.

when i was 12 i spent several hours a day reading RFCs, man pages, and HOWTOs.
Find the thing that excites her and encourage it. Whether that's game programming (clone Mario), web programming (clone Twitter), algorithms (implement sorting, path finding, etc), controlling Karel the Robot[0], or something else.

0. https://en.m.wikipedia.org/wiki/Guido_van_Robot

With girls, its all about giving them confidence. The rest I would say is normal stuff you do to encourage curiosity and learning for children.
I agree. When I was 12 year olds, boys were excited about Arduino. They were playing with the LEDs and wires, where as the girls said they didn't want to play with it because it looked "ugly". With the help of friends, we decided to help the girls design and do 3D printing. Then they got excited and slowly started to learn.
A friend of mine has a daughter who really enjoys http://girlsmakegames.com/

http://makezine.com/ and the http://makerfaire.com/ have done a great job with a community that encourages kids with a variety of interests.

http://www.meetup.com/ is great for finding people in your area who want to geek out together over something in common.

I don't have great book recommendations other than https://www.amazon.com/Manga-Guide-Databases-Mana-Takahashi/... Read the customer reviews. I'm a greybeard and I enjoyed it and lend it out to my friends. The publishers https://www.nostarch.com/ have lots of similar books.

Just showed Girls Make Games to my 14 year old daughter and all she said was how condescending...
Trying to think how to correct your typo without appearing condescending ;)
Everything re girls in technology is condescending.
I've taught many children, and the biggest motivation for them was tangible success. Project based learning combined with a good teacher will do absolute wonders. Eventually, she can show off her projects ( for example, a M & M color sorter) to her friends. Maybe her friends are interested too and that will give them a little encouragement to pursue their interests as well! Let me know if you have any other questions.
I have two questions for you.

How would you approach that for teens? Do you have any specific advice? I'm having trouble helping them find things to continuously motivate them to keep learning.

If one of my friends at age 12 had showed me an M & M color sorter I would have considered them god.

Your advice is good.

Might be best to focus on "tech" that your friend's daughter is already interested in. Tech is too all-encompassing a term without providing additional qualifiers.

For example, if she is interested in how apps work, start with some iOS tutorials and demonstrating a simulator. Or perhaps she has questions about how websites are made, in which case demonstrate some HTML and CSS. Maybe "tech" means a hardware focus, in which case start with the Raspberry Pi or Arduino kits.

In general, the advice would be to dig deeper into what type of technology she's interested in and go from there. Her mom may have classified "tech" as "taking things apart and putting them back together again", which may indicate a more mechanically oriented (and not necessarily electronic/computer) mindset.

I agree with many of the sibling comments that project-based learning approaches especially for hobbies are generally highly successful with inquisitive children and young adults.

I'm not specifically qualified in any way to say what's best to get a kid started on computer science/programming is but I believe it's nice to let them take the path how things evolved naturally. If this is too much, (regarding programming) maybe start with C.

I also believe it's good to read CS history. Following article is a personal favorite. http://www.defmacro.org/ramblings/fp.html

I think Python or any scripting language is better to ease someone into CS especially at that age. It is rewarding and helps to see "Hello world!" on the screen immediately in a line of code as opposed to wrangling with IDES and cryptic messages for missing semicolons.
From experience hello world is actually a terrible first thing to show someone in a scripting language since it is pretty much a dead end. Seeing "Hello world!" is not really that rewarding when compared with something like

    a = 3 + 2
    print a
Maybe if it's the only thing you show someone but most tutorials will start with hello world! and then progress to variables, string interpolation, expressions through a sequence of:

1. Try changing the statement print your name.

2. Having to type the same thing over and over is unnecessary, we can save it in a variable.

3. You can use variables inside the print statement through a process called string interpolation.

4. In addition to strings, variables can hold many types of values, including numbers.

5. Operators can be used to manipulate values. Do some math with the variables.

6. Receive input and save in variable.

From there you can go to conditional statements, loops and functions.

Yeah that is a very straight-forward sequence, however some people just seem to be more comfortable with numbers. Either approach could be taken as long as it is mapped out like you did above.
* Local Hackerspace is often a great opportunity to meet people, get resources and stuff™.

* Offer her some literature on the general topic of programming, theoretical and/or philosophical books.

* Women-focused events/communities (Lambda ladies, and many others) that will allow her to meet potential _female_ role models, which is very important.

I may forget some stuff.

I have a niece; her mom tried hard to get her interested in piano but made no progress. At the farm one Xmas, I was upstairs practicing the Bach 'Chaconne' on violin. The niece came up and watched. I put my violin under her left chin, showed her how to hold the bow, and she made a sound.

The next day her father asked me, "How much is a violin going to cost me?".

Lesson: Children can get more interested in activities they see adults interested in and liking.

The difference: The girl's mother didn't like piano enough to play it. I really like violin and was working hard playing and practicing it. The Bach 'Chaconne' is not a trivial piece of music, and it's possible to get really involved in it, which I did. Those are all big points.

So, for a girl and computing, first, interrupt some of your hard work at you computer, sit her down next to you, and show her how to do some things. E.g., show her how to type "Hello World" into some word processing program and print it. Show her how to use a Web browser and e-mail. See what else she is interested in, and help her with that.

Eventually get her father to buy her a computer. I suggest a desktop computer in a mid-tower case, with your help, she can assemble herself. Likely install both Windows and Linux.

Get her started on programming, say, in some interpretive language, maybe Python.

Get her a project she would like to do, maybe build her own Web site and use her computer as a Web server.

Get her well into word processing so that she can do better with school term papers and, more generally, practice her writing.

Learning to read in some data, analyze it, and plot it stands to be good for her when she gets into high school math and science.

I have a special suggestion: Get her a really good editor, one with a good macro language. I use KEdit. Except for Web browsing, I by far my most heavily used program is that text editor; I use it for a huge range of things. Good skills with a good text editor are darned good to have.

Take it from there, and, say, report back on what did/didn't work!

Our son is 12 also, and I've been introducing him to programming over the last year, in phases:

1. We installed Scratch, and let him learn that.

2. After he got good at Scratch, I installed Love2d and helped him write a few really tiny games in Lua.

3. Last Christmas we bought him the book "Sam's Teach Yourself Minecraft Modding in 24 hours" by which he slowly learned the basics of Java.

4. This weekend he borrowed a 9-books-in-1 book for Java which he's using to port his Pong game from Lua to Java in, using a custom JComponent.

That's the order that's working for him. He's well on his way to being able to write things like 2048. Not there yet, but soon.

Are you afraid that learning Java is going to kill any passion for programming? If you're only requirement is fun and learning, it seems like Java is not the best choice.
(comment deleted)
raywenderlich.com if she into mobile. thorough tutorials for absolute beginners with quick outcomes. That will help her create games to showoff/play with her friends. Speaking from experience.
No Starch has some great books for geeky kids/teens in their catalogue: https://www.nostarch.com/catalog/kids -- fun ways to learn programming Python, JavaScript, Ruby and/or Swift, programming theory, electronics and the like. Could especially be fun if she has some friends with the same interests :)
Female role models will help. So, biographies and this: http://sheroesproject.com/

You might also look for resources on the social and emotional needs of gifted. Lots of bright kids wind up "shy." Having spent a bit of time involved in the gifted community and raised two bright kids, I think this is not mere coincidence and some of it is driven by the negative social fallout that tends to come with the territory when people at school figure out you are "smart."

Specific role models that may be relevant: jeri Ellsworth, grace hopper, Hilary mason, Jessica Evans, Kira radinsky, Joanna rutkowska, Limor Fried (LadyAda). Just a random list off the top of my head.

* edit: added LadyAda

I read Amelia Earheart's bio when I was in sixth grade. It doesn't necessarily have to be women in tech per se, but it helps to be a woman not in the entertainment industry. Most of our wealthy, "successful" female role models are actresses and singers. Sex appeal is a large part of their career and how they make their money. This is very problematic if you want a business career. Looking sexy at work causes all kinds of problems in more conservative environments. I think a lot about the fact that women have basically two models for how to look successful: Pretty women who are often wives or entertainers where highlighting their femininity or sexuality is a big part of it, or trying to dress like a man. In America at least, we don't have a lot of good role models for what successful women in business or government look like.

I think about this a lot and I think this is a big source of problems for women trying to figure out how to make it in business (or government or something other than as entertainers or someone's wife).

Thanks for contributing your list.

What no Limor Fried?
(comment deleted)
(comment deleted)
I though kids how to program and the one we would start everybody out on (unless they already had a lot of experience) was https://scratch.mit.edu/ It is basically programming, with out all the boring typing. You can go from zero to making a cat make a sound, in a loop (fully guaranteed to make any adult hate you) in a couple minutes and it scales all the way up to making Mario (https://scratch.mit.edu/projects/49905542/), but way more discoverable than any "real" language. By the time you can make Mario, you can program for real.

It includes ways to show of what she has made to her friends, but it is not directly social (unless you are sitting more than one person at a computer, which can totally work).

I'm a big fan of Processing or p5.js for teaching kids that age how to write code. The immediate visual feedback from a line or two of code creates a positive feedback loop that encourages learning. Shiffman's book Learning Processing is a great gentle introduction: https://www.amazon.com/Learning-Processing-Second-Programmin...

His Nature of Code work -- simulating nature through code -- also is really interesting but requires a little background in coding.

Scratch from MIT is worth taking a look at. Really good fun and we use it in UK schools to teach the kids programming.

There is also Kodu from Microsoft (google it and take a look at the images and video) Kodu is ACE I love love love it. But it may be a little advanced for her.

And roll play games, D&D is tricky for most kids, but there is Hero Kids and Dungeon World (try some of the one shots) these are super geeky and fun and nerdy and min/max characters teach you a lot.

12 year olds should be outside playing, not coding.
Are you telling me reading technical documentation isn't enjoyable?!
(comment deleted)
12 year olds can easily do both. (I certainly did.)
If that is true why do we send them to school for 8 hours a day then give them 2 hours of homework to do in the evening? Oh right because kids also need to learn. If this kid enjoys tech then what is wrong with her learning something she enjoys?
I know that Team Treehouse (https://teamtreehouse.com/) has a student discount that reduces the cost from $25/month to $9.

I think this would be a good option because the courses cover a wide range of topics so she can explore computing/internet basics, different programming languages and other digital tools (Photoshop/Illustrator) before really committing to one technology.

Treehouse also has specific tracks for app, game and web development which provide a structured path to learning the technology which can be good for beginners that might otherwise be overwhelmed.

Safari Books/O'Reilly provides free access to all O'Reilly books and videos for K-12 students. The Head First series books are particularly good for beginners.

https://schools.safaribooksonline.com/

Saying "tech" isn't much information. What do they want to do?

If it's electronics, buy some starter kits, a good iron, and get them a book on electronics. (Maybe also show them some people like EEVBlog)

If it's computer science, but some computers, get them an internet connection and let them have at it.

Although I always say this: no one will learn unless they have a project they need to do. This is no matter the field. If you're not interested you're not going to learn in the first place.

+1 on eevblog. I started watching when I barely learned basic physics E&M and calculus, and now I'm confident that I can tackle all sorts of electronics all thanks to him.

Though I was a highschooler back then and I had so much free time and watched 600+ videos in about 6 months, so not for everyone imo.

I'm in college so I'm using it to break from CS to EE. Far better then taking our schools EE classes since I can do it at my own pace and I learn things from someone who is currently practicing in the field (who seems to be quite good at it).
In high school, I learned top down--projects first, math second. Now in school doing EE, I do bottom up--math first, projects second. I think having that top down experience in high school was tremendously helpful because I have experience in the entire full stack -- transistors to Javascript.