120 comments

[ 3.1 ms ] story [ 198 ms ] thread
I wonder how much of the interest is natural vs. upbringing. I did not grow up around technology but I later on found it on my own (beginning of college) now I develop software for a living.

A friend of mine had a child recently was looking into this I also suggested scratch/this baby book on circuits.

Also curious the future of development I mean things take work to build but some YT channels hand wave it/make it seem easy. I guess with tools like co-pilot maybe NLP/STT/No Code will be faster/easier to make things.

I just have to recommend codecombat.com. I’ve been playing it with my 6/7 y old and we can now discuss the simplest concepts like «hey this is a repetitive task, looks like a loop to me». He thinks he’s «gaming» so he doesn’t even know he’s studying programming!

The biggest roadblock is that we’re non-native-english so there’s few resources that are age+language appropriate. Few programming languages have been translated! The only one I know about is Excel/VB.

I can think of nothing more discouraging than if my parents had attempted to encourage me to learn to code
Maybe you lack imagination.. I can think of a lot of things more discouraging than that.
I am not a father, but what I observe works best if the father (or mother) takes the hobby himself first. Kids really seem to be motivated to learn from parents, but you need to let them come to you, instead of you forcing them to learn something you are not interested doing yourself (even in small doses).
I'm a father and you're spot on. It's easy to project what you would like children to get into and just tell them to try it, but it's essential to show that you're into it as well (even -- and especially -- if you're not!)
If only I had had anyone in my extended family familiar with computers when I was a teenager.

But I'm not sure about programming before the age of ~13 or whenever something like algebra shows up in school.

"I'm going to need you to attach estimates to your JIRA tickets and join the scrum at 8:15, son"
12 year old me would have greatly appreciated it. Instead I had to wait until college to get exposed to actual programming lessons and assignments.
My experience was much different from yours then. I taught myself programming and when I got to college I found I was learning nothing new (in terms of practical software development) and dropped out after two years. Never looked back
Some links in the post would be useful.

Introducing my 6 year old to CodeAcademy is not something I would ever consider doing. I think the target audience is at least a decade older than that...

Botley the coding robot has been a fun introduction in my house. https://www.learningresources.com/media/botley/

As a child I really liked making games with Scirra Construct Classic. It was easy to make something playable in just one sitting. Sadly they abandoned it in favor of paid products (construct 2, 3). Today there is an alternative foss program GDevelop. But making web games is not as fun as making native windows games imo :)
I must be getting old and bitter but a career as a developer is not the first thing I would wish for my child. Perhaps something with a bit more fresh air?
There is a sharp distinction between learning to code and committing to a career as a developer.

Learning to code is a really useful skill in almost all employment opportunities where technology is involved.

And even then, would learning to code early bring anything? IMO for schoolchildren it's better to focus on math, sciences and other things school has to offer. Coding by itself is but a vocational skill.
Native language and math are the two most important skills we should teach to primary school students, 10h of language, reading, speaking, understanding is the basis of everything else. For math, anywhere between 5 to 10h, and remaining hours for geography /history/society /"world discovery" (basic of science)
> language[: ]reading, speaking, understanding

You forgot formulating - writing essays -: an absolute game changer, one of the most important exercises in primary schools (in some systems).

Writing essay before middle school might be difficult, although dictation is a must too. In France/Switzerland, it's not expected to write long text before middle school, but what I can see, in recent times, be it in math, French or others, kids just need to "fill in the blanks" or worse, check-boxes. They don't practice writing at all.
In nearby systems, at 5, 6 or 7 the pupils are (were?) to write some short paragraphs, even disconnected, about a topic; from there on, pages of well connected thoughts.

> be it in math, French or others, kids just need to "fill in the blanks" or worse, check-boxes

This is absolutely criminal in many ways: they will not get scholarized with that. In math, we had to show that we can find a solution and show the steps; in language, you have to exercise sound thought; in notions, you have to show not just that you have them, but that you can use them. The problems with citizens wasting parts of their formative years will be socially massive.

