
Ask HN: 12 year old tech savvy girl – books, programs, events, advice? - forkandwait
Hi HNers,<p>A friend of mine&#x27;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?<p>Thanks!
======
nrjames
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...](https://www.amazon.com/Learning-Processing-
Second-Programming-
Interaction/dp/0123944430/ref=sr_1_3?s=books&ie=UTF8&qid=1469470998&sr=1-3&keywords=nature+of+code)

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

~~~
nrjames
Shiffman also has a "Coding Rainbow" series on YouTube that is pretty great.
He has a good personality for goofy YouTube programming teacher.

[https://www.youtube.com/user/shiffman](https://www.youtube.com/user/shiffman)

~~~
absorber
His videos are so great! I'm watching his "Introduction - p5.js" video [0] and
I'm crying with laughter. His style of teaching is truly inspirational.

[0]
[https://youtu.be/8j0UDiN7my4?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9...](https://youtu.be/8j0UDiN7my4?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA)

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

~~~
kevindeasis
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.

------
noobermin
Everyone is different, but for me at 14 (a bit different from 12, I know, and
I'm male) all I needed was a compiler and tutorials online. But that was key,
the internet connection paid for by my parents, something not many people on
my island had access to, made all the difference in the world for me.

The best thing you can do is be available and provide access to knowledge,
don't funnel her into particular frameworks, languages, whatever. If she wants
to learn ASM, let her. If she wants js, let her. If she wants to learn
Photoshop, let her.

Parents are not supposed to direct play. They give kids toys and the kids find
their own way.

~~~
microcolonel
I second the "play" approach. My second programming experience was in assembly
at age ~10 and it has made a huge difference in my growth and now in my
career. Leave her alone with a compiler and an internet connection. :-)

~~~
paulryanrogers
My father did this as well. Though I didn't like QBasic. So instead I focused
on batch scripting--to get games running--then modding.

Key to modding seems to be start with a game they like.

------
more_corn
I'm of two minds about co-ed. It's really important to find a safe place to
learn and it can be hard to do that as a girl in a boy dominated field. She's
going to have to do it some day, but it's probably best to build up some
confidence in a safe environment. I'd spend some time finding girl only or
mixed successfully mixed groups and programs.

As for the technical side: Make's Getting Started with Raspberry Pi book is
one of the best introductions to computing I've ever seen. It starts at the
beginning, uses simple language, goes deep and provides hands-on experience.
[https://www.amazon.com/gp/product/1457186128/ref=oh_aui_sear...](https://www.amazon.com/gp/product/1457186128/ref=oh_aui_search_detailpage)

Get her that book and a Raspberry Pi, a nice case, encourage her, support her,
help her connect with like-minded peers and then stand back.
[https://www.amazon.com/gp/product/B00ME5XUAG/ref=oh_aui_sear...](https://www.amazon.com/gp/product/B00ME5XUAG/ref=oh_aui_search_detailpage)

------
corysama
A friend of mine has a daughter who really enjoys
[http://girlsmakegames.com/](http://girlsmakegames.com/)

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

[http://www.meetup.com/](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/...](https://www.amazon.com/Manga-Guide-Databases-Mana-
Takahashi/dp/1593271905) 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/](https://www.nostarch.com/) have lots of similar
books.

~~~
heisnotanalien
Just showed Girls Make Games to my 14 year old daughter and all she said was
how condescending...

~~~
jeszicawii
Everything re girls in technology is condescending.

------
edtechdev
Depends a lot on their interests and experience.

If she has little to no experience with coding, check out this as a start:
[http://code.org/](http://code.org/)

See the 'advanced' section of this handout for more coding resources for older
kids: [http://bit.ly/ortonacode](http://bit.ly/ortonacode)

On the hardware side, there are projects to make programmable jewelry,
clothing, and other wearables, in addition to the traditional robots, cars,
drones, etc. See the Adafruit site, for example:
[https://www.adafruit.com/category/65](https://www.adafruit.com/category/65)

I have a 12 year old son. He's been interested in the raspberry pi and we have
a PocketCHIP coming in the mail:
[https://getchip.com/pages/pocketchip](https://getchip.com/pages/pocketchip)
Install RetroPIE on a Raspberry Pi for a videogame emulator:
[https://retropie.org.uk/](https://retropie.org.uk/) Last year we did some
code.org and scratch stuff and learntomod used blocks coding to learn
minecraft modding.

What I would NOT recommend is starting straight up with traditional coding
that is not designed with beginners and kids in mind. Don't throw python,
java, C, etc. at them. Let them follow their interests: games, wearables,
etc., and learn coding in pursuit of that interest, not force them to learn
coding for coding's sake. I myself was interested in creating a webform 20
years ago for my student club, and in the process learned Perl for CGI
scripts. It was only years later that I learned how sucky Perl was and what a
bad choice it is for beginners ;)

~~~
noobermin
>What I would NOT recommend is starting straight up with traditional coding
that is not designed with beginners and kids in mind. Don't throw python,
java, C, etc. at them. Let them follow their interests: games, wearables,
etc., and learn coding in pursuit of that interest, not force them to learn
coding for coding's sake.

No, this isn't the best advice in my opinion. Don't decide for the kid what is
for them or what isn't. Let them decide that. Remember, Bill Gates coded at 13
in languages "meant for adults". I personally learned C at 14 from a tutorial
that came with a C++ IDE (I had no idea what programming was, I just
downloaded the program from the internet). Don't underestimate the
intelligence and ability of kids.

~~~
rahkiin
This. I learned assembly and C at 12. It can be done, because I wanted to.

~~~
qume
Me too.

I don't disagree with these warm and fuzzy environments for kids to learn, but
that existed when I was a kid - logo:
[https://en.wikipedia.org/wiki/Logo_(programming_language)](https://en.wikipedia.org/wiki/Logo_\(programming_language\))
\- and I thought it was a joke. It was demotivating and condescending rather
than encouraging.

I have a 18 month old, and I don't know the answer yet, but got to figure it
out soon...

------
milcron
She should get her own computer if she doesn't have one already. How about a
Raspberry Pi or two?

~~~
satysin
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.

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

~~~
iends
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.

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

------
asb
I'm horrifically biased (I'm getting married to the author in a few months :))
but Adventures in Raspberry Pi seems to get great feedback
[https://www.amazon.com/Adventures-Raspberry-Carrie-Anne-
Phil...](https://www.amazon.com/Adventures-Raspberry-Carrie-Anne-
Philbin/dp/1119046025/) as well as Carrie Anne's Geek Gurl Diaries
[https://www.youtube.com/user/GeekGurlDiaries](https://www.youtube.com/user/GeekGurlDiaries)

~~~
Intermernet
Hope you have a great wedding!

I've heard that "Adventures in Raspberry Pi" is awesome, but I'd also maybe
throw in some additional R-Pi based hackery (for music
[http://www.instructables.com/id/PiMiDi-A-Raspberry-Pi-
Midi-B...](http://www.instructables.com/id/PiMiDi-A-Raspberry-Pi-Midi-Box-or-
How-I-Learned-to/) is pretty cool, but it all depends on what she's into!)

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

~~~
boniface316
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.

------
tomjen3
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/](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/](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).

------
cheshire137
My "gateway drug" for getting into programming was web design. I could make
this pretty, artsy website where I could share my photos, drawings, etc.

I also was big into fan fiction when I started using the internet in my youth,
so it was fun for me to make a website for housing my fan fiction and that of
others. The fanfic website eventually got unwieldy to style each story's page
separately, so my dad pointed me at PHP: I could use `include` tags to include
the same header and footer on every page. Voila, I was programming! Then came
MySQL so I could offer filtering options for pairing, rating, characters
involved, etc.

So if your friend's daughter is into creative stuff outside of technology, you
might have traction encouraging her to combine the two.

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

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

------
Mz
Female role models will help. So, biographies and this:
[http://sheroesproject.com/](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."

~~~
beagle3
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

~~~
Mz
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.

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

~~~
hatsunearu
+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.

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

~~~
hatsunearu
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.

------
mindcrash
No Starch has some great books for geeky kids/teens in their catalogue:
[https://www.nostarch.com/catalog/kids](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 :)

------
theknarf
I myself started to program at the age of 11. At that time my father bought a
book and learned a little Visual Basic, he then got introduced it to me and I
was hooked. After that I borrowed an old book he had on HTML/CSS (creating
webpages) and after that I started picking up books in the library.

I think that you should try to let her learn to create webpages with HTML &
CSS, and then later she could try to learn JavaScript. It's an relatively easy
place to start, and you're learning real world skills. I tend to disagree with
people who want children to learn "Python Scratch" or other toys that you'll
never get any use for.

Theres a lot of resources online (ex.
[http://www.w3schools.com/html/default.asp](http://www.w3schools.com/html/default.asp)),
and on YouTube. But I will always recommend to start with a good book, the
"For Dummies" series is usually very good (ex. "Beginning HTML5 and CSS3 For
Dummies").

------
draker
I know that Team Treehouse
([https://teamtreehouse.com/](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/](https://schools.safaribooksonline.com/)

------
a-saleh
As a father of a two year old daughter, I think I will be trying to figure
this out few years down the line :-)

I remember fondly attending a coding course when I was around ~10. It was
early 2000, so we used Visual Basic for Applications embedded in Office 97 :-)
5 to 10 kids + teacher. We were writing silly text adventures, and poem
generators and then moved onto writing simple games.

Interesting development later on was, that girls in my group pushed for more
and more math (I remember proving irrationality of sqrt(2) was a big topic)
while boys were interested more in the coding, especially if the output was
something visual.

So, remember that tech might be physics or math as well, at least where I come
from there were many extra curricular activities I could choose from in this
area :-)

------
niftich
I'm surprised that only a handful comments mention encouraging game modding.

Modding is advantageous because the feedback is often immediate and tangible
-- small changes can result in appreciable results to a game world.

Working with game APIs, assets, and scripting is rarely elegant or
academically pure, but the reward of accomplishing a successful mod produce a
good incentive to learn real-world 'ugly' APIs. These are the sorts of systems
that most people in tech have to interface with every day. By being introduced
to these real-world systems early on, there is no jarring transition when
arriving from a more learning-based environment.

------
sliken
12 year olds are quite smart. Send them this page and see if anything attracts
their interest. It's a bit harder these days than it was 10-20 years ago where
there were many less distractions.

I'd recommend showing them "cool" things that use programming. Wearables,
small automated things, computer controlled squirtguns, 3d printers, visit a
local maker space, etc.

Sure there's many people that self started decades ago and taught themselves
programming from scratch with minimal resources. But lets face it, those
people are the exception not the rule.

------
neurotech1
I've noticed quite a few young people interested in electronics and computing
programming start out with wearable electronics.

They make Arduino boards for wearable projects that run of batteries. The
Adafruit blog is quite interesting.

[https://www.adafruit.com/category/65](https://www.adafruit.com/category/65)

[https://blog.adafruit.com/category/wearables/](https://blog.adafruit.com/category/wearables/)

------
werber
[https://www.girldevelopit.com/](https://www.girldevelopit.com/) would be a
great place, it's a female centric coding club that is very welcoming. At 12,
most beginner coding courses via codecademy or similar outlets are probably
within her intellectual grasp. Also, I'd suggest getting your friend to set up
a project related to her interests with an end "product" in mind and then
seeking out advice on how to build it.

------
sn9
She can learn just about anything nowadays from sites like Coursera, edx, and
Udacity.

Books like _Realm of Racket_ can be fun introductions to programming that
happen to teach some advanced stuff.

Books that the parent's might like are Carol Dweck's _Mindset_ , Barbara
Oakley's _A Mind for Numbers_ , and Angela Duckworth's _Grit_. If she shows an
interest in mathematics, the _Art of Problem Solving_ books and forums are
great.

------
scottcha
I've been gradually teaching my daughter (7 years old) to code. I've primarily
focused on slow, self directed pace (when she has an idea I help tune it to
something she is capable of and we do it together). So far the best resources
I've had are: 1\. Code.org: The Hour of code and Tutorials using Blocky are
hands down the best intro to the basics I've seen. You get through iterative
programming up to loops with great tutorials. Blocky also helps when you
haven't yet learned to type. 2\. MIT Scratch: Also using blocky but has a
great playground in which keeps it focused for lots of things my 7 year old
wants to do (she animates Birthday cards, codes little games). 3\. Arduino: So
far we've built a few things together. This really takes more work on my part
since she is still too young to get all the concepts but the main thing I'm
trying to develop with her is that she can approach any of these problems and
solve them. She doesn't have to be intimidated by software or hardware. So far
we've built a greenhouse opener (servo activated by temp sensor) and we are
working now on a programmable clock.

Things I see recommended here but which I personally wouldn't do: 1\. Drop her
in to a Linux/Command prompt with a book and ask her to go to town. I think
this may work for some folks but I'll wager the success rate would be pretty
low as a general solution. Also I disagree that letting a kid walk through man
pages or technical books like K&R is the most effective for this age given how
many awesome resource there are to get started. Those things can come at their
own time when they have an actual problem which requires it. 2\. Don't start
on a language other than blocky unless she can type. The typing will come but
if you want a clean start and not have her too frustrated with doing the
programming while also slow typing I would handle learning these separately.
3\. Let her to go on her own. I'm fortunate (and most people on this site are)
to know how to code so this applies only in this case. Its much more
motivating her for this to be "our" project where I can help get her unstuck
when there is a challenge and its something we spend time together on. I also
get to model learning and debugging for her which is hard to learn by
yourself. On the flip side though you have to be patient and not be tempted to
do it all yourself as the idea is that she learns it all eventually.

Remember the big picture: keep this mind and realize that knowing this is
incredibly powerful but at an early age there is so much to learn that keeping
it fun and engaging is the best way to have her want to continue to come back
to it. Also remember that these kids want to learn and helping them pick up
the right tools to help them solve their problems will enable them to do that
as an adult.

~~~
corysama
> Things I see recommended here but which I personally wouldn't do

Seconded. Advice on learning tech and science tends to contain a large amount
of survivorship bias. A lot of people in these fields had some unusual,
unstated quirk in their background that led them to do stuff like read K&R
front-to-back while all of their friends were watching TV. It worked out great
for them, but it's bad bet to hope it will work for a large percentage of
kids.

------
fwefeefew
> Anybody got any advice?

Ask the kid and see what her interests really are? Does she want to learn how
to make games or what? She should be able to voice this at 12. Can she look up
free programming books with Google? There's tons of them. Does she want to
mess with a R-PI? If a co-ed camp was a disaster (at the age of 12!) simply
because it was co-ed, she might need therapy, not just some hippy-dippy girls-
only camp.

------
jey
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](https://en.m.wikipedia.org/wiki/Guido_van_Robot)

------
sixothree
My advice to someone that age is that if the technology is too difficult to
learn then just move on to something easier. I wasted too much time at that
age trying to learn things that were just too difficult (assembler, etc). Back
then though I didn't have access to mentors or people who could suggest more
appropriate technology.

I suggest Maker Faire, arduino and raspberry by, wearables, etc.

------
ilaksh
Find ways to foster self-direction, experimentation and facilitate the
experiments.

There is enough material for free on the internet. Buy her stuff if its
practical though.

But she very soon will need to be self-motivated for her learning and making a
living. Encourage her to work on 'real' problems or projects that interest
her. Encourage her to work with others as much as possible.

------
cweiss
Attend a local Maker Faire - There's such a broad amount of creative energy
covering every interest, I'd think it sure to spark/fuel any passions. I'm a
bit of an introvert myself, but I can't help but talk to folks there about
what they're doing and what challenges/triumphs they've faced.

------
Vosporos
* 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.

------
satysin
If she wants to do software then Python with one of the many excellent free
and non-free books for kids available. Just look them up on Amazon.

If she wants to get into hardware start with a RPi or Arduino.

Also get her running Linux. Start with something simple like Mint or Ubuntu.
Teach her how it is "like Windows and OS X" but a bit different. Do some basic
command line stuff like making a folder, opening a file, etc.

Setup Minecraft which I would assume she already plays if she likes tech. Show
her mods, maybe even a little Java to make mods although I feel Java with its
strict OOP and compile/run can be a bit daunting for even an adult so maybe
wait until she understands Python a bit.

The main thing is just explore all the different things. Tech is awesome today
as if you have a computer you can get so much stuff free thanks to the FOSS
community from the OS to everyday software to programming languages to books
etc. And little hacker hardware like the RPi is affordable by almost all with
a little spare income.

------
Eire_Banshee
Lego mindstorms is outstanding

------
samlevine
This is a bit dated, but it's a good start:

[http://www.catb.org/esr/faqs/hacker-
howto.html](http://www.catb.org/esr/faqs/hacker-howto.html)

------
rajacombinator
Just have her do a free online intro to Python course. If she has aptitude it
will be trivial yet still meaningful intro to programming. For
shyness/confidence, sports would be preferable.

------
hjbuchanan
Checkout Girls Who Code--maybe they have a summer program near her. It might
be geared towards older girls but she might be able to get involved in some of
their other events.

------
drelihan
I'd help her get connected with a mentor / tutor she likes. Having a resource
to bounce ideas of and help guide her through tough spots can be very helpful.

------
DarkContinent
I learned Python using Codecademy, then I did some fun projects from Python
Playground.

Wearable electronics are good; the Make book seems like a good intro to that
area.

------
greggman
What's she into? If she likes games I'd just have her download Unity and learn
C#. Tons of videos, tutorials, and books to choose from.

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

~~~
0xCMP
Baby steps. Install Arch Linux. /s

------
chanux
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](http://www.defmacro.org/ramblings/fp.html)

~~~
iKlsR
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.

~~~
glenda
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

~~~
draker
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.

~~~
glenda
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.

------
tmaly
I really enjoyed the Getting Started in Electronics when I was 12. I still
have a copy from Radio Shack.

There is a newer version you can buy on Amazon.

------
akulbe
I'd be happy to donate a Raspberry Pi to the OP for the young lady to use.
They _are_ an excellent learning tool.

------
apricot13
when I was 12 I learnt html/css by making websites based off my favourite
interests (sailor moon!) and that taught me html/css and I had a blog of
course. Try to relate what she learns to an existing interest.

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

------
VLM
Be a resource. At that age both me and my kids used parents as a toolbox
(literally), driver, someone to bounce ideas off, last but probably not least
a source of cash.

I've noticed that kids do what they want to do, at best you can steer toward a
general family of actions. If the adult wants electronics, and the kid wants
to learn by playing with MIDI and XLR connectors and semi-pro audio stuff,
trying to steer toward raspberry pi isn't going to work unless you're
incredibly sneaky, but bringing home a pile of surplus audio gear from work
will be pretty well received.

My dad had plenty of money but knew I'd be a better engineer and better
artifex in general if I didn't have the most expensive stuff. I'm not saying
buy kids junk, especially not safety related which should be top of the line,
but I learned a lot more designing and making my own ham radio antennas than
I'd ever have learned opening a box and assembling a kit antenna or even worse
opening a box to reveal an assembled antenna. You'll never really learn how to
take care of (expensive) tools until you're "forced" to use junk tools.

You can learn a shocking amount of good engineering by osmosis, especially
with some "pro" guidance. Buy her a broken down motorcycle or dirtbike (if not
a car) and have her tear every piece apart figuring out how each part works
and where and how its worn and how to use tools and just how stuff works. Tear
apart some old VCRs and DVD players (older the better... modern set top
streaming boxes are mechanically boring). Take apart at least three
traditional desktops and put the pieces together into at least one working,
"maxed out" desktop. I disassembled my mother's oven when I was about her age,
this is not some weird metaphor either, this was back in the days of
mechanical timers and clocks and rube goldberg thermostats that none the less
sometimes worked. Every kid should tear apart at least one vehicle
transmission and one carburetor in their youth. And talk talk talk, unless the
kid learns something about metal fatigue or electrochemical corrosion or how
to put out cutting torch fires they're just destroying stuff. Your job is very
boy scout adult, chill out other than "no you can't use my cutting torch in
the garage, take it outside first" and similar safety violations. All kids
like burning stuff although its only socially (semi)acceptable for boys.
Notice how I can melt aluminum in that wood fire, but not steel, tell me what
that means? If I get one thing across in this post its that kids need to take
stuff apart almost as much as they need to build stuff.

I don't know the "tech" SV social media coding equivalent of tearing apart a
broken down Honda CBR 150. When I was a kid it would have been breaking copy
protection on 8 bit micros which was well within my/our ability. Maybe fun
with a packet sniffer or mapping out other people's wifi access points. Maybe
replicate a software exploit following the premade instructions for the
exploit, then try it on similar software and see what happens.

------
bwackwat
Stay simple and buy her a POSIX-compliant C programming book.

She'll have a server running in no time.

:)

~~~
satysin
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...

------
beachstartup
when i was 12 i spent several hours a day reading RFCs, man pages, and HOWTOs.

------
nether
12 year olds should be outside playing, not coding.

~~~
ben_jones
Are you telling me reading technical documentation isn't enjoyable?!

