I'd like to teach him some programming but I don't know the first place to start. I want to be careful that I'm not aimlessly pecking through scripts with him and wasting his time on a screen (he plays enough video games already). If it were my kid I'd be a lot more laid back in my preparation for teaching but I don't think I have that luxury since with this kid since we aren't together constantly.
I want to give him a taste of what programming is like. Any advice or curriculums you've used would be hugely helpful.
Then, given the project that he actually wants to do, what does he need to know to be able to do it?
See, at 10 years old, you're trying to whet his appetite. You're not trying to give him skills that will turn into a professional career - he's not ready for that. So give him something where the learning will pay him back in terms of being able to do something that he wants to do. That whets the appetite better than teaching him something that, at the end, he's learned something that he doesn't care about.
I suggest you teach a language like Scratch. The ideal way to do it is to agree on a project that the 10 year old and you agree on and set a plan to get there. Working towards a goal gives you both a goal to work towards and a reason to continue forward. The project doesn't have to be unique but you both need to agree on it and develop a road map to get there. You should also set a deadline.
Once you finish the project you can move on towards a different language and more advanced subjects but always using projects to help you move forward.
Not programming but perhaps even more invaluable: Learning How to Learn on Coursera. Also, Khan Academy.
Human Resource Machine covers processor level programming in a fun and quirky way and should be understandable by a 10 year old: https://tomorrowcorporation.com/humanresourcemachine
Screeps allows players to program little avatars in Javascript to do things in a virtual world: https://screeps.com/ If you search through the HN archives, it's been discussed before. Though it's nominally a MMO, buying just the base game allows playing in sandbox mode offline.
It's the fastest environment to go from zero to ”something cool” that I know about. And using the steam workshop, there are literally tens of thousands of games and projects with various different types of game pieces, scripted dice, etc. already created there.
Also quite cheap at around $20. And right now, half off. https://steamcommunity.com/app/286160
I'm finding the leap from Scratch to Python + PyGame is kinda challenging for my 8yo, but he's getting there with some hand-holding.
I'm curious if anyone else here could suggest something similar to PyGame, since it doesn't require a lot of technical knowledge compared to languages like Java or C++.