It started weeks ago. We realized schools were not going to have any meaningful routines & wanted to give him something with a target and achievement, that would promote self-study and learning
I pointed him to @udacity "Intro to Python Programming"
classroom.udacity.com/courses/ud1110
He started doing the lessons & zoomed through them. It was clear he was watching the videos and completing the exercises fairly fast. It wasn't as clear if he *understood* the concepts in a way that allowed him to apply them elsewhere.
So I announced I would do the course!
At which point he suddenly took an interest in MY progress. I made it a point to tell him I had never done the course before. (True - I've used Python as-needed and learned it as I learned everything else, by examples and application)
He decided he needed to be my coach 😄
And so began an interesting journey. I watched videos with him and sketch-noted things of interest. And we would have discussions about what we were hearing and how it would apply.
Till then he had used Python with Mindstorms - and with clear code examples (copy/edit)
Now he saw Python as an open-ended tool to make things - and he started reading "Invent your own computer games with Python" nostarch.com/inventwithpyth…
It opened his mind further to how *creative* things he could do with code
Which brings me to yesterday. He came over all excited to show me a simple text-based adventure game he had created via @trinketapp
A professional coder might look at it and think it needed work
Just conditionals, print statements and string literals. Not at all DRY.
They would be wrong.
To understand the power of learning and *achieving* you need to understand the user journey and goal. You need to see a 11yo giggling and running the app till the dragon finally relinquished the treasure.
It wasn't code.
It was creation + storytelling
He was only running code examples and modifying them slightly. But he had learned two things already.
1. Document. Document. Document.
2. Experiment. Experiment. Experiment.
And now he was ready to have the conversation on problem solving with code given a written problem
That second image was me challenging him to take the same example text-adventure and modify it to create a "Snakes-and-Ladders" game.
Huh?
"Where do I start?"
And that shift in mindset was what successful learning is about - not "can I do this?" but "HOW can I do this?"
We had more conversations - the biggest lesson I could impart to him was that there were no perfect solutions. Just iterative experiments to get desirable results.
We walked through data structures and functions and understanding how to write code for agility and reuse
He grasped three things immediately
- Use functions to abstract complexity so code was readable
- Use print + interactive runs to test & validate assumptions
- Make the basic idea work before layering on complexity
His first board had 1 snake, 1 ladder - and worked.
This morning he has been busy explaining to his grandparents how they can create a text-based board game with Python. And explaining how we can share code via browser if they want to learn.
And he told me he will extend this to multiple snakes/ladders - at RANDOM 😱
And *that* to me is the three steps to successful learning
1. Build something (document, experiment, iterate)
2. Extend it to do something more (be creative, efficient)
3. Teach someone else what you do (clarify your thinking, inspire someone else)
The journey continues!