It's not about having the answers, it's about developing the skills... The answers /may/ reveal the skills.

Coding is generally useful - useful for the coder -, not "just a job".

(And «focus» does not mean neglecting the rest.)

I think it might provide some benefits to teach problem solving with code then. E.g. modelling some concepts from maths or physics in Python or something even simpler. Or demonstrating ideas with computer animation. Not sure how far we are with platforms that allow doing that without going too deep into how computers work.
> I think it might provide some benefits to teach problem solving with code then. E.g. modelling some concepts from maths or physics in Python or something even simpler.

That's what Logo offered starting back in the 60s. Exploring different problem domains with programs. Converting some kinds of math/geometry problems into computational problems with the turtle (and, later, turtle graphics on the screen). Language problems were similarly addressed, but most people just remember the graphical parts.

Programming helped me learn math. Implementing algorithms you learn about in class can be beneficial, and yes it's a vocational skill but allows you to do a lot of things for fun. Running a club? Want to help organize a 5k? Well now you're tech literate so you can run the websites.

Although I think woodworking would be a nice skill to teach kids too.

It seems you do not code in the open air, and you should change habits and perspective on that.

And for you and member otys nearby: learning to code is learning a skill - you build your own tools -, which like all things, the earlier it is learnt the better.

> the earlier it is learnt the better.

I'm not really sure how much this applies to coding really. There are things like music or drawing or handwork or mathematics where you can refine your skills indefinitely, and starting early does indeed help get your 10000 hours sooner. But in programming it seems to me there is only that much you can learn - and people normally grow their careers by acquiring domain knowledge and/or business skills, not refining their coding.

We use “coding” and “programming” and “computer science” in these contexts and sell the domain short.

Computational thinking and systems thinking are applicable to all aspects of life. The things taught in early coding activities are the building blocks of those domains.

You're right - IIRC building the pyramids required quite strong computational thinking for example.

Or the whole shipping container complex.

But coding is perhaps the purest manifestation of CS in all its glory where the feedback loop is tight and the scale of system can be borderline infinite for very little cost.

Exactly. So long as we do a good job making the connection to other domains, CS is an excellent learning tool for computational thinking and systems thinking.
It's for the purpose of making it natural; and there's no need to delay it.
I've met people who started coding when they were 6 and have now compounded all that experience as they've gotten older.

To me, programming is as much a skill to me as learning music or writing is.

Sure, in industry some domains are learned/appreciated with age but that's considerably easier to pick up once you've mastered the abstract skill of programming.

To draw analogy - composing for a genre/or emotion is a lot easier once you've mastered composition. Similarly, once you've mastered scales, arpeggios and rhythm becoming proficient in pop, jazz or classical will be comparatively painless.

There are many difficult programming domains that people can get pretty good at well before they reach adulthood. Game design can span logic, rules, systems, product, testing, performance, graphics and physics.

Compilers and programming languages can be grokked before uni too.

Crypto also provides a gateway to web and distributed systems.

Having met people who have compounded their life by learning programming XOR music (two skills I have personal experience going deep in) it is hard to comprehend how vast the difference becomes until you've seen it firsthand.

At the extremes you have mozarts who compose from age 5. But even less extreme you have people like Zuckerberg or lexi-lambda building impressive programs by adolescence or Justin Biebers making music around 12.

In any case, I'm also pretty confident domain acquisition can start young given that I've met people who were trading from young teens.

Ultimately, school curriculums and age-based learning doesn't cater to individuals and can be artificially limiting of potential. Everything I've seen suggests that coding can be acquired from a very young age and then frees the individual up to learn all the ancillary bits as they grow up.

What's unusual is we live in a time where there exists a vocational profession that pays well and isn't locked down by accreditation. (compare that with law and medicine for example)

> It seems you do not code in the open air, and you should change habits and perspective on that.

Not the OP, but when I started coding this morning, the temperature of "open air" was 4°C. Now it's 10°C. Still, typing (without mittens) would be hard on the body. Some jobs are inherently more in the "open air" and much less static.

