I recently had the opportunity to tutor a kid from church in "coding". Considering that software development was always something I learned myself or on the job, I wasn't sure how well I would be able to teach it, but I think I came up with a good approach that helped him learn a lot of a few 1 hour sessions this summer.
I wanted to keep the lessons fun, practical and helpful should he decide to dive deeper into programming later on (he's in 7th grade and has had some small programming experience in the past). I settled on teaching web development (HTML, CSS, and JS) to build simple websites and games.
I mostly had a simple idea of a concrete task I wanted to get accomplished for the day (Make and publish a website, Add style and images to the website, Add a simple JS Game). And I would introduce any new concepts or languages, then dive right into creation. I tried to let him do all the typing and take his best guess at a solution or bug before offering some helpful hints.
He was a quick learner and was able to follow along. Rather than teach the intricacies of all the tools we were using, I just wanted him to have a broad exposure to the IDE, command line, local servers, simple deployment scripts and version control in addition to understanding the code. He probably cannot recreate all the steps on his own, but he knows enough to go to google and solve his problems and he has seen/participated in all parts of development from debugging to deployment. My goal was to teach the practical and fun side rather than get bogged down in a lot of theory that on it's own might not have an application.
*Special thanks to Lost Decade Games which had a really great simple game tutorial we based his game off of. After following the tutorial we were able to add simple features such as a timer, monster intelligence, smart borders, speeding up the game over time to make it harder and changing the images.