
The Hacker Way: How I taught my nephew to program - stopachka
https://stopa.io/post/246
======
jcims
Neither of my kids have any interest in programming or computer science or
engineering at all. I sometimes wonder if i could have done something
different to spark their curiosity. Welding, working on cars, stupid arduino
tricks, lasers, 3d printers, hacking, rockets, robot clubs, computers
everywhere...I’ve tried a lot, but nothing really stuck.

One’s just got an undergrad in healthcare and the other likely headed for art.
I’m stoked they found things they love and I’m sure we’ll still have lots to
talk about over the years... just probably won’t be vi vs emacs lol

~~~
hluska
My Dad was in the RCMP. Growing up, I briefly considered following his
footsteps but in the end, I just wasn’t the right kind of person. I was more
into science, math and computers than sports and gravitated towards computers,
programming and general mischief making. Along the way, I got heavy into
security and privacy.

My Dad retired 17 years ago and since then, he’s gotten heavy into computers.
He knows more about Mailchimp than anyone I know. And though I ended up with a
marketing degree, he’s become my de facto email marketing consultant.

Now that he’s heavy into computers, I see all the neat ways he’s influenced me
(and vice versa). Security, particularly opsec is a passion we both share.
After many conversations, I’m starting to realize that he’s actually the one
who got me into the field way back in the late 1980s and early 1990s.

Now when we talk about his career, it’s clear that he instilled the idea of
hacking into me. He wasn’t into software systems, but he was into human
systems and he was relentlessly resourceful when it came to solving their
problems.

Looking back with 43 years of experience, I realize how much of an influence
my Dad had over me. I don’t know that we’ll ever have a vi versus emacs
debate, but holy hell, do I ever feel lucky that I got to know my Dad on this
level.

I hope to live long enough to get to know my daughter on that level. And
friend, I wish the same for you!!!

~~~
stopachka
This is such a beautiful message. Thank you for sharing

~~~
hluska
Thank you friend. I’m feeling quite emotional now after writing it. I’m glad
it resonated! :)

------
yelloworangefog
That all rings pretty true for me. I wasn't a fan of math as a kid, or
anything I associated with school really. I got into programming through Game
Maker, because video games were something I legitimately cared about and
liked. It pretty much changed my life and gave me something to aspire to.

Now that I've grown up, my primary interests lie in virtually all aspects of
computer science, and I no longer consider making games to be much more than a
hobby and passion project to spend my free time on. I only wish I'd have had a
mentor of some kind in the world of CS, so that I could have gotten into it
earlier in my childhood. Major props to you for being an awesome uncle :)

~~~
nefitty
Dude, hell yeah. Game Maker changed my life. I was so proud to be able to
script my own stuff and be able to hang with the older kids in the irc
channel. None of them believed an 11 year old was writing his own pure-GML
games!

Now, decades later I’m finally pursuing that little dude’s dream, although
games also lost their luster for me on the intervening years...

~~~
yelloworangefog
> although games also lost their luster for me on the intervening years...

Yeah. I still like writing small games from time to time, mainly just to serve
as programming exercises or for fun if I'm bored. I had to accept at some
point that I don't have the wide variety of skills needed to make my any of my
dream games on my own (and also the time commitment to make a whole game by
yourself can be insane). If I were to make a serious effort to do so, I'm
pretty sure I would just be disappointed and feel as though I'd wasted my time
because the final product wouldn't live up to my fantasy. To realistically do
it, I'd need to either sacrifice a lot of creative control by collaborating
with people, or wait until I've eventually acquired enough skill in the areas
of art and music et cetera to pull it off by myself.

~~~
ed312
100% in the same boat, finally coming back to a bit of personal game dev. Just
do a little every day (or a few times a week). Try sketching a couple things.
Play D&D or any other more creative game to learn design. You're wayyyy more
likely to make a good game if you set out to make 10, then waiting forever to
make the one "good" one. Just keep trying and practicing.

