46
Update: Advice re son learning to program.
(lemmy.world)
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
Follow the wormhole through a path of communities !webdev@programming.dev
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
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.