[HN Gopher] Ask HN: Please share your experience teaching your k...
       ___________________________________________________________________
        
       Ask HN: Please share your experience teaching your kids to program
        
       Hi HN!  My son recently turned 7yo and I have successfully got him
       interested in programming. We started about half a year ago playing
       Minecraft and building more and more complicated automated
       machines. Recently I have added some robots that can be programmed
       in Scratch and now we have also started writing some simple games
       in Scratch.  I am not just trying to teach him programming but also
       show that with a bit of organization and working little bit each
       day you can achieve pretty huge results. So we created a very
       simple version of a game. I have then created a document where we
       are maintaining a listing of functionality we want to add. We then
       take them one by one, discuss how it can be added to the game and
       then tick off once it is done.  For Christmas he asked for some
       programming books ("how to make complicated Minecraft machines, how
       to write complicated commands and how to make mods").  We plan to
       do some more complicated robots and also make our own fun mods for
       Minecraft (as soon as I figure out how to hook up Scratch to recent
       version of it).  I am trying to not spend too much time on any
       given day (about 1,5h every day currently) so that ends up still
       wanting to do more.  I am also doing large part of coding myself
       and we switch who sits by the editor when he says he knows how to
       do something. I am trying to keep him enthusiastic by showing
       constant progress which I think is more important than that he
       actually does everything by himself.  I have 20 years of
       development experience so generally programming is not an issue for
       me.  Please, share your experiences, things that you have tested
       with your kids that did or did not work. Any tips you have
       personally tested.
        
       Author : lmilcin
       Score  : 40 points
       Date   : 2021-01-05 19:59 UTC (3 hours ago)
        
       | ObsoleteNerd wrote:
       | My girl first got interested when she was 5, when she was already
       | a pretty solid MC Survival player, so I got her into Scratch to
       | mod her MC creative world and automate some agents. From there
       | she was more interested in making stand-alone little
       | animations/games in Scratch itself, and now (almost 2 years
       | later) is mostly obsessed with making objects in Blender and has
       | started doing physical electronics using various kits.
       | 
       | I basically let her follow her own path, I show her how I do
       | something then if she's keen to try it I stick her in front of
       | the keyboard and she does it herself with me verbally guiding
       | (but never reaching over to take control, something I personally
       | think is important).
       | 
       | She loves hanging out in my workshop and watching me prototype
       | electronics or work on my own game dev or tinker on other
       | hardware/software projects, and she knows at any time she can
       | have a go (and she does, regularly).
        
         | lmilcin wrote:
         | Ah, how I wish I was game dev instead of working mostly on Java
         | backends for large financial institutions (and actually
         | spending most of the time in meetings).
         | 
         | I am pretty interested in the modding Minecraft with Scratch
         | part. I have found some abandoned projects. Can you point me to
         | what you have used that worked for you?
         | 
         | Happy it worked for your girl and little scared she started at
         | 5. I have two boys, one is 7 and the other is 4. The younger
         | one is inseparable from the older so I wonder how it is going
         | to be different for him.
         | 
         | I have been thinking about who gets to actually program. For
         | now I am happy that mixed routine where we regularly switch
         | works for him (he seems to be happy and engaged) and so I think
         | I will continue this way for some time before I experiment with
         | it.
         | 
         | I see that the best results we got were when he actually
         | himself figured some stuff and made it by himself. His first
         | machine -- ugly chest to destroy unnecessary items with a noisy
         | clock that runs constantly whether there are items or not -- is
         | still occupying middle of main room of our hobbit hole but I
         | don't think I will touch it, because he was so happy when he
         | got it to work.
        
       | Simulacra wrote:
       | My father tried to introduce me to programing when I was 12,
       | BASIC, but it didn't go well, nor did it go well when I tried to
       | learn every subsequent language. Being ADHD I needed instant
       | gratification with minimal effort, to pull me deeper in so I
       | wouldn't bounce to the next thing. Programing was chaotic, hard
       | to keep straight, and frustrating because my ego wouldn't let me
       | say "hey, you don't have all the answers, let's go figure out
       | what we're missing."
       | 
       | So my advice: Help him to understand that when an answer to a
       | problem is not visible, it doesn't mean he's dumb, etc. It means
       | he doesn't have the right puzzle piece of information, and needs
       | to find it first. (i.e. a formula, code block, etc.) Be ok with
       | not knowing the answer, and be ok that he will need to learn in
       | order to apply knowledge (like puzzle pieces) to the problem.
        
       | sherlockx wrote:
       | BBC micro:bit V2 - Will be able to get tangible results very
       | quickly.
       | 
       | Start with the simple stuff: https://microbit.org/projects/make-
       | it-code-it/
       | 
       | I find games in scratch are complex and require too much
       | programming knowledge to really get something interesting up and
       | running. The micro:bit on the other hand can do interesting
       | lights, sounds, etc with just the drag and drop of a few lines.
        
       | jgwil2 wrote:
       | Relevant blog post for a slightly older kid:
       | https://stopa.io/post/246
        
       | SulfurHexaFluri wrote:
       | Kind of different but I started learning programming while in
       | primary school. I mostly messed around trying to learn how to
       | make games in Unity. I didn't actually learn a whole lot of
       | programming this way but it probably improved my interest in the
       | subject and then I eventually discovered code academy which
       | actually taught me how to program.
       | 
       | In between unity and codeacademy I tried a bunch of books but
       | none of them really got me to understand what was happening so I
       | didn't learn much from them.
        
       | snaveen wrote:
       | I have 2 kids 14 and 12. My 14 year old has started solving
       | medium level leetcode problems (which I am happy about).
       | 
       | Talk to them often about code, technology etc.One thing that
       | helped IMHO spending a lot of time in solving math problems
       | (AOPS) , which made think through hard problems and had to grind
       | through solutions which took time. My kids love Big Bang Theory
       | and anything that is geeky. I talk to them about the latest
       | things that are happening in tech like the recent hack and the
       | malware.
       | 
       | I recently read this book https://www.amazon.com/But-How-Know-
       | Principles-Computers-ebo... and sat and drew with my kids and,or
       | , xor and nand gates.Building Mindcraft MOD can be another fun
       | project.
       | 
       | Be patient and it helps a lot IMO.
       | 
       | Good luck :)
        
         | snaveen wrote:
         | I have got my kids hooked on vim https://vim-adventures.com/
        
       | ketanmaheshwari wrote:
       | I taught my 15 year old python programming over summer. We used
       | the material provided by this course [1]. It worked out very well
       | for us.
       | 
       | We took a little detour at one point and I taught her basic
       | skills to navigate around Linux terminal. Files, directories,
       | editors, basic operational stuff.
       | 
       | Then I took another little detour and showed her ropes on git and
       | github.
       | 
       | Then we got back to the python course and now I encouraged her to
       | push everything she practices on her github account which she has
       | been doing since.
       | 
       | Now that the course is over, we have started working on a project
       | that aims to manage personal income tax. I chose that project
       | because it could start simple and can evolve to be as complex as
       | you want it to be. However, ultimately it is all simple
       | arithmetic. The project is going very well so far. We are
       | discovering new things about taxation almost every single day.
       | 
       | We are at a stage where learning vim would really help her so we
       | plan to take another detour next week and start with a vim
       | tutorial until she gets comfortable.
       | 
       | [1]
       | https://help.uis.cam.ac.uk/service/support/training/download...
        
       | colinmhayes wrote:
       | Your kid is 7. I'm pretty sure hat I was eating dirt when I was
       | 7. If he has showed you he's interested in programming then go
       | ahead, but make sure you're not projecting your own interests
       | onto your kid. It'll lead to resentment in 7 or 8 years.
        
         | jgwil2 wrote:
         | 1.5 hours a day seems like an immense amount of time for that
         | age, but if the kid is pushing for it, good for them both.
        
       | lhorie wrote:
       | My kid was playing Lightbot at 6yo. Most programming toys I've
       | seen have similar mechanics. I put together a cardboard version
       | myself to help him practice some concepts (e.g. procedures), with
       | the difference that it uses actual directions (up, down, left,
       | right) instead of the usual forward, turn left, turn right
       | commands, which in my observation were more intuitive.
       | 
       | He didn't seem to take much more interest in programming after
       | mastering that, but he did eventually take interest in chess. The
       | reason is that we borrowed a bunch of chess books from the
       | library and he would go read them whenever he was bored, and he
       | would play with his grandpa to try to apply the tricks he was
       | reading about. Point being that having self-study and tight
       | feedback loops seem to help in acquiring proficiency in a skill.
       | 
       | Personally, after the most beginner level, I'd start to move away
       | from using game development as a motivator for learning
       | programming simply because after some threshold, the math
       | requirements ramp up substantially (e.g. implementing jumping in
       | a side-scroller requires middle school level math at a very bare
       | minimum). In my own journey, I've found that web development
       | (using only the most vanilla subset of technologies) was a
       | relatively gentle way to get into programming. The syntax is
       | relatively forgiving, the building blocks are high level enough
       | to allow easy creation of interesting interactive things, the
       | built-in tooling in browsers nowadays are amazing and the tight
       | feedback loop is there.
       | 
       | YMMV
        
       | itronitron wrote:
       | Each of my children started coding through Minecraft and Scratch,
       | so I think that is a good path. I tend to let them pursue (or
       | not) their own interests so I just make resources available to
       | them.
       | 
       | It's worth emphasizing to your child the distinction between
       | 'technology exposure' tutorials, and creative work as children
       | tend to care more about making stuff and can find some tutorials
       | a bit tedious. Luckily there are some high quality tutorials out
       | there now, the mid-range and lower quality tutorials will just
       | frustrate them.
       | 
       | Related to that, I would advise you to not let them enroll in any
       | 'technology' classes in school as that will kill their interest
       | since the educators will likely be underwhelming.
       | 
       | Also, at a certain age, if you give them too much attention for
       | their interests they will stop pursuing it, so enjoy the next few
       | years :)
        
         | MyHypatia wrote:
         | Can you provide links of some of the high quality tutorials you
         | have found?
        
         | [deleted]
        
         | lmilcin wrote:
         | Electronics is my hobby and I am fortunate to have decently
         | equipped electronics lab all with a dedicated desk.
         | 
         | So I was pretty worried when he came asking to get him signed
         | up for a robotics class (3h every Saturday for couple of
         | months).
         | 
         | I already have some ideas how I want to introduce him to
         | robotics but I am not going to intervene here. Just made sure
         | he knows he can always come back and tell me he is no longer
         | interested in the classes and we will just cut it.
         | 
         | As to creative work, I figured out already it is better if I do
         | most of figuring out how to solve some problems (and let him
         | solve just enough to not get bored with it) and he is spending
         | time figuring out what kind of features we want in the games,
         | for example.
         | 
         | We then discuss what is and what is not feasible and how things
         | can be working and I still try to make sure he understands how
         | the program works.
         | 
         | I know he understands at least some of it because he can take
         | educated guesses at how to modify the program to change it to
         | do what he wants.
         | 
         | This seems to be really fun for him so I plan for it to stay
         | that way for some time.
        
       | tannhaeuser wrote:
       | Had very good experience using Python as first programming
       | language for 8-9 year-olds; professionally, I don't like it,
       | though.
       | 
       | And even though I prefer it over Python as a language, I had
       | disastrous results teaching Javascript to 12-14 year-olds for
       | light browser games. My intent was to bring kids with signs of
       | early stage addiction to mobiles "onto the other side", by
       | looking at games professionally and with creativity (as much as I
       | could, anyway). Turned out fiddling with async and rAF is really
       | a bad fit for learning basics.
        
       | chasd00 wrote:
       | The most success i've had with my 8 year old is building games in
       | Roblox and the LUA scripting that comes along with that. We also
       | have written some MicroPython to drive a small rover. With kids,
       | or my kids at least, you have to be able to show some tangible
       | results quickly or else they get bored. ...kind of like dealing
       | with your boss.
       | 
       | another thing that my 8 year old is really into that surprised me
       | is networks. Explaining how networks work and how he can start a
       | minecraft server for him and his brother to play but his school
       | friends can't because of the "firewall" has him on the edge of
       | his seat hah.
       | 
       | edit: i want to add that i don't bother with explaining
       | programming concepts like object-oriented design or algorithms
       | just very simple cause/effect. Then to simple if condition
       | effect. I get excited and end up overcommunicating and then
       | boring my kids, it's like trying to start a carbureted engine
       | without flooding it. You have to do give them just enough info to
       | get started and hope it catches.
        
       | ro_bit wrote:
       | > We plan to do some more complicated robots and also make our
       | own fun mods for Minecraft (as soon as I figure out how to hook
       | up Scratch to recent version of it).
       | 
       | You can't quite hook up Scratch itself to Minecraft (not that I
       | know of, at least), but if you want to use Minecraft as a
       | backbone for this kind of education, you might be interested in
       | Pneumaticcraft, which includes little programmable drones that
       | are programmed using a simple mockup of scratch
       | (https://www.curseforge.com/minecraft/mc-mods/pneumaticcraft-...)
       | or ComputerCraft, which tries to emulate shell scripting and lua
       | in particular (https://www.curseforge.com/minecraft/mc-mods/cc-
       | tweaked). In the future, if you wanted to teach him Java, you
       | could have him develop mods himself through the Spigot, Forge, or
       | Fabric modding APIs.
        
       | GraffitiTim wrote:
       | My daughter (who just turned 4) seemed like she might like
       | programming, so I started out having her "program" a stuffed
       | walrus, by telling it whether to go forward, backward, left, or
       | right to get to a piece of food. Her natural inclination was to
       | point to where it should go, so I first taught her that the
       | walrus doesn't understand pointing or the word "here", just the
       | directions.
       | 
       | Then we started "programming each other" by telling each other
       | where to go, and I introduced doing multiple steps at once (like
       | "step forward 5 times").
       | 
       | My goal wasn't literally to teach her to program, but just to
       | introduce that way of thinking, which is pretty different from
       | how we normally think in day-to-day life.
       | 
       | She was excited about it, so I got her the Osmo programming kit
       | for iPad. You program a little monster walking around, using
       | physical, scratch-style code blocks. She's been excited about
       | programming the monster every day, and is able to (sometimes) do
       | some short programs of a couple blocks.
       | 
       | If she learns a bit more, my plan is to show her how to program a
       | simple lego robot with scratch, like one that spins a flag when
       | it sees something pink. I love that idea because with 2 lines of
       | code you can make something really happen in the world, plus
       | she'll be able to come up with new ideas for the robot on her
       | own, and learn about the constraints, sensors, and eventually
       | more basic programming logic.
        
       | throwaway201103 wrote:
       | I got into programming at around middle-school age, with no
       | particular guidance from my parents beyond general encouragement.
       | 
       | I have three kids and none of them are interested in programming.
       | 
       | It's fine to support and encourage something your kids are
       | interested in, and to give them opportunities to try things and
       | discover those interests. But be careful you're not pushing them
       | into something just because you like it. Your kids are
       | independent human beings and may be interested in very different
       | things than you are, or that their siblings are.
        
       | ceautery wrote:
       | https://appsbykids.org/ is a hastily thrown together site showing
       | some of my work with kids.
       | 
       | I've been running volunteer computer clubs at schools my
       | daughters attend, pre-covid anyway. I've also run a summer
       | immersion program for basic software design principles using the
       | Scratch language for Girls Who Code. We've played with Adafruit
       | Circuit Playground dev boards, written a "choose your own
       | adventure" engine with Python, and added pixel graphics to some
       | simple Javascript games, where the kids drew animation frames in
       | a barely functional editor I wrote.
       | 
       | The first thing I'd call out is that 7 is really young. 5th grade
       | is the point where kids can start to "get it" beyond basic maze
       | problem solving things (e.g., code.org's Minecraft puzzle - hop
       | Alex around the creeper and into the house). Since you're a dev,
       | and he's enthused about it already, he can probably flex those
       | muscles a little early.
       | 
       | Beyond age, the complexity of what you're doing matters a lot.
       | Kids want to see something get on the screen right away, and they
       | want to make a code change that changes what it does. Building a
       | program from scratch is a chore, and something as simple to us as
       | nested if statements will throw them for a loop.
       | 
       | The most success I had was building a simple program without
       | them, and letting them experiment with changing values. That may
       | sound like cheating, but it gets the gears turning, and before
       | too long they're able to follow along with making a broader logic
       | change, and soon enough even following along with you adding a
       | new feature.
       | 
       | I was in a classroom setting with a bunch of kids, and they
       | tended to like being in small groups and comparing notes, or play
       | each others games.
       | 
       | Sideways thinking is important. For example, the main draw of
       | Circuit Playground is making the LEDs do things, but they also
       | have an accelerometer. A good exercise was figuring out how to
       | read the tilt position, and figure out which light was lowest,
       | and light up just that one. Instant fidget spinner. Building on
       | that, I threw them for a loop by using the same principle where
       | the tilt was input to a computer program. Suddenly the thing they
       | were programming before to flash lights was now a game
       | controller.
       | 
       | Keep it fun, let him screw around too long on things he builds
       | instead of learning software engineering at an "acceptable" rate.
       | He can learn fast, but complexity will probably be a struggle, so
       | growing slowly is just fine. Encourage him to explore concepts
       | from different angles.
       | 
       | Hope that helps.
        
       | skinner_ wrote:
       | I recommend Scratch and editor.p5js.org
       | 
       | My kid is 7. He can't really code alone, but he can do nontrivial
       | modifications to Scratch programs based on trial and error, he
       | can create very simple but visually interesting p5js apps like
       | this: https://editor.p5js.org/skinner/sketches/xjUwFm1pF , and he
       | enjoys a lot being the product designer when we create more
       | complex p5js apps like this:
       | https://editor.p5js.org/skinner/sketches/bPh8JRHrV .
        
       | etherio wrote:
       | I'm not close to being a father, but I can provide the experience
       | of having learned not that long ago
       | 
       | At first my dad put me a bit on CodeAcademy [0] which taught me
       | tons of basics but didn't really get me hooked.
       | 
       | What really got me into coding was by thinking of a way I could
       | use it to build something related to my interests or that would
       | be useful for me.
       | 
       | That seems to be what you're doing with the games by linking it
       | to something he's interested in so that's nice.
       | 
       | It can really be anything though, and you should try to show him
       | the enormous area of things he can do with coding.
       | 
       | In my case I wanted to do my english homework faster, so I tried
       | building a very simplistic program that could find literary
       | devices (metaphors, similes, alliteration) etc... in the
       | literature texts I had to study.
       | 
       | Also you should make sure you don't force it and that the passion
       | and interest comes from him, which seems to be the case with the
       | way he asked for books about coding.
       | 
       | [0]: https://www.codecademy.com/
        
         | lmilcin wrote:
         | Thanks for you point of view.
         | 
         | I pretty much figured out not forcing anything is rule #0 for
         | this project. I would rather be showing how we can have even
         | more fun using programming.
         | 
         | The scratch game we are working on has Minecraft graphics and
         | sounds on it and some of the rules derived from Minecraft.
         | Simple arcade game but suddenly much more interesting because
         | it has Minecraft element to it.
         | 
         | And instead of trying to force him to solve the problems I give
         | him about 2s before I suggest the answer to the problem. I
         | would rather want to spend time showing he can think of
         | anything he wants and we can make it work (well... most of
         | time).
        
       ___________________________________________________________________
       (page generated 2021-01-05 23:00 UTC)