~~~
yelloworangefog
Thanks, that's good advice. I do oftentimes get arrogant and overestimate my
ability, when I get the game dev itch. As with anything, there are some things
you can only learn from experience. I think I have a pretty good amount of
experience in the "playing games" department, but I sometimes erroneously
assume that it will directly translate into my ability to _make_ a good game.
I can't count the number of times I've spent like a week straight working on a
game project I'm passionate about, only to be met with the sobering
realization that I've set my sights too high. You're absolutely right that
I'll be more likely to make a good game if I set out to make ten of them. I
need to get better at planning projects I'll actually be able to finish.

------
loa_in_
> Eventually, he wanted to make the news site do dynamic things: How can you
> hide and show content? How can you make buttons work? Well, time to learn a
> little bit of javascript.

It's amazing how much you can do with only CSS nowadays. From simple
interactive visual elements[1] to whole mini-games[2] with only HTML and CSS.
I think kids would appreciate the notion that it's all there, possible - if
they take the time and hack it up.

[1]: [https://css-tricks.com/css-only-carousel/](https://css-tricks.com/css-
only-carousel/) [2]:
[https://codepen.io/collection/AKkZro](https://codepen.io/collection/AKkZro)

~~~
stopachka
Heck yeah! He surprised me too - it’s been a while since I’ve went deep on the
frontend, so he surprised me with some of his knowledge of box, etc :}

------
kanobo
Kinda like Montessori except with code? When I see kids build things in
Minecraft I wonder if those skills translate to programming later in life. I
believe I was lucky in that when I was in grade school even websites by
professionals were so janky and amateurish (in a charming way) I felt like
there was no barrier and anybody with a text editor could figure it out.

~~~
indigochill
>Kinda like Montessori except with code?

