Recently I wrote a couple of spontaneous threads on Twitter that became the most-viewed of my posts in over a decade. They focused on learning. The first inspired me to convert the tweets into a series of personal essays to support deeper conversations on those topics.
Today I'm converting the second thread into a post for the series. You can click the tweet below to read the thread on Twitter or just scroll down to read it in paragraph form. (The bonus of writing this on dev.to is that I can actually fix those pesky typos in my tweets!)
Nitya | #MSCreate https://aka.ms/mscreate Jul 29It's never too late to learn something and never too eat to share knowledge with others.
My 11yo is getting more into Python so I decided to do (separately) the same intro Udacity course and be a study buddy.
And something interesting happened.
(1/N)13:38 PM - 19 Jul 2020
The original thread has 13 tweets. I captured the first eleven below, and the final two in the Takeaway section at the end.
It's never too late to learn something and never too early to share knowledge with others. My 11yo is getting more into Python so I decided to do (separately) the same intro Udacity course and be a study buddy.
And something interesting happened. (A thread)
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 the Udacity "Intro to Python Programming".
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 sketchnoted 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"
It opened his mind further to creative things he could do with code. Which brings me to yesterday (Jul 18). He came over all excited to show me a simple text-based adventure game he had created via Trinket App
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.
- Document. Document. Document.
- Experiment. Experiment. Experiment.
And now he was ready to have the conversation on problem solving with code given a written problem.
The image above 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 it 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 - 😱
And that to me is the three steps to successful learning
- BUILD something (document, experiment, iterate)
- EXTEND it to do something more (be creative, efficient)
- TEACH someone else what you do (clarify your thinking, inspire someone else)
I'll update this with more resource links as we go. But starting with this. Hugely recommend the book - it's available online here
@The_Python_DEV I'm hoping to update the post with this as well - if you're learning Python the 11yo is using @AlSweigart 'Invent your own Computer Games with Python' as his guide.
Huge props and thanks to Al for an incredible resource! ♥️12:52 PM - 05 Aug 2020
Update 1: July 21, 2020
We have a working Snakes-and-Ladders game and it has the ability to be taken to the next level and randomized for different board sizes. I gave him the win on this one.
I'm still startled at the level of engagement with this thread. ♥️ A mini milestone: The 11yo did build the Snakes-and-Ladders game and delivered on his promise.
Guidelines to iterate code:
First Correctness = it works
Next Clarity = its readable
Then Compactness = its efficient twitter.com/nitya/status/1…11:55 AM - 21 Jul 2020
Update 2: Aug 2, 2020
I think I may have found us a new adventure to go towards.
Now I am intrigued.
My 11yo was learning Python from a games book, where the first challenge was a simple text adventure. I challenged him to evolve the code to make it a Snakes-and-Ladders game instead - and he did!
The 11yo was on board and we had a great conversation but this one is a bit more complex than the first one. I hope he perseveres. And I hope I get a chance to update this thread with learnings later
Learning journey continues. 11yo came of his own accord to ask if we could think of another game he could build with his current Python knowledge.
So we talked card (strategy) games. My chicken scratch is terrible. He's now off to translate it into code. This one is tough 🔥♥️ twitter.com/nitya/status/1…16:34 PM - 02 Aug 2020
Do you have a story on how it's never late to learn? Or about someone who surprised you with their ability to overcome initial hurdles and discover the joy in problem solving?
Let me know - and if you have ideas or insights into other things I can get the 11yo to explore in his Python and game development journey, just leave a comment below. ♥️