A robot is helping me learn Python
My method for learning "just in time" information changed. I used to look for courses. Now I'm co-designing a learning experience with a robot. Read: "Everything Starts Out Looking Like a Toy" #240
Hi, I’m Greg 👋! I write weekly product essays, including system “handshakes”, the expectations for workflow, and the jobs to be done for data. What is Data Operations? was the first post in the series.
This week’s toy: with the sunset of Skype this week, one of my all-time favorite things from the Internet is no more. I remember how surprising it was to make a video phone call around the world … for free. (Now, it’s normal). Get a sense of the impact by looking at this 2011 article on the growth of international calling through Skype (from the Wayback Machine)
Edition 240 of this newsletter is here - it’s March 3, 2025.
Thanks for reading! Let me know if there’s a topic you’d like me to cover.
The Big Idea
A short long-form essay about data things
⚙️ A robot is helping me learn Python
I recently hired a tutor to help me learn Python. It just happens to be a robot.
Any job that touches an engineering function is more technical today than in the past. Product, Ops, and GTM Engineering roles are cross-functional and include a mixture of code and no-code tools. You need to read (and probably write) code well to do these jobs effectively.
I’ve learned a lot of technical tools in the past and pride myself on the ability to pick up a skill when I need it in the job. For some reason, Python coding has not stuck with me when I’ve learned it previously. The main reason? I haven’t made the stakes high enough and can usually switch to another language like Javascript when needed.
Finding a conversational option
Anyone who’s ever worked with me knows I ask questions when I’m learning something new. That makes pair programming work well and other kinds of methods less effective. When I’ve used “boot camp” methods like Datacamp, I do the sample problems well and don’t always map the learning to long-term memory.
The reason for this gap? The code I’m building in my current role is mostly bug-fixing or pattern-matching to existing patterns instead of net new code. I want to build a way to learn concepts just in time to have a bespoke technology tutor on any well-known subject.
The answer? Have ChatGPT’s “task” option set up a daily lesson pomodoro where it can ask me to demonstrate Python concepts.
How I set up a daily lesson in Python
To improve my Python skills, I’m using ChatGPT’s “task” option to give me a daily lesson. The goal is to have a conversation and learn new things, while letting the bot change the difficulty as I answer questions correctly. The task option sends me an email prompt at the same time each day to start working.
To customize the bot, I’ve created an instruction summarizing the topics we’ve covered that day that gets printed as a table at the end of the chat. I also asked ChatGPT to remember the topics we’ve covered so that I don’t get the same questions every day.
With this tool, I hope to move from a basic coder to an intermediate or better coder within 60 days of using this daily task.
What’s happening so far?
I’ve been using the tutor bot for about three weeks so far and I am noticing a few things that are different than previous methods I’ve used to learn Python:
The quality of the examples is higher than the typical examples I see in learning content
I like being able to have conversations with the bot when I don’t understand the concept or need additional information
There’s a low barrier to show up for practice, so I do it, even on the days when I don’t answer as many questions
When I created the initial bot, I asked ChatGPT to assess my level as a Python programmer based on my answers to several questions, and we established the questions that made sense collaboratively based on my understanding. As I’ve progressed, the bot has given me more comprehensive questions that focus on problem solving instead of basic function usage or text manipulation in Python.
Here’s an example of a recent question:
It’s a good question for a novice programmer because you need to consider:
function building for readability and reuse
implementing recursion to traverse all of the items in a collection
avoiding edge cases that could cause an error
After considering my (admittedly less elegant) solution to the problem, ChatGPT responds with some improvements:
I don’t think this will replace basic education yet, but for common skills like Python programming, “just-in-time” tutorbots have real promise to help students level up their skills.
What I’d change in a future version
Now that I know the Chatbot can do a decent job of assembling content, taking questions, and critiquing results, I’d focus on a few things to improve:
UI Improvements: Use Cursor to build an interface and store context in a database. I like the daily ping through email and it would be helpful to see my scores and progression against different common topics. In addition, using Cursor to build a python app (how meta) will help me see where I’m missing concepts and identify buckets to improve.
Set a Curriculum: Identify a curriculum and topics and rotate questions through topics at different levels of difficulty. The current bot won’t work for other people as it’s tuned for me, but a standard series of onboarding questions and topic exploration would make this idea more general.
Add Context: Build a “long-term” memory for the bot by creating a time series of questions and answers in a database. I’m not sure how much ChatGPT is actually storing right now instead of just filling in Mad Libs and giving me Jedi mind tricks to make me think I’m getting better at programming.
Deepen Knowledge: Ingest some Python textbooks to give the bot additional context. Better content and context should yield more effective learning.
LLMs are not flawless tutors. Because of the way they work you shouldn’t take their token-tumbling as “thinking” —> they are matching up statistics to show you the next best answer completion to your prompt. But they do make an intriguing platform to self-teach … almost anything that’s well known.
What’s the takeaway? Daily tasks in ChatGPT make a good prototype for just in time learning. Because of their low lift to get started, you can design almost anything! They are not ready to be a full curriculum yet but have loads of promise as a learning building block.
Links for Reading and Sharing
These are links that caught my 👀
1/ Play it again, Sam - This robot piano player might be coming to a bar near you soon (or maybe to your house). It turns out the same kinds of generative learning through reinforcement that helps train LLMs on language can be used to teach the ability to play music. The possibilities are wide-ranging — and maybe I can finally find a method to learn piano that will stick.
2/ Stripe’s Annual Letter - It’s a master class in corporate writing, and also one of the best indexes of current Internet activity. Of course, I’m talking about Stripe’s Annual Letter, released this week. Stripe has an unusual horizontal view across many different types of companies that transact on the internet.
An example tidbit: companies in Stripe’s dataset that focus on AI are getting to revenue faster than those who don’t. (Yes, this isn’t that surprising, until you consider that the comparison set were among the fastest growing companies in the history of the world.)
3/ Things that go vrooom - Brian Potter writes highly engaging content on industrial topics - this essay helps you understand how hard it is to build a jet engine. It turns out that pushing the envelope on multiple technologies simultaneously is challenging. Remember that the next time you’re trying to mitigate risk on a new new product.
What to do next
Hit reply if you’ve got links to share, data stories, or want to say hello.
The next big thing always starts out being dismissed as a “toy.” - Chris Dixon