Have you considered coding at a beach front paradise in a developing country with questionable human rights issues? It's all the rage these days.
Was that meant to be a joke? You do not need a "beach front paradise" to be "in the open air", the point is in the novel and healthy environment; it's hard to find a Country without open air - even Singapore can provide, and in Monaco you can see body-mind education classes in the flower garden; "questionability", I can hardly find times in which the "kings" wore less revealing garments - and how is such political address relevant; the core administration of these territory "may be" "outstandingly" "questionable", yet I am in the open air operating some emergent miracle of engineering...

«It's all the rage», but mind you: not here. There's no human presence to bring it.

I'd argue that on the 4 degree days, programmers get the long end of the stick.
I can tell you from experience that 10°C with the right clothing and context and weather conditions can be plenty.

Example: right now, here.

Programming only feels like vocational training because not everybody can do it. There was a time where writing wasn't a ubiquitous skill either, you'd actually have to hire someone to write something down for you.

Coding is a life skill, since most of us will need to use a computer for work in some capacity, what's the downside to teaching kids how to actually use it?

> Coding is a life skill, since most of us will need to use a computer for work in some capacity

There might have been good reasons to believe this 20 years ago, but today's computer users may not even know (and not need to know) where their files are located in a file system or whether they are on their local disk at all. I think we are at a point where you can use a computer without knowing pretty much anything besides what UI designers choose to present you.

I code, and I'm not a developer. In fact, coding liberates me from dealing with software development. The programs I write typically only have to work once, for one user (me), and so are much easier to write than real software.
For younger children, there is a set of really clever physical / digitally-assited games from Osmo [1] which include a coding-based game. They work by redirecting an iPad's camera with a mirror, thus allowing interaction between physical objects in front of the iPad (such as drawings and small plastic chips) and the software.

In the coding game, you get a set of magnetic command bricks (walk, jump, grab) with modifiers (number for length, direction) as well as a loop meta-brick.

It works amazingly well and teaches a lot of elementary reasoning skills to younger children.

[edit] I should have mentioned: I have two girls and they both like it, so that's my N=2 positive experience.

[1] https://www.playosmo.com/en/

shouldn't Gcompris be included because it introduces kids of all ages to a variety of activities, stuff that stimulate the mind. i think if a kid gets hang of gcompris, scratch would look much more "natural" than just plopping scratch without back history.
I look at the self directed learning resources kids have today and am jealous. How many of us have brute forced computers and the abstractions within by hammering MSDOS, all of its weird nooks and crannies with no one to explain anything.

I don’t know what I’d do if I could just YouTube any topic and get a meaningful answer 30 years ago, it could be incredible? Would have made things faster but maybe that’s not the point? I’ll find out I guess with my son, it will be interesting.

I wonder the exact same thing. My parents bought me a book on turbo c++ in the early-90s because I was interested in programming. I had no idea what to make of it. No context. It wasn't engaging for me. What I really wanted to learn was turbo pascal, so that I could make some cool "BBS stuff.". In the absence of any significant resources or mentoring, my curiosity died on the vine.

It's far more frequent, now, to come across people in their early 20s who have been programming since early childhood. The resources are in far greater abundance and the opportunities continue to increase.

Yeah, it's insane how quickly this changed. I'm 33 and I started programming as a child and that's very unusual in my age group/a bit older. I had a father who knew BASIC, the official HTML, CSS, and JS documentation, and a lot of unsupervised computer time.

It's amazing how many variables had to align to make my early experience possible versus what kids grow up with normal access to now.

youtube and an interest.

My two kids self learn all sorts of interesting skills via youtube videos... obviously I keep an eye on their sources and content but to date its been a fantastic tool for them. My 13 yr son is churning out c# in unity for game making. Entirely self taught.

My daughter is learning drawing skills and is doing quite well.

