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?
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.
deleted by creator
Pointless, no. Many (but yes, not all) extensions are still available to use in VSCodium.
It is possible to use official vs code repository. Just you would have to add it manually.
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!).
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
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.
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 :)
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.
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.
For IDE, VSCode is the usual recommendation. Some of the plugins really help making code readable and digestible.
Kinda a neat utility for kids. I thought it was kinda neat when I used it as a kid.
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.
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.
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
Neovim and language servers tbh
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
For an 8yo?
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.
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.
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.
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
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.