this post was submitted on 11 Mar 2024
46 points (97.9% liked)

Programming

17666 readers
563 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

Hi all,

A fair while ago I asked the community here advice as my 8yo lad wanted to experiment with programming: Old Post.

Thanks so much for all the words of wisdom - there’s still stuff we can explore in the replies.

Thought I’d just give a little update.

So I installed dual boot Linux Mint / OSX on an old intel MacBook Air (dual boot in case his homework/school stuff needs it, but he hasn’t used OSX much!).

It was much easier than I thought it’d be. Perhaps it’s just the hardware/OS choice, but I don’t consider myself to be ‘properly’ technical and it was a breeze. Perhaps the only difficult part was creating a bootable OSX restore disk just in case I destroyed the OS… it’s almost like Mac really don’t want you to be doing this.

He’s working his way through foundational courses on programming, in codeacademy, and using scratch as usual. So far, so good.

Is there an IDE you’d recommend that has some element of a tutorial to it?

all 23 comments
sorted by: hot top controversial new old
[–] [email protected] 14 points 9 months ago (1 children)

I wanted to mention VSCodium as an alternative to VSCode, from their website "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft’s editor VS Code."

Basically it just removes telemetry/tracking.

[–] [email protected] 8 points 9 months ago* (last edited 9 months ago) (2 children)

I feel a lot of advice here is trying to push the learning envelope without considering fun & the learning experience. This is for an 8 yr old, and I'm seeing suggestions that would seriously challenge high schoolers, college students, and even some software engineers in industry I've encountered.

For the software aspects of programming, I would suggest looking at programming(-esque) games and web browser programming environments. Here's a solid short list, vaguely sorted from "proramming-esque" to "actual programming":

  • https://upperstory.com/turingtumble/ - A physical algorithmic marble and lever puzzle "board game". Great (and designed for?) for kids. Not programming.
  • Factorio - A factory-building game that "feels" a lot like software development. Not programming.
  • Opus Magnum - mechanical puzzle game by Zachtronics, build algorithmic "molecule-building machines". Not programming.
  • - varies from "not-programming" to "contains programming". Can get pretty difficult sometimes.
  • Human Resource Machine - Programming puzzle game using assembly-like language. Later stages are challenging.
  • 7 Billion Humans - "sequel" to Human Resource Machine, more featureful language, has concurrency and randomness. Later stages are challenging.
  • https://www.hedycode.com/ - An innovative learning programming lang and "levels" method that makes Scratch primitive by comparison. Has free online lesson plan & environment. Hedy level 18 is vanilla Python.
  • https://www.codecademy.com/ - you said you're using this already

Suggestions to go physical tinkering with electronics is good, but I'm unable to make good suggestions there.

A real computer and coding environment/shell could be good for system admin skills, but the learning curve is steep. You'll also have to be okay with letting him accidentally brick the computer (best way to learn!).

[–] cafuneandchill 4 points 9 months ago

This is very true; if it's not fun, why bother. Granted, fun is subjective, but the point stands, I think

If the kid wants to make games, I would suggest fantasy consoles, aka things like PICO-8, TIC-80, etc. Dunno how easy it would be to be at this stage, though

[–] foofiepie 3 points 9 months ago

Amazing thanks so much. Yes, structured ‘play’ might be just what he’s after. He can then tinker in an IDE - I did wonder if anyone had built one for kids specifically.

I can teach him a bit of CLI / Shell and I’m ok if he bricks the computer, hence the choice of OS. Super easy for me to nuke and start again.

I’ll be checking these out.

[–] [email protected] 7 points 9 months ago (1 children)

My advice: make sure he has other interests and socializes.

I was obsessed with coding from age 7, and now wish I had spent that time otherwise, more being a "normal" kid and less time sitting alone giving orders to a damned computer. Once I reached my mid-twenties the joy died in the realities of the job market, and now I can't even think about that crap anymore.

You know what I enjoy now? Playing a guitar. Didn't start until age 30, and it was like a revelation.

Sorry I didn't answer your question. I still think any parent who wants to "get their child started" on something early should heed my advice and experience. I am for real a walking, talking (sometimes) warning.

[–] foofiepie 8 points 9 months ago