pro parenting tip: make the google account for your kids, and then subtly choose what they subscribe to (and unsubscribe) without letting them know. its a great way to guide their way through the cesspit that you tube can be (oh and a premium subscription is a must, or they get inundated with horrendous adverts)

That's how I learned programming as a kid, but substitute YouTube with Google. There are a lot of great free learning resources on the internet.

(if you just want to get rid of ads you can use ublock origin instead of buying premium if you are just concerned about ads)

I use pihole but I need the no ads on their mobile devices as well and a few other features i get with premium.
I've got a 5 yo (and a 3 yo)... These resources seem to be for older children. Any recommendation for young kids? I've had good success with constructing things (legos etc).
Two options that I’ve come across are codemonkey and mit’s scratch. They don’t go too far into the complexities of coding but do appear to bring things down to a level practical for young children.
Since they like Lego, could you get them into Roblox or Minecraft? MC you can teach them some basic comp sci/computer/tech things using red stone, and there's a peaceful option if you/your kids aren't into fighting in the game. I haven't used Roblox personally.

Another option is if you play games at all, introduce your kids to mods. At that age, I played video games with my dad/watched him and doing things like silly graphics mod replacements (turn Mario's sprite into the poop emoji!) help instill the concept that tech is built out of systems and components that you can change to get the results you want. It's just that since they're 3 and 5, what they want is likely to be quite silly.

Wow, awesome suggestions in this subthread. Yes, definitely Lego (imho) is a sure way to get your kids to deepen the thought process involved in playing. I remembered many times as a kid when I had to get creative because I wanted to build something different or simply just because I was missing a specific kind of part. Awesome times.
While I've done a bit of Scratch with the 5yo on my lap providing creative input, at this age I mostly prefer screen-free activities that teach programming/computing concepts.

A few things we've done are Exploding Dots Machines [0] and stories about functions and boolean logic. [1] Peter Rowlett tweeted about a little sorting algorithm activity he did with his 6yo, which I've been meaning to try. [2]

Another idea I want to do sometime is a "Robot Mommy" game where the kids give me instructions and I interpret them super-literally (kind of like those "how to make a PBJ" games). I can see this one going in a lot of different directions, but I'm thinking to start by being a human Logo turtle and let them control my steps and turns.

I'm always on the look-out for more of this kind of thing, if anyone has any suggestions or recommendation!

[0] https://bancosparenting.wordpress.com/2021/07/14/exploding-d... [1] https://bancosparenting.wordpress.com/2021/05/08/pickle-and-... [2] https://twitter.com/peterrowlett/status/1479857933202739209

Scratch jr on the iPad is ok for a 5 year old and the 3 year old may enjoy watching on - perhaps watch a really short tutorial together (or to see what to do yourself, then show them)
Game Builder Garage on the Nintendo Switch is great.

It's a really flexible sandbox that can be used to make decent-looking little minigames (both 2D and 3D). Really nice tutorials and puzzles. It's a great introduction to modern game programming concepts like entity-component systems and 3D geometry.

Downsides:

- It's purely visual programming with no useful abstraction or reuse mechanisms, so you rapidly hit the limits when trying to build complex logic (although there's a community of players who enjoy working around the limitations in creative ways).

- The tutorials are really verbose, with lots of banter among the different characters (very much like a console RPG), so children who aren't strong readers will find it difficult to follow.

I've sat twice in the last month with my 9 year old to start making simple games with Scratch following a book someone got him for Xmas (Coding Games in Scratch by Jon Woodcock).

So far it's going pretty well, the concept introduction and presentation seems well done and paced. He understands what we are doing and how it's done and naturally experiments by changing parameters and graphics. So he's learning and we are having some fun times.

I have not any special desire nor dislike about him becoming a full on programmer, but I keep seeing people around me in all kind of jobs that would be quite better off if they faced some of their tasks with a bit of a "programmer's stance" or could even write simple small scripts to automate stupid chores.

Or even use a spreadsheet well. I think any professional person’s job would be made easier with some knowledge of programming.
Can you tell me what sort of "workspace" you use when working with your child?

