In December 2016, . A year-and-half later, his journey continues with many ups, downs and plot twists. I wrote about my experience teaching my 10-year-old son to code “Papa . . . I’m bored!” If you’re a parent or teacher, you’ve probably heard it many times. Children — like most people— have , resulting in brief bursts of high-engagement with new toys, games or activities followed by long periods of disinterest. Once the novelty wears off things get boring and they search for something new—this actually sounds similar to front-end web developers 😉. My son is no different. short attention spans The Vacation: January 2017 — July 2017 My son’s enthusiasm for coding waned soon after I published the in December 2016. By January 2017, he was up against the steep learning curve of web development. first story If you’re unaware of how daunting web development is for beginners, scroll through the (an amazing resource BTW!) and review the completion time estimates —and that’s just for front-end webdev! It’s like reaching a mountain’s peak only to find yourself at the base of another mountain. Not very motivating for an 11-year-old. freeCodeCamp curriculum You might be thinking . . . “Why did I start him with web development?” After and a brief stint with Python, I ultimately settled on Javascript and HTML because I’m a web developer and it’s what I know. “What could be better than an in-house mentor available at any time?” I thought. Turns out, many things. Scratch In hindsight, I think web development is not an ideal starting point for kids transitioning to text-based coding. Children are naturally great at reverse engineering; but in modern web development, seeing a website you like and building it is a lot harder than it looks. Replicating modern web sites requires many complementary skills beyond Javascript and HTML: CSS, JS frameworks, build tools, databases, server-side languages, and more. The is tough for beginners — let alone an 11-year-old with limited time. There’s always something else you need to learn — it’s very hard to keep up. Web Development is Not So Great for Kids from scratch complexity of modern webdev How I Fit Into The Picture “Learning to code” should never feel like a job. I’m a working parent and have no interest in running a coding school. Learning to code is always secondary to free play, reading, schoolwork, or just doing nothing sometimes (yes . . . it’s OK for kids to do nothing once in a while). Learning to code needs to be a self-driven activity or it won’t last. My role in the process has evolved into part-time curator, mentor and motivator. I never force my kids to code. A New Opportunity By January 2017 my son’s coding progress came to halt. After learning a good amount of HTML and starting Javascript Road Trip Part 3 on Codeschool ( ), there was no light at the end of the tunnel. He stopped coding and started reading fiction again — specifically, the series of books. No complaints on my end. RIP Rick Riordan It wasn’t until July 2017, during a serendipitous discussion about baseball statistics, that the switch turned on again . . . “What’s a batting average?” he asked. “It’s the number of hits divided by the number of at-bats.” “What does it mean?” My son doesn’t play or watch much baseball, but he likes basketball. So I switched the conversation to something more relevant . . . “It’s similar to a shooting percentage in basketball — total shots made divided by the total shots attempted. It’s a simple measure of how well a player shoots the basketball.” I could see the wheels turning again. “Maybe we’re on to something here.” I thought. “Facts are stubborn things, but statistics are pliable.” — Mark Twain For the next few weeks, I pointed out examples of statistics in action wherever I noticed them, gauging his interest along the way. TV commercials, YouTube Ads, billboards, books — statistics are everywhere! In my new role as motivator, I by purchasing the “ ” by Grady Klein/Alan Dabney and his next adventure began. closed the deal” Cartoon Introduction to Statistics My son finished the book around August 2017 and I put my curator hat on in search of the next learning resource. Being an advocate for any self-driven learning by your children involves careful content curation. There are limitless online resources for learning almost anything. Your job is to find quality resources that best match your child’s learning style. I recommend testing out the material yourself first (watch a few video lessons, read a few chapters) to avoid selecting something too boring, fast, slow or poorly produced. Bad learning materials could negatively affect your child’s opinion of on entire topic. Be sure to choose wisely. The Return of Python I signed up for an annual membership during a holiday sale back in December 2016 — in the tech media at the time and I wanted to branch out as a web developer. I browsed through some of the courses and really enjoyed their platform — very high-quality with lots of depth. I thought DataCamp would work well for my son . . . DataCamp Data Science was trending “Remember Python?” I asked him. “A little,” he replied with a suspicious look on his face. “Do you know that Python is used all over the world by statisticians, scientists and even Google (I had to mention Google 😃) to work with data and statistics? You also don’t need to type brackets and semicolons 👏. Do you want to try it again?” I asked. “No more Javascript?” He asked. “Not for now,” I replied. “OK,” he agreed. August 2017 — October 2017 He started with DataCamp’s (a freely available course) in August 2017 and made great progress (working primarily a few hours on the weekends). He finished the first course by September 2017. Intro to Python for Data Science The course is great for beginners; covering a lot of material in manageable chunks with live coding exercises directly in the browser. By the end of the course, he was comfortable with Python syntax, lists, functions, packages, and NumPy. Intro to Python for Data Science Another Hill To Climb He moved on to but hit a wall around October 2017 — rarely logging in and eventually stopping completely. Intermediate Python for Data Science I intervened . . . “How is everything going with the DataCamp course? Are you stuck on something?” I asked. “I like it, but I don’t really get how all this is used.” A Context for Coding There’s actually a lot going in the dialog above, but the keyword is “ ”. One problem I consistently notice with the coding for kids movement is lack of context. Learning about programming structures and algorithms is fine, but abstract concepts don’t stick with kids unless connected to something in their world. how is very popular with kids not only for it’s “connecting blocks” metaphor, but for how it’s designed around the context of creating and sharing stories, games, and animations with the community. It’s fun and has a clear purpose — a win-win for kids. One of the hardest obstacles when transitioning from Scratch to text-based programming is that loss of that context. You’re no longer building fun things for the community; you’re on your own in a world of plain text, code editors and “Hello World!”. It’s a big shift. Scratch What my son was really asking was: “What’s in it for me? How does Python give me superpowers?” In Search of New Hook I needed something that would pique my son’s curiosity. A way to get him back into his coding adventure. AI and Machine Learning dominated tech media in 2017 and I shared many interesting news articles with him throughout that year. He ignored most of them (kids don’t seem to like reading email 😃), but here are some of the stories he found interesting — at least based on discussions to/from school: AI learns to re-create Super Mario Bros. by watching someone else play it This Artificially Intelligent Speech Generator Can Fake Anyone’s Voice A New AI Can Write Music as Well as a Human Composer A Japanese AI program just wrote a short novel, and it almost won a literary prize Notice a theme? All of the stories are examples of machine learning code doing the work of humans. Giving us superpowers! “What if you could build a program to do your writing homework — all those summaries and journal entries?” I said. “Really? How?” His face lit up a bit. “You can learn about AI and Machine Learning using Python.” Can Kids Really Understand Machine Learning? Let’s be honest. Very little machine learning content is designed with kids in mind. Kids like to dive right into things, but really understanding Machine Learning requires a lot of prerequisite knowledge in math and statistics. As a web developer, my linear algebra and statistics knowledge is a bit rusty (to say the least 😉) making it harder for me to curate content and come up with fun code analogies. So I put on my research hat for a few weeks and learned as much as I could about the basics of Machine Learning. The volume of resources available for machine learning is overwhelming: videos, blogs, books, conferences, courses. After some testing, I narrowed the choices down to Udacity, Coursera, or DataCamp. I focused on structured learning and a good practice environment — especially important when getting started on a vast topic like Machine Learning. After a final review of the courses, I selected due to their highly-targeted Nanodegrees and clearly defined prerequisites and set a long-term goal for him of completing the , knowing it could be years before he even starts that course. Udacity Deep Learning NanoDegree First Things First . . . Back to Stats The is above my level (let alone my son), so I built a course map; working my way down using the prerequisites and requirements. Here’s the first iteration: Deep Learning NanoDegree First iteration of the machine learning course map. Intro to Python for Data Science is shaded green since my son completed the course and it meets the Python prerequisite. He started with the statistics courses right away. A Major Milestone My son really liked statistics. He finished the in September 2017 and started the course. Descriptive Statistics course on Udacity Inferential Statistics This was a big moment. For the first time, he was venturing into a subject area beyond my level. I only took one stats course in college and that was quite a few years ago. I wouldn’t be able to immediately answer his questions anymore; he would have to seek the answers on his own. It’s the moment I fully-transitioned out of my role as his coding teacher 😢. As expected, he struggled with the material, but worked very hard — much harder than I expected. By January 2018, he hit a wall about two-thirds through the Inferential Statistics course. At this point, he took a well-deserved break until April 2018. A New Opportunity I received a promotional email from Udacity in April 2018 announcing their new (yes, email marketing still works). It was a few months since my son coded anything and the course looked like a great way for him to review Python concepts (NumPy, Pandas, Matplotlib) with a short introduction to some additional machine learning prerequisites (Linear Algebra and Neural Networks). AI Programming with Python Nanodegree program He was also very motivated at the thought of receiving an actual certificate of completion (G FTW) and started working on the course the day we enrolled. amification Revised course map with updated progress as of June 2018 Reality Sets In Udacity courses and labs are pretty rigorous and he quickly fell behind the recommended completion deadlines. I wasn’t surprised since Udacity recommends a 10 hr/week commitment to complete the course on-time, but I didn’t want to curb his enthusiasm. He averages about 2–4 hours per week during the school year, since the material is very dense. I hope he qualifies for Udacity’s free . If anyone from is reading this . . . pretty please! 4-week extension Udacity My son working on a Jupyter notebook lab from Udacity’s . AI Programming with Python Nanodegree Realistic Expectations For parents just embarking on the journey of introducing coding to their kids, try to treat it like any other extra-curricular activity. Coding shouldn’t take priority over other activities such as schoolwork, free play or just being a kid. It’s a bit abstract and not always fun, but very rewarding in the long-term. Personally, the fact that my son is willing to work on this at all makes me proud. I’m not expecting him to become a superstar programmer anytime soon. Hopefully, he is able to build new mental models enabling him to approach future problems from a different angle. Most of us grew up in the world of imperative programming; where solving a problem involved defining each step in sequence. His world will be different. The ubiquity of AI/Machine Learning will enable computers to define the steps given the proper data and algorithms. Hopefully he’ll be ready for this reality. The Road Ahead For those interested, I’m planning a follow-up post in about six months, summarizing my son’s latest progress and struggles. Who knows, maybe he’ll move on to something new at that point . . . kids these days. . My older daughter is currently working in Scratch and the youngest in . I also plan to start writing about my experience teaching my younger daughter’s to code (ages 6 and 9) Scratch Jr Follow me for updates, tips and advice on teaching your kids to code. I’ll also be documenting my experiences at . Stay tuned! CodingDad.io