Programming by itself can be boring and is definitely not as rewarding as other stuff (games, etc) especially if you’re just a beginner so learning it “just because” is going to be a hard sell.
Find a task or a problem she’s having that she’s currently doing manually and help her automate it.
He wanted a RC car.. so I asked him to pick an old one apart. Taking parts from that, he built one without steering and just on off control. So now I've got an esp32 and a servo and got trying to make a steerable rover.. he's not going to get all the programming but he's definitely interested.. also the mechanical parts are also pretty interesting and approachable for him (we burnt a couple of hours trying to make a steering mechanism with LEGOs and didn't get anywhere)
I'll start him with prettifying the web page and adding bells and whistles (calibrating the servo, displaying connected/disconnected status etc and whatever catches his fancy)
Fair warning: requires a lot of time and patience.. also go slow (very hard for me to do).. but yeah, this is the time he's gotten the most interested
A custom lego mindstorm robot to do a task around the house.
A website they can share with their friends.
Lego Mindstorms is a great place to start when they are young.
HTML and javascript once they are a little older.
It's super simple to get started with, just a single download gives you a (very basic) "IDE" with loads of examples built in (ranging from very simple to pretty complicated). The other thing is that it's all very visual from the get-go so you can really see what you're doing.
Snap! (https://snap.berkeley.edu/) is based on Scratch and Scheme and features local variables, lambda expressions, and first-class lists (both Scratch array style and Lisp linked-list style). You could also look into Racket (https://racket-lang.org/), another language similar to Scheme. Both these languages have multimedia capabilities that make them attractive to new programmers and a more sensible design that better captures the essence of abstraction and composition.
When I was a kid, I was heavily into video games and had a burning desire to create my own. However, the options for doing so were not great. One of my middle school teachers tried to introduce us to programming via creating Space Invaders in perl, which went as well as you might imagine. There were a few GUI game making applications that were all terrible and extremely limited. I eventually managed to make a game using Flash, but all the overhead of arcane Actionscript APIs was overwhelming and discouraging. I stopped programming and for several years thought I was going to go into media, creating films and animation. I eventually picked up programming again in college, but there were many years of programming experience I could have had if I had stuck with game dev.
I'm convinced that if PICO-8 existed when I was originally interested in making games, I never would have stopped programming. PICO-8 is the perfect balance of easy-to-learn and powerful. Lua is a good first language because it's so small, and encourages you to build your own solutions rather than rely on magical libraries. For example, I never knew how a list-shuffling algorithm (Fisher-Yates) worked until I needed to write my own because Lua and PICO-8 don't provide one.
The limited sprite and sound options encourage you to spend time not on the assets but on the gameplay (the code). It's quick to get things on screen and working because the PICO-8 API is simple, logical, and not arcane (cough Actionscript cough).
Basically, it introduces programming in an instant-gratification way that's able to grab and hold a child's attention, while still being powerful enough to produce games that aren't hamstrung by toy programming languages.
But you'd have to do some work to assemble resources and learn how it works yourself. Examples of the kind of stuff you can start with at http://outreach.mcmaster.ca/showcase.html. Anything you make can be published to the web.
Scratch may or may not be the right answer though, depending on what she's into. Python is fantastic, but I don't see it being very good for getting something graphical working in a short amount of time (that's what usually keeps a child's attention).
* I learned with Visual Basic For Applications, because the IDE was bundled with every MS Office installed, so there was no setup required.
* Visual Basic was comprehensible enough for me as a 12yo. I had some basic understanding of programming from my dad showing me basic on some vintage Yamaha computer with arabic OS [1], so IF-ELSE, PRINT, GOTO 10, but couldn't code yet :P
* I remember that the path to hello world in VBA was fairly straight forward. It didn't take too much of typing to get a MessageBox with "Hello World" on screen. I think after that we were writing few programs with multiple messages after each other telling a short story or something.
* I remember after first few lections, we enabled the 'option explicit' that enabled some rudimentary type-checking (or was it just requiring explicit variable declaration?) and I didn't like it at first, but after it started catching typos in my variable names, I grew to like it :) Static/dynamic typing proponents take that for what you want.
* I remember we mostly did simple text-based programming. Million Message boxes and Input boxes. Simple quizes. Simple verbal puzzles. Simple calculators (no parsing, you entered first number in input box, then operator in second input box, then second number in third input box, and finally answer in message box would appear.) Making poem generators was fun. Maybe some simple text-based adventures. I remember having fun :) I think it took us half a year or more to start working on some graphics and making simple games?
* the learning was pretty hands on. We were a group of 5 to 10 kids in a class, everybody was trying to do the same assignment.
* I remember it took me a while to realise I could do "x = x + 1" in my code and what that meant :D In math (we already were solving simple linear equations at school), it wouldn't compute. Functional-programming proponents, take that for what you want :-)
That's the sort of thing I called bit-twiddling in my own comment. Some of these ideas get so ingrained in older programmers that we forget how much mental overhead they involve. I only got a sense of it myself after I returned to a somewhat imperative language (Python) after years of using functional languages.
VBA is great if you want to make spreadsheets do things they couldn't otherwise.
I would highly recommend trying it. The visual format is easier to grasp and you can have a lot of fun making games and animations.
You can add her own voice or pictures right into the stage.
I have not tested it on a tablet, but I think it should work as it is not a web based platform in the 3.0 version.
What is the best way to reach you when I have updates?
https://developers.google.com/blockly/ Google Building Blocky with Javascript
https://computationalthinkingcourse.withgoogle.com/unit?unit.... chat bot
some other coding sites found by me, a science teacher: https://studio.code.org/s/express I like this - it's easy - if I am required to teach middle-school kids some coding I will probably use this; https://www.computerscienceforkids.com/beginningvisualstudio.... curricula for SmallBasic, C#, Java, VisualBasic for kids+ ; https://makecode.com/#about Microsoft IoT + coding for kids http://interactivepython.org/runestone/static/thinkcspy/inde.... Interactive Python; https://www.lazarus-ide.org/ Lazarus = Free Pascal - some teachers use this; https://jsfiddle.net/ some teachers like this - nothing to install, code Javascript online; http://happyfuncoding.com/ the one site I can always remember the name of; http://physics.weber.edu/schroeder/html5/ am I allowed to love Newton's Cannon, written in simple Javascript on one page?