I have a 7yo that is starting to show interest in technology, and I'd like to do some visual scripting with her. I have laptops and raspberry pis (though no dedicated monitor for a pi), and she has a chromebook from school that may or may not allow application installations.

Do you sit side-by-side? Who drives? Those are the sort of details I'm curious about.

When we sit together on a laptop someone seems always frustrated by screen angle or lack of control, and that friction is something I want to minimize as much as possible.

7 can be a bit early, so recognize that your sessions may need to be fairly short.

I'd suggest you each have a laptop so you're not constantly stealing the control to demonstrate. When I'm teaching my kids on a laptop specifically, if there's only one laptop it always feels like I'm removing autonomy when I take the laptop from them. ("No, you need to click the touchpad like this, then hold them like this" and "oh, hm, i forget where in the navigation that feature is, give me the laptop.")

It breaks the flow and encourages them to mentally coast ("if i struggle, dad will take the laptop and do the heavy lifting for me").

Thank you. Dual laptops is exactly the sort of advice I was asking for, and I wouldn't have thought to do that.
When I started with my twins at 7, we did a scratch tutorial and I drove, and typed. We watched the tutorial on YouTube on the tv, we’d pause, then I’d type and try it.

This was to make it easy to get through a whole tutorial and remove barriers to entry. Then after they enjoyed that, I’d sit at a desktop with them while they drove and help them switch from tutorial to scratch.

Then when we wanted to do something non tutorial based I drove first while we made up what to do - then they were able to start doing it themselves.

Now they’re so into it we got them double monitors so they can easily watch tutorials alongside implementing (or like my own process make notes on one screen, implement on the others).

You can use the Scratch website on a Chromebook assuming that the school hasn't blocked it. I'd recommend using the website and not installing the desktop version. We use Chromebooks at the Code Club at our local library.

I would definitely let the child 'drive' and I would possibly sit nearby at the start but very much take a back seat as much as possible. I haven't investigated it properly myself yet, but in your situation I would look at Code Club World: https://codeclubworld.org/

At the Code Club we used these resources: https://projects.raspberrypi.org/en/codeclub though it depends how good your child is at reading. We start Code Club with 8 year olds I think for that reason as well as the ability to follow instructions semi-independently, but some younger children are fine and if they have one-to-one help that sort of thing is less of an issue.

Why would anyone want their children to learn how to code? Sincerely. Why?

I rather have my kids play outside, enjoy the nature and our beautiful planet.

This is, of course, a projection of my dissatisfaction with the industry as a whole, but I think it's still valid.

I’m teaching my nieces how to code because it’s what I’m good at and I like spending time with them

If I lived in the same part of the world as them, I’d definitely be playing with them outside too :)

I think your comment is valid. I have thought about this too, and I think the reasoning is as follows. Teaching kids to code empowers them to think differently about the world. Rather than navigating this technological this world as an end user, coding gives them a glance into the behind the scenes stuff and thus allows them to contribute to the evolution of this world.

But your right. IMHO Nothing beats a hike in the woods, or better yet learning to build something from raw materials found in the woods (which in turn could have the same effect).

You talking about having coding replace outside time.

However, if you look at where most kids spend their time, a lot of it would be in front of the TV or watching online videos or playing games.

I think the people who want kids to code, want coding time as a replacement for watching mindless videos, not as a replacement for outdoor time.

So your kid plays outside and then comes in and instead of watching another toy unboxing video, codes up a simple game they can play by themselves or with their friends.

This is pretty accurate. As a parent, offsetting your kids use or involvement with a particular activity tends to only work if you provide them with an equally interesting alternative.

Simply telling your kid to limit their use of a device only goes so far.

I don't think these 2 things are mutually exclusive. I can teach my children to code for a couple of hours on Saturday and Sunday morning, while they get to play outside in the afternoon.
Why would anyome want their children to learn to read or write or play an instrument?
No reason why kids can't do both.

