HN Theater @HNTheaterMonth

The best talks and videos of Hacker News.

Hacker News Comments on
How to teach programming to your loved ones

media.ccc.de · 158 HN points · 3 HN comments
HN Theater has aggregated all Hacker News stories and comments that mention media.ccc.de's video "How to teach programming to your loved ones".
Watch on media.ccc.de [↗]
media.ccc.de Summary
Teaching beginners how to program is often hard. We love building programs, and seeing our loved ones struggle with this is painf...
HN Theater Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this video.
I'll refer to the talk [0] from last congress about the german sibling of the high-school version of MIT's How to Design Programms [1]. It's about teaching a functional-first style of abstraction with a _very_ rigorous structured approach to writing the design. I wish I'd started with HtDP instead of Pascal/Delphi (later Java), but it's the best approach I see if one wants to quickly be able to start a project of non-trivial complexity without it ending in a horror show of technical debt and/or frustrating bugs one doesn't even know how to analyze/tackle. If a slightly above average (1-2 sigma IQ, aka 120+-10) 6th grader isn't scared of the complexity, it should be possible to rely on the urge of curiosity to get said child to continue being teached by oneself. While I applaud the use of Racket for this teaching, it unfortunately scares off many who believe that companies prefer code-monkeys who can hack stuff together within Python's ecosystem. I know that, with some connections, it's easy to start with these functional skills in a company that has tasks that are suited for this approach, as well as senior engineers with some functional skills (enough to grasp what the new hire created). A good manager can let someone with no industry experience work on a well-defined component that takes 1~3 weeks to design and implement, with next to no micro-management. It only works though if the new hire is skilled in designing software, which HtDP has as it's main goal (it's even in the title). I'd hire a newbie self-taught with HtDP after testing stochastically to verify that he/she actually worked and understood all of it with just one 1~4 day in-office real-world task to test if the learned things compose into actual wholesome software design skills. I'd not like one who learned Python on his/her own and now has 1.5 years full-time experience designing&coding Python. Not without some specific testing to judge the quality of their design skills, which btw. is a far harder test than randomly sampling concepts of HtDP with short excercises similar to those in the book itself, followed by the mentioned few-day practice test. HtDP gives me the confidence to assume these few-day results scale to projects that take months, after just about .5~1 year of experience with projects that take a few days to weeks each.

[0] https://media.ccc.de/v/35c3-9800-how_to_teach_programming_to... [1] https://htdp.org

Jan 31, 2019 · 158 points, 44 comments · submitted by n-izem
nxrabl
The title of the talk is a bit misleading, since it's really all about teaching young people in a classroom setting with assignments and credit. Which happens to be very relevant to me personally right now, but doesn't at all help if what you want to do is get your nana to provide more enlightening diagnostic feedback with her tech problems.

This talk does seem to confirm a lot of the things I've suspected about teaching tech, specifically that vocabulary has to come first, to give students the language to describe what they want and the problems they're having, and to give them the mental hooks to hang concepts and practice from.

henrik_w
I taught my son and his class (grade 8 at the time) a bit of Python programming during several weeks about a year ago. It went surprisingly well. I concentrated on basic concepts: variables, statements in sequence, conditionals and loops. I've written it up here:

https://henrikwarne.com/2017/12/17/programming-for-grade-8/

codazoda
I recently started a little series of zines where the idea is to learn programming by creating art. It's a little akin to a puzzle or paint by numbers. Each issue is a type-in that produces an image on a JavaScript canvas. I hope that it teaches programming in the same way I learned from books and magazines in the 80's. Check it out at: https://splashofcode.com
toomanybeersies
Why would you want to?

I have no desire to teach calculus to my loved ones, or chemistry.

On the other hand, I do have an interest in teaching technology literacy to my loved ones. How to avoid falling for phishing scams, how to find information you need on the internet, how to make a spreadsheet to plan for things, how to write a resume using a word processor. People are lacking such fundamental tech skills that teaching them how to code should be the last thing on our mind.

geniium
For the French speaker there is this amazing book named "Genie du code" that will teach you how to code : https://geniesducode.com.

Have a look, their project is amazing and the drawings are fun!

gabrielshaad
Step 1: You don't.
mrspeaker
A talk entitled "How to teach programming to your loved ones: Enabling students over example-driven teaching" and you reply "Step 1: You don't"... that's pretty harsh. How would you say the author should have approached it instead?
alexanderdmitri
There's a really good article in the top ten on Lawyer News right now: How to Teach Your Loved Ones to Perform Legal Research.

A lot of the advice could be applied here pretty well.

avip
It's harsh because it's true. There's no reason to teach love one's coding. In fact, there's no reason to teach them anything that does not resonate with them naturally.
elbear
Where does it say that you should teach them if they don't resonate with the topic?

I took the talk as learning how to teach the topic better to your loved ones or anyone else for that matter.

(I haven't watched it yet)

shard
I think there are many topics that should be taught to loved ones even if it doesn't resonate with them naturally. The ones that come immediately to my mind are: financial literacy, how to prepare for and respond in emergency situations (e.g. natural disasters, medical emergencies, threats from assailants), critical thinking. Knowing these can potentially save them from many expensive or life threatening mistakes and I would force them on my loved ones even if they resist.
avip
You know something? you're right. You had me at financial literacy.
gshrikant
I don't think that's harsh for the title of the video as posted on HN. Like many others interested in programming, I've tried teaching it to my loved ones and come back with the understanding they either they don't need to or they don't care. A lot of programmers I know tend to assume that other people need to know this stuff or that it is important to their lives somehow which is a narrow view of the world to say the least. My girlfriend might listen to me talk about programming but assuming that she needs to be brought into the fold _somehow_ feels selfish to me. Again this is all subjective and anecdotal. I'm sure the talk would be useful to someone who knows someone who is interested and is just looking for the best way to teach them.
nicoburns
Yes, or at least make sure that they actually want to learn before going down that path.
crispyambulance
Yeah, if someone _wants_ to learn it and you're able to teach it-- why not!

The complication is that teaching something is a very different and separate skill than being able to "do it".

Professional programmers ESPECIALLY have A LOT of trouble with pedagogy. You can see their profound dysfunction in this area if you spend time in stackoverflow. It makes me feel sorry for people that get into there the first time, totally unaware of the weird culture that awaits them.

jniedrauer
No one taught me to code. I realize that this is not true for everyone, but for me, it is difficult to comprehend "being taught how to code." What does that even mean? Learning to code is synonymous with reading documentation and then implementing it. Do it a lot and you get quicker at it. Do it enough, and you memorize the standard library. Congrats, you know how to code. It's an entirely self-driven process.

I have helped engineers get up to speed on new tech more quickly than they otherwise would have. But that's not really teaching a skill. It's more like cutting down their search time for information a little bit. It would be completely useless if they didn't already know how to use documentation.

Software engineering, on the other hand, is something that can be taught.

barrystaes
> No one taught me to code.

As a kid i learned to code using an old book i found, with a computer but no compiler:

I simply had not figured out that EDIT.COM was not QuickBasic. Looks the same but had no Run menu... if only somebody told me! As a kid i could use a teacher.. as a knowledgebase to query, not necessarily as a teacher.

It was fun to run what i wrote before, once i figured that out though.

Not much later i found out how to delete files..

jeena
I never considered memorizing the standard library having anything to do with coding. Same as memorizing where the books in a real library are to have anything to do with being able to read.

Learning to code for me is learning the concepts like variable, loop, if, map, reduce, oop, sequence, array, function, return, lambda, monad, state, side effects, etc.

Once you understand this, it doesn't matter what language and libraries get thrown at you, you'll be able to work with it. The rest you can read up in the documentation, and over time, as you say, you'll not need to look as much because you memorize it. But in my opinion that's just optimization after you learn coding.

BossingAround
That's my experience. I wanted to teach programming to my SO, because I know she's extremely intelligent and she could do programming quite well. She just had a mental block, and never got it past the second week of the (Coursera) class, when she had to program something small and felt extremely stupid for not knowing how to do it.

I remember going through the same when I was studying programming though. Some people get over it, others don't. That's ok.

detaro
That's quite a different statement than "don't", isn't it?
tvanantwerp
The mental blocks can be totally unrelated to the difficulty of the concepts, too.

My wife is also smart and totally capable of learning to program. I've seen her self-learn subjects (e.g., how email headers work or basic SQL queries) just to scratch a particular itch, though she didn't think of it as learning a technical skill.

But she'll never bother learning to program, because she's "not a tech person". It all goes back to her being a young girl in school and having one bad computer teacher who made her feel stupid and inadequate. She's completely averse to "learning to program". Her block to learning is entirely emotional, acquired from a stressful event.

naveen99
My 8 year old daughter wants nothing to do with programming, but loves math. This morning she asks me in the car for a math problem: “papa give me another hash to calculate!” :). ( I had taught her a simple hash function that just calculates a 1 digit hash by adding all the digits together repeatedly until you get 9 or less.)
Verdex
Type theory and lambda calculus? It's like, here's some neat math concepts. Oh look we can use it to prove statements about addition and stuff. Psyke, now you know haskell.
DonaldPShimoda
> Psyke

Well that's a new one for me haha.

It's just "psych". Like "Here's a million dollars. Oh, PSYCH!" An older (more complete) phrasing is "to psych someone out", meaning you mess with somebody (psychologically). I've also seen it spelled "sike", but never "psyke". I wonder if your spelling is common too.

Verdex
Not sure. I have a hard time spelling any word where I don't have a good grasp on the etymology involved. Also there are some words that I can't spell AND pronounce, but if I have a hard time with one I can do the other (they change places several times before I get used to them). Finally, I almost always spell snake when I really mean to spell snack (including this time, I had to fix it).

Psyke came up on the google search, so I guessed it was good enough even though it looked a bit funny to me. Of the two, warhammer 40k and psychology, my last thought was of warhammer 40k, so I'm guessing that's why I ended up spelling it the way I did.

Psychology, physics, and psychics all give me trouble as well.

(Hard core research into etymology and linguistics are on the list of things to learn. I'm guessing I'll continue to have these sorts of issues until I start making headway.)

None
None
None
None
BlackjackCF
Agreed.

I think everyone should have a broad understanding of the purpose of programming and what it can achieve.

Not everyone needs to learn to program. Some people just don't like it and won't have the knack for it.

None
None
airstrike
Even if you do, probably not in Racket and German at the same time
detaro
How dare someone use resources in their native language as an example.
NPMaxwell
:D
airstrike
Sure, if the entire presentation was in German, that'd make sense. As it stands, it's just sloppy.
ohithereyou
The conference is German, the speaker is German, the event is being held in Germany, and the CCC is German. The fact that the presentation is in English is the anomaly here.
DonaldPShimoda
Seriously! Should the presenter have used C++ or something?
jackallis
amend step1: before teaching, make sure they shave their hair.
dang
Could you please stop posting unsubstantive comments to Hacker News?
kyleperik
This is true. It comes down to two things I think that go hand in hand

1. Do they have enough persistance to learn and then tackle problems 2. Do they even care?

Most people just aren't wired that way and it's nice enough if you find someone who's even willing to listen to you talk about technical things

CobrastanJorji
I agree that we shouldn't force programming down the throats of loved ones that aren't interested in our careers and hobbies.

However, I strongly disagree with the popular notion that most people "just aren't wired that way" and can't learn to program. Certainly some people take to it much more quickly than average, but dismissing everyone else as doomed to never be able to comprehend the cosmic complexity of a while loop because their brains are fundamentally less than ours is kind of terrible.

toomanybeersies
I counter that most people "just aren't wired that way". But I don't think that programming is some magical special talent.

Most people are't wired to learn how to program effectively, just as most people aren't wired to be a mechanical engineer or a chemist or a doctor.

I don't want to sound like an elitist asshole, but it does require an above average intellect (oh wow I sound like a neckbeard here) to be able to do any of the above. That immediately disqualifies half the population.

Most of my friends cannot and will not become software engineers (or engineers of any kind), and that's fine. I don't know why they'd want to.

kyleperik
Didn't mean to imply that they aren't capable, but I think their reward system is different.
tossaccount123
The best you can really do is point them in the right direction and help them when they get stuck, but learning to code really requires motivation that only they can provide
Lerc
I have half an idea for a children's book that I may one day write called "Teach your parents to code" targeted at a child and a parent where neither of them can code. The idea is that you put the child in the driver's seat making them motivated to help their parents. At the same time, they have to learn the concepts in order to explain them. In explaining the concepts to an adult they not only self review what they have learned, but the adult can also review and catch misconceptions.
CobrastanJorji
I listened to Amy Bruckman give a talk about LambdaMOO some years back. She mentioned that kids frequently took much better to physical object-oriented metaphors than adults did. They might say things like "I don't understand why adults can't understand that a dog is-a animal, but a house has-a dog in it."

I think it's a great idea for a book. Send me a PM when it's published and I'll buy one :)

yeahitslikethat
Its brilliant. I hope he writes it.

There's a riddle that little kids get right away but Harvard grads hardly ever get.

What's greater than God. Meaner than the devil. Poor people have it. And if you eat it you will die?

yspeak
Nothing
a_w
> What's greater than God. Meaner than the devil. Poor people have it. And if you eat it you will die? Nothing?
DenisM
You will be interested to know that Brett Victor wrote a tutorial on lambda calculus for preschoolers. [1]

Also, I have a lambda-calculus ballet production in my head, but since I know nothing about ballet I can't really put it down to paper or make a production. Not that it helps you any, but I think it's a fun idea to ponder.

[1] http://worrydream.com/AlligatorEggs/

Jan 31, 2019 · IngoBlechschmid on Racket v7.2
Mike Sperber used Racket in his excellent 35c3 talk "How to teach programming to your loved ones": https://media.ccc.de/v/35c3-9800-how_to_teach_programming_to...

From the abstract: "A word of warning: The resulting approach is radically different from most teaching approaches used in universities and schools. In particular, it avoids teaching purely through examples and expecting students to develop the skills to arrive at the solutions on their own. Instead, it eaches explicit methodology that enables students to solve problems of surprising complexity on their own, whether they are 11 or 55, whether in a classroom, a training facility, or your home. Extensive documentation, material, and software to support this methodology is available for free."

webwanderings
Thanks for sharing. Nice. I'm not a programmer but I have taken many courses all over the web (I think I only lack practice). This talk reminds me of the Edx course on functional programming using DrRacket. As the talk suggests about the boring and bureaucratic aspect of the recipe design, I think that's exactly the reason why I couldn't finish that Edx course twice, though I am convinced that this design/recipe methodology to learning to program, is the right solution (which is absent from the pedagogy of a lot of courses). This talk makes me want to try and take that edx course again, the third time!
WoodenChair
If a methodology doesn't motivate you to actually do the work (i.e. finish the course) no matter how intuitive it might be, it will not work. That said of course everyone is different, and what motivates one person, may not motivate another.
morenoh149
for those that use lists on youtube https://www.youtube.com/watch?v=BleOgPhsdfc
pjmlp
Thanks for sharing, added to my watch list.
jessealama
Sperber is an amazing speaker and fantastic programmer. This is a great talk. He'll be talking about similar things at Racketfest, the Racket conference I'm currently organizing (https://racketfest.com). The idea is to build on what are called design recipes, a brilliant idea (or family/scheme of ideas) developed by core Racket guys (see their How to Design Programs [https://htdp.org]).
Maybe this talk helps: https://media.ccc.de/v/35c3-9800-how_to_teach_programming_to...

Disclaimer: I haven't had the time to watch it myself yet.

HN Theater is an independent project and is not operated by Y Combinator or any of the video hosting platforms linked to on this site.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.