Hah yes we try and ‘balance’ it all. He’s a voracious reader, loves his rugby and we try and get out of the house as much as possible when it’s not continuously raining, thanks Britain.

[–] [email protected] 7 points 9 months ago* (last edited 9 months ago)

You can't go wrong with Visual Studio Code (AKA VSCode). It's easy to pick up on, there are some pretty neat extensions and it works for seveal languages.

However there are IDEs specific to some languages, like PyCharm for python. While they usually have some cool features, your child will probably not need to use them.

Good luck :)

[–] [email protected] 5 points 9 months ago

For IDE, VSCode is the usual recommendation. Some of the plugins really help making code readable and digestible.

[–] [email protected] 5 points 9 months ago

Kinda a neat utility for kids. I thought it was kinda neat when I used it as a kid.

https://scratch.mit.edu/parents/

[–] [email protected] 4 points 9 months ago* (last edited 9 months ago) (1 children)

Assuming your 8 year old wants to write a game (who doesn't?!), I recommend grabbing a free copy of Pyxel.

Pyxel games are coded in Python, and has opinionated libraries for building games. It comes with a built-in sprite editor, map editor, and music editor.

The Pyxel tutorial ecosystem isn't as mature as Scratch, or Microsoft's Code.org, but it's a strong next step for a kid who wants a bit more power from their code.

You can also host the games your 8 year old ceates on a static website, or in other easy sharing forms, if you're so inclined.

The only thing Pyxel doesn't include is a code editor. I heartily endorse the previous recommendations for VSCode or VSCodium.

While I'm a die-hard fan of Codium, doing the extra work to find plugins outside the Microsoft ecosystem, or point Codium into the Microsoft plugin ecosystem, probably isn't the best use of your or your 8 year old's time. But if you're particularly privacy minded, you can easily use the Microsoft plugin ecosystem within Codium, by searching the Codium wiki pages for the two files that need modified.

I would definitely encourage finding and using the Microsoft published VSCode/VSCodium Python plugin pack, to support your 8 year old's learning journey, if you go this route.

[–] foofiepie 3 points 9 months ago

He currently really likes locally copying people’s games from Scratch and modifying them in funny ways which he calls ‘hacking’ lol. He’s having fun so I’m happy for him to do what he likes so long as it’s age appropriate.

[–] [email protected] 3 points 9 months ago* (last edited 9 months ago)

Vscode and vscodium have already been recommended.
Its not an ide by itself. Its a highly extensible text editor, and its very mainstream. The extensions can turn it into an IDE. And there is a huge community around it.

Its worth searching for things like "vscode recommended python extensions" and making sure they make sense, then installing them via the vscode extensions.

You can have different extensions for different workspaces. So you can have a web workspace, a python workspace, a platformio workspace etc.

I use vscode as my main editor/ide

[–] abhibeckert 1 points 9 months ago* (last edited 9 months ago) (3 children)

Perhaps the only difficult part was creating a bootable OSX restore disk just in case I destroyed the OS… it’s almost like Mac really don’t want you to be doing this.

Um, yeah, they really don't want you to be doing that. Creating the recovery disk was probably a waste of time and I recommend erasing the disk and doing something more useful with it (give it to your kid as a backup disk or something).

Your Mac has "recovery mode" in the firmware, it will often boot into recovery automatically if there's something wrong with your boot disk, or you can manually trigger it by holding down certain keys at boot time.

Back on topic:

I recommend teaching your kid how to develop "inside a container" with Visual Studio Code and Docker: https://code.visualstudio.com/docs/devcontainers/containers

It's a bit of a steep learning curve - you're going to have to learn it yourself and help him at first, but it will save your kid so much time in the long run and will allow more freedom to experiment and potentially mess things up. When you install software inside a container, and mess it up, you can restart from scratch (or even better, go back to how it was a few days ago) in a few seconds.

I also recommend buying your kid a ChatGPT 4 subscription - so he can ask questions like this and get answers a thousand times faster than with a Google search:

Finally - teach your kid how to use Git. https://git-scm.com/ See the list of companies using git at the bottom of that webpage? The list would literally be shorter if they made a list of companies that don't use git... I bet there isn't a single large company that you've heard of, anywhere in the world, that does not use Git.

Your kid needs to learn git too and the younger he learns it the better. My number one pet peeve about our current schooling system is almost no schools teach git - it should be taught in grade school. Right after "this is how you type".

Visual Studio Code has built in Git support as a client. It's usually combined with git running on a server but you don't need that yet - just teach him how to use Git on his own computer (and make sure you have backups of all his work). Git does two things:

Git is primarily a tool to help multiple people work together... and your kid doesn't need that right now. However the way Git achieves that goal is by making sure the work is nicely organised and split into small units of work (a bit like climbing up a mountain is split into thousands of individual steps... climbing the mountain is hard, each step is easy, climbing the mountain without taking small steps is impossible).

Writing good software, without using git or a tool like git* is impossible. Like trying to jump to the top of a mountain.

(*) Git belongs to a category of tools known as "Source Control Management", and there used to be many different tools with plenty of heated arguments over which one to use. But that's largely over now, git has all of the features anyone could need, it's free, and everyone else in the industry also uses it which it's main selling point.


Lots of great advice here on using VSCodium instead of VSCode... and while it's great that community / open alternatives like that exist, I think it's better if you stick to the app that is supported by Microsoft. It's going to be easier, those open source alternatives have a few rough edges which your kid could easily get stuck on.

By the same token, I personally would avoid using Linux Mint. Install VSCode on the Mac, install Docker on the Mac, and then run Linux inside Docker. You will still have a fully functional Linux install, but it will only be command line Linux, which is the Linux that 99.99% of developers actually use in the real world. 96% of the internet runs on Linux. 4% of desktops/laptops run Linux.

Everyone chooses Linux on the server because it's the best software for the job. Almost nobody chooses Linux on the desktop because it's not the best software for that job. Linux inside Docker on a Mac is using Linux the way almost everyone in the world uses it. You are going to have problems if you use Linux - for example that tutorial above showing how to use VS Code and Containers? It has instructions for Windows/Mac/Linux... but the Linux one includes a warning that it's not compatible with the standard method of installing Docker on the most popular version of Linux. You don't want to deal with that stuff.

MacOS is really popular for developers. So popular that all of the Visual Studio Code screenshots on their Containers tutorial are with a Mac... even though the team that crated the tutorial are Microsoft employees. When you're starting out, it's best to what everyone else is doing, so you can ask for help and find lots of people who know how to fix it.

[–] [email protected] 4 points 9 months ago* (last edited 9 months ago)

Disagree with Docker and git at this stage of learning. This is an 8yr old playing with scratch, Minecraft, and early levels of CodeAcademy.

The answer to "not dealing with environment" isn't Docker, it's a programming(-esque) game or an in-browser environment.

[–] [email protected] 1 points 9 months ago

Not to disagree with your point about learning git, but you might be interested to know that "all large companies use git" isn't actually exactly true - Facebook/Meta, one of the largest tech companies, uses mercurial: https://graphite.dev/blog/why-facebook-doesnt-use-git

[–] foofiepie 1 points 9 months ago

Your Mac has "recovery mode" in the firmware, it will often boot into recovery automatically if there's something wrong with your boot disk

Oh really? Agh I just assumed incorrectly then. Thanks.

Thanks for the ‘more realistic’ intro to dev. I will be showing him CLI. And I think these are good steps. First though I want to give him the opportunity to learn the ‘thinking/design/problem-solving’ element of programming.

Great suggestions. I’m tempted to get a Chat GPT sub myself.

[–] [email protected] 1 points 9 months ago (2 children)

Neovim and language servers tbh

[–] ibasaw 2 points 9 months ago* (last edited 9 months ago)

I thought about vim tutor when OP mentioned tutorial

Also, it's much much easier to get started on nvim these days.. check out kickstart nvim by Tee J Dvries

No kidding, git clone and you are good to go

[–] KrankyKong 1 points 9 months ago (1 children)
[–] [email protected] 2 points 9 months ago

Get em started young. By the time they're 16 they'll ask what's all this about then and flip the desk like a British rockstar every time they're handed a computer with vscode.

Sorry, had too much fun crossing the natural rockstar trope with the vim Chad meme.