My four year old said she wanted to make a game with me because she loves games (and dad's a programmer). So I started a project in Scratch and told her a little about the blocks and we got something moving on the screen in an afternoon.

It was magical for her to have an idea and see it come to life, just a little bit, on the screen. Yes, I'm doing 95% of the work and I know most of the programming concepts are lost on her, but even if she's picking up a tiny bit of logic it's worth doing with your kids if they're interested. It still feels like quality bonding time.

I touched grass frequently as a kid and still learned BASIC on my Commodore (and later TI-99/4A).

I don't think kids, in general, should be learning to code. Most of them will hate it. But to some, coding is like piano, ballet, or painting: a form of art and of play. Those kids will need resources the most; and they need to enjoy their time spent programming while childhood lasts.

Why would you encourage your kids to learn to code? Do you not like them?

But seriously; I'm not planning to teach my kid to code unless he is really interested in it by himself. I rather have him play outside.

This is not just a false dichotomy. This is a false dichotomy the size of an aircraft carrier.
Sort of. My kids love to play outside. They didn't have tablets and didn't use the computer. A great regret I have now is that during the pandemic we eventually let them play with iPads and got them Minecraft on a donated xbox. We've had to limit their use considerably, but it's still an unfair competition. Learning, exploring, playing outside offers gratification in a different way. On Minecraft he turns it on and 20 seconds later they're in this wonderful magical world where he is some sort of superhero. Imagine if they also had twenty other games to choose from? I really regret letting the genie out of the box. Wish I had waited some years more. Now their time is quite limited, but they've felt how instantly gratifying it is, and are always asking for it, whereas before, they just asked to go swimming, or take a walk in the woods, or build legos, or a dozen other awesome activities.

edit: just to add, they still do lots of outside stuff, but it's not like before.

Every kid is different and I try to never second-guess others' parenting style.

Rules and limits are important and I agree the screen offers quicker gratification, so we as parents must set and enforce those rules.

That said, this changes the subject a bit, as we were talking about learning to code.

That's empathically not an instant gratification and we should not equate time spent in front of screen with time spent learning, expanding understanding of logic, cause and effect, structure, etc. And while kids are happy to spend hours gaming, I haven't seen many (in my social circle) that would be happy spending hours debugging some Python, Lua or Sketch code.

You're right, the example I gave is different from coding. I did change the subject a bit, sorry for that. By the way, my kids do some Micro:Bit programming whenever they want, and I chose not to force them into it, as in not having a structured 'learn block coding with dad' hour. If they want to do something with their Micro:Bit, they power up the computer and do it, for as long or little as they want. If they want my help, I'll help, and that's it.
There is a finite amount of time to do stuff (per day, say) so it's a time-wise zero-sum: any time spent programming reduces time spent doing something else.

Presumably the alternative to teaching them programming, is spending time with them some other way.

It's less of one than it first appears, because time isn't infinite and free time especially isn't. If you're doing one thing in that limited window of free play, then you're not doing some other thing.
Why can't they play outside and learn to code? Does it have to be 100% of the time for any of those two options?
Yes they can. That's why I said "unless he is interested on his own". I believe many parents are so set on "preparing their children for the future" that they forget about "now" and force their children to become adults too early. Children can learn programming or other skills later but playing with toys or outside is almost exclusively enjoyed in childhood. I don't want my child to miss out on them.
I understand your point.

By saying "teach my kids to code", I don't imply "forcing my kids" into it. Just introducing, letting them experience and know it exists, what it's for, how it works.

If I don't expose them to coding, how could I ever know they're interested or not?

A tangent:

The two generations before mine worried too much about letting children "just play". Life was too tough on them when they were kids. And they went to the opposite extreme: made life too soft for me as a kid.

I grew up with a completely wrong vision of life and the world. I entered youth totally unprepared. It's anectodal and I bet there are people who had a too soft childhood with only play and managed it differently, but I'm going to find a better balance for my kids as they grow.

I want to smoothly and gently introduce pieces of adulthood to them, so that when they reach maturity, they're better prepared to be happier, more confident and independent.

I agree with most of what you said.

> If I don't expose them to coding, how could I ever know they're interested or not?

About this one; programming nowadays is not some obscure niche thing that it's impossible to come by unless introduced by someone else. I started my programming career (being paid to do) when I was a teenager. There was no-one using computers around me let alone knowing what programming is to introduce it to me. I believe nowadays everyone in a somewhat developed or developing country will have the opportunity to choose whether to learn coding or not.

I think this might be less true than you think. As opposed to the past, computing devices are ubiquitous yet extremely consumption oriented.

There is no obvious way an avid user of an iPhone or iPad might be exposed to anything resembling programming without seeking it out.

The same is more or less true with desktop os

Yep. And that's also true on Android devices (though getting into a programming environment is often easier, or historically was easier, on them than with iOS/iPadOS devices). It's getting easier on iPadOS with Swift Playground (which has been around for a few years now) and other apps, but you still have to know about it and download it.

In the 70s/80s home computers dropped you into a programming environment immediately or a programming-like environment (the shell or command prompt). In the 90s this was less true, but it still wasn't a huge distance from launching to accessing a programming environment (and on Linux and BSDs you still typically started in the shell). In the 00s and 10s, on macOS/Windows/Linux you can still get to a programming environment or shell easily enough (and macOS and Linux generally come with a basic suite of programming tools like compilers and interpreters), but the "distance" for the user has been increasing. If you want even some common tools you have to download them instead of having them immediately available, or in macOS you have to know that there is a terminal which provides better access to the supplied development tools.

Mobile devices have always been behind on this, but they've become an increasingly common first computer for many which skews the relationship that people have with computers away from seeing them as tools to manipulate (via programming and scripts) to appliances. They have more in common with embedded systems like the Tivo or video game consoles than with PCs, providing users with a preset script on how to use them and not the more open-ended model of PCs.

I was talking mostly about the desktop space. My experience is from more or less the current generation of desktop OSes (GUIs as default etc.).
>Children can learn programming or other skills later but playing with toys

Not debating you but I find it interesting how both your comments _differentiates_ "learn programming" vs "playing with toys".

When I learned coding at age 11, "programming a computer" _was_ "playing with a toy". Programming wasn't an "adult" job that grownups did. Instead, programming was like playing a music instrument or painting art with brushes.

That said, I agree that not all kids exposed to programming will think of it as play.

Same for me when I was first learning. I just wanted to get to whatever version of BASIC we had (I have no recollection now what specifically it was, but I asked my dad and he showed me how to use the DOS prompt) so I could make pictures like they did in my math textbook (end of chapters had lessons on BASIC and programming). Making pretty pictures was play, and then simple games (a hobby I continued with to pass the time in science classes in high school with my TI-85/86). And at some point in middle school I realized I could use these programs to solve problems and started doing that, too.

Just like there's recreational mathematics, a lot of programming can be "recreational", something for play not for "serious" work (even if it happens that the serious bits follow from the play).

I theory yes. In practice with kids, the iPad/laptop is much easier to get enjoyment out of and kids inevitably end up choosing it over going outside.
That's why you establish rules and remove the choice. They're kids, you get to do that. No tech until homework is done and the sun has set, barring bad weather days. More screen time available on the weekend. You can also set screen time limits in the OS now, which makes this easier than 33 years ago when I had my first NES (which was only limited because my mother wasn't working for a few years and kicked us out of the house, also we liked running around the neighborhood and town).
I played outside, and learned to code. Still do both. But I do appreciate the caution. It seems like kids have less spare time today. Don't know if it's because schoolwork is more intense (it seems to be) or we push more activities on them (yeah, probably guilty). Or both.
Because people see their children as extensions of themselves, instead of individuals. There's a good amount of research connecting ADHD-type personalities with insufficient rough-and-tumble play in earlier years.
As far as I'm aware, programming has been my favorite toy since age ~13. Of course the kid is not being forced, I interpret this as "hey kid, does this sound interesting?"

Exposure to things is key.

How is he going to know he's interested in an abstract concept like coding if you don't introduce him to it?
Seriously, I’m keeping my kid away from screens and phones for as long as possible in this society. I estimate I can atleast get to 4-5 years of age before having to use a computer becomes somewhat inevitable.
Yes it's the same for us. He's 3 something now and his only interaction with screens is for calling the grandparents because they are at 2 days driving distance. We don't hide screens from him tho; I think that also contributes to him not being interested in screens too much.
We did that with my son. He was probably five or six when we went to visit his cousins and they were all laying on the floor playing with their portable game devices (whatever they called GameBoy's back then). He didn't have one, so he picked up a travel chessboard that was about the same size as their devices and laid down next to them and stared at the chessboard the way they were staring at their devices and pretending he was playing a video game on it.

Yeah, we bought him a nintendo whatever-they-were-called when we got home.

Our kids enjoy the Python 101 in Minecraft Educational Edition. They are familiar with the game, and Python is reasonably kids friendly. Installation was a hassle at home, having to create some special Microsoft account and 12$/year subscription (and not a school/teachers/student version)

At school they teach Scratch and Blockly.

https://education.minecraft.net/en-us/resources/computer-sci...

If your kid is the curious kind who always loves a good puzzle, I would highly recommend you buy him/her Baba Is You on Steam https://store.steampowered.com/app/736260/Baba_Is_You/.

The game is odd but in a cute and charming way; it heavily incentivizes logical and out of the box thinking without looking as dry and austere as real programming; it is challenging, but with a well adjusted difficulty curve; and all in all it is a very fun game, whatever your age.

I bought it for my sister (around 10) and she's had a blast! I don't think she's particularly interested into getting into programming, but I think any children growing up to be programmers would reflect fondly on this game.

It’s also on the iOS App Store
I would suggest, at least as a partial alternative, ‘rube goldberg’ style toys like marble coasters (kugelbahn) or something like Boomtrix.

These allow you to create relatively complex systems with emerging constraints and they often need to be debugged. In the case of Boomtrix, the system starts to degrade with use because the trampolines may move as the balls bounce. This need for adjustment and/or tolerance in design informs more physical sciences as well.

Thinking back on why I wanted to code, it was

- Entertainment. My computer did not have games, so coding was the next closest thing. Type in a game from a magazine, or make a lookalike game.

- Showing off to peers. It was fun to show off to friends what we coded up. Where we grew up it was a thing to make paint programs. UI state management, the trick with XORing lines until ready to paint it in.

- More entertainment. Later when computers got better and had more games, it was fun to pirate and crack them. And again share with friends.

Partly the problem with today is that there is so much easily available entertainment that you hardly need to do anything to fill your time with games and videos and then some. But, the peer factor is still there where you can show off a custom Roblox or Scratch game or something. So the trick is to find that peer group for your kids. How do you all deal with this?

I have huge FOMO living where we live that all the neighbors are going to be jock types that won't be such a peer group. And it's not exactly like you can go interviewing potential neighbors/students in the local school before you move some place - instead I'm in a situation where I will just need to move and cross my fingers.

I was thinking of using some kind of meetup site like nextdoor or facebook groups or something in a local radius to put together a crafting group where nerd-minded kids would meet maybe once or twice a week in our garages and we would leave them hands-off with a bunch of tools, supplies, and computers and just be around to answer questions. I wish there was a makerspace near our town because those seem like exactly the kind of environment I would like to foster.

> So the trick is to find that peer group for your kids. How do you all deal with this?

This really was the key for my development into using the computer as a tool instead of as a device for consumption. Some very nice, and patient, developers on IRC took me under their collective wing at about 12. A few years later I was freelancing for several of them.

These experiences greatly changed the way I approach life, problems, and learning. I am forever grateful for those people and attempt to emulate their attitude and decorum when I am helping others learn.