Regarding programming environments, I highly recommend MicroBlocks(https://microblocks.fun/). I was a big MicroPython fan before, and since switching to MicroBlocks, I've never looked back.
If your child has experience with Scratch, then MicroBlocks will make him feel very familiar.
I found this overview on the microblocks site linked by the parent comment:
https://wiki.microblocks.fun/en/boards/supported. The list includes the micro:bit, which I can recommend from experience, but the rest also look like good choices.
If your child has experience with Scratch, then MicroBlocks will make him feel very familiar.