There's an education theory called Constructionism
([https://en.wikipedia.org/wiki/Constructionism_(learning_theo...](https://en.wikipedia.org/wiki/Constructionism_\(learning_theory\)))
which is all about kids learning through active engagement with the material.
Montessori is one constructionist method.

Seymour Papert was a pioneer of constructionist theory and contributed to the
Logo programming language as well as writing the book "Mindstorms: Children,
Computers, and Powerful Ideas" which became the namesake of the LEGO robotics
line which it inspired.

"Minds in Play: Computer Game Design As A Context for Children's Learning" is
another book that uses game design (and Logo) as a platform for
constructionist education.

Constructionism has been important to the development of computer interfaces
as well since it inspired Alan Kay and his Dynabook concept (which inspired
the iPad), which was designed with the intent of making a child-friendly
computer.

I'm certain Minecraft is a gateway to developing technical thinking,
especially if kids start wanting to mod the game (and maybe even make their
own mods, at which point they have to reason about the underlying system).

~~~
kanobo
I remember reading an old research paper (pre-minecraft) that tracked long-
term effects of kid-friendly languages like logo and scratch-like languages vs
textual-based programming like basic. It found that the former got more kids
engaged but there was minimal lasting impact (none of those tracked became
programmers or stated any interest in learning more as adults). The later got
fewer kids interested initially but those who did get interested had a high
chance of carrying those skills into programming careers. The results would
probably be very different now, but that paper really colored my thinking when
I first read it.

------
aboyne42
I'm a grown professional, and this is still the way I learn. I think this is
just the way some brains work.

My office and hard drives are filled with half finished projects, and I've
probably forgotten how half of them work. I'll reinforce my learning when I
pick it back up.

I only recently realized the joy of allowing myself to switch books when I
feel like it. I've always loved reading, but sometimes I can't sit through the
whole thing without something else catching my eye.

My environment as a kid allowed me to work that way and I will be forever
grateful for that. It is the reason I now love what I do for a living. If your
child's brain works this way, I feel that allowing this type of learning is
the best thing you can do for them.

------
boraoztunc
Glad to see this post and read all of other comments. Currently as a senior
designer, I always wanted to be an engineer when I was a kid, so deep into
computers and electronics. But my environment didn't allowed me to become one,
and I always resent this.

So this summer I started a "Summer Code Camp" with my nephew (14), bright kid,
also into computers but also living hard times to learn stuff at school, fails
at math, and not properly aligned with current education system to learn. So
we started from the beginning, I only know HTML, CSS and basic Javascript.
Using freecodecamp.org for our lessons, at first we started physical, I go to
him couple of times each week for our sessions, to warm things up, once he get
used to the website and basic structure of the code, we build a Discord
channel for video meetings, sharing screens, and channels for resources,
inspirations, docs and archive. He plays basketball at school team and really
into the game, NBA fan, of course a gamer. So we are keeping our conversations
around them, building stuff for these topics. Installed Visual Studio Code to
his computer so he can use the code he learned offline and build stuff from
there. His interest is growing each day, but of course as a kid he lacks of
disipline. Which is not important at that point actually, because we're having
fun. Hope to take this to the next level once we started Javascript and build
more dynamic stuff.

As the schools are opening next week, I'll teach him how to deploy stuff and
show off to his friends. Also thinking this can be good way to make things
stick more deeply. Kids like to show off.

The Hacker Way. This is the way.

------
greggman3
I was self directed as apparently are many software engineers so I've always
assumed that the best way to teach would be to let kids direct themselves and
they can ask questions if they get stuck.

Well, this video claims I'm wrong. Self directed study doesn't fit most
students according to the research presented in the video.

[https://www.youtube.com/watch?v=g1ib43q3uXQ](https://www.youtube.com/watch?v=g1ib43q3uXQ)

you can jump to 11:00 if you want to jump to the part about learning.

~~~
owenversteeg
I think that self-directed and self-motivated learning for _programmers_ is
critical. All the best programmers I know are almost entirely self taught. I
think the best way to go about it is first motivation (they have to really
want to be able to make things) and then an introduction (here's a REPL, type
2+2, hello world, here's a function, here's Google, stackoverflow) and then
provide help when needed.

Every time I've seen kids take this path, it's very black and white - either
they quickly learn to learn on their own, and succeed, or they need
guidance/lack motivation and fail.

For non-programming, I think learning on your own is far less critical.

~~~
greggman3
I think maybe things are being conflated here. (1) being motivated (2) being
self directed (3) being made to figure things out on your own

The video above basically says vast amounts of research show that showing
people the answers with explanations is far more effective than saying "figure
out on your own". Not only are people given the answers with explanations more
able to solve the problems they are more able to apply them to future
problems.

It also seems to say being directed (being given lessons) is usually better
than leaving it up to the student what to study (of course there are
exceptions for some students)

I know for me I didn't invent link lists, hash tables, sorting algorithms. One
way or another I was taught the solutions. But I was often self motivated.
Still, I was taught via assignment how to open a file, and read and write to
it. As well as how to implement a bubble sort. Enjoying programming I enjoyed
learning those topics but it might have been much longer for me to apply them
if a teacher hadn't taught me both by choosing what to teach (so not self
directed) and explaining it (so I didn't have to invent sorting). I had no
idea I wanted to know about those topics until after being taught.

~~~
owenversteeg
Sure, I'm not going to argue with the research's applicability to learning in
general, but I think that programming is a clear exception. The majority of
the best programmers in the world learned what they did in a mostly self-
directed way. This is unique in comparison to the vast majority of other
fields. For a while, there was a counterargument to be made that that was
because of the relatively modern invention of programming, but this is clearly
not the cause anymore - the first CS diploma was awarded in 1953, and now in
2020 you can get a CS bachelor's everywhere from liberal arts colleges to
online. Go to those CS bachelor's students and you'll find that of the best,
the majority were competent programmers before starting their degree.

> I was taught via assignment how to open a file, and read and write to it. As
> well as how to implement a bubble sort.

And I learned those, as millions of programmers, on my own - through
documentation, and Google, and so on.

That said, I certainly don't think that the _only_ way to be good is to be
self taught. I have met people who went to university with zero prior CS
knowledge, and they ended up excellent programmers. But to be entirely honest,
that is a small population. It's an uncomfortable topic for universities -
nobody wants to sell an expensive degree to become a programmer, with the
prerequisite that you're already a programmer - but my university did admit
that the students that were already programmers before starting did
significantly better in every way.

------
jck
Principle D is a good one!

I used to volunteer to teach elementary and middle school kids computer
engineering. I believed we had better engagement when we stuck to "real world"
tools (such as breadboards instead of littleBits, Arduino instead of Scratch)

------
smaddock
Games can be an especially good path to explore for teenagers. There are many
disciplines that come together to create something. Even while focusing on one
aspect of game development, you can build a desire to pursue another.

For me, it was 3D art that got me hooked. Followed by programming to make my
art do something.

~~~
paulryanrogers
Games were may path into tech too. Though I don't think it's generally
applicable. Having tried with nephews and other kids I think it takes a
certain combination of desire to create, grit, and community feedback. And/or
I'm just a bad teacher.

~~~
watwut
Problem with games is that you need to have actual artistic inclining to
produce something decent.

It looks cool and is a good attraction, but people who could be actually good
tech programmers will be offputted by reality of making games - which involves
a lot of drawing, making sure it looks good and slowly iterating on boring
gameplay till it is not boring.

------
kiba
I was a self starter. My interest in game programming kept me wanting to go
learn programming. And I did.

But it was incredibly hard to progress my skillset, and to some extent still
hard today.

I got a hobby that kept me learning day to day though: 3D printing.

------
ketanmaheshwari
Very timely for me as I am teaching my 15 year old programming. I started with
python and am using the excellent slides from this course at Cambridge as our
guide:
[https://help.uis.cam.ac.uk/service/support/training/download...](https://help.uis.cam.ac.uk/service/support/training/downloads/course-
files/programming-student-files/python-courses/pythonab)

------
spaceisballer
Great article and the two most important things to really go forward with are
to take notice of what they like and take interest in it. I’ve had to talk to
my wife about it, because she doesn’t care for video games at all, but as I
tell you she doesn’t have to like them just show interest and ask questions.
Just like the author mentions it can chain together to spark other important
interests (reading and other skills). I don’t enjoy a lot of these games my
kids like, just don’t have much depth or are obvious ploys to get you to spend
real money to play to win. But instead of complaining about it I play with
them and introduce them to other games.

------
throwawaynothx
my mother let me pull apart VCR's and TV's because it reminded her father
(deceased) my granddad, the rule was I could break anything I wanted but I had
to repair it or pay to get it repaired. until the day the I.T guy found my
stash of porn.

------
gamescodedogs
Hello @stopachka :) Thanks for sharing, that was a really nice to read the
story. I was wondering if the state of "He began designing apps with paper and
pencil." was also inspired by your influence?)

------
tmaly
I have been teaching my daughter with Scratch 3. I taught a few classes at her
school back in December. I posted my lessons online so the kids could go back
and review them.

The kids really enjoy it, especially 4th and 5th grade.

I got a cutebot and interfaced it with a microbit. My daughter and I made an
obstacle avoidance and track following program using the block based
programming this past week. She had a blast. I think if you make it fun for
the kids, they really get into it.

------
Paianni
I don't practise programming because, so far, I've found more valuable and
enjoyable things to spend my time on, and my computers do what I want of them
for the most part. I know anything I would be interested in programming would
involve a steep learning curve (many layers of existing software to wrap my
head around), so it's on the back burner for now.

------
Discombulator
Good advice, thanks for sharing.

I’d just keep in mind that there are no guarantees that kids will share our
passions, even with the best approach. Humans are complex systems - it is very
hard (and you would need need a lot of data) to make any general statement
about things like this.

------
DarkWiiPlayer
> What if you threw in some adventure novels after that, like Dune?

Dune... An adventure novel... I'm gonna press X on that one.

The paragraph as a whole makes a lot of sense though!

------
known
I taught my brother to program with AWK;

------
gverrilla
For those of you interested, there's a great book about play called Homo
Ludens, from Huizinga.

------
FatDrunknStupid
11yr old has a successful Youtube channel about unreal mods. I'm a prog but I
can't catch up with his skills cos he's working in a completely different
medium to me (VR, Sound?). 15 year old is a silly sod buying 'gaming' hardware
to play click games. His only hope is girls I'm afraid.

