Developing a coding habit in a 12 year old
I sat with Aaron to do our first coding together in 6+ months and it was a total fail. He had forgotten even the most basic things.
Also, he reminded me that our approach last year wasn’t very fun for him. My intent had been to create a real working app using python and django and iterating it over small projects and lots of time into something “real”.
What I didn’t realize but is obvious in retrospect, is that setting up a dev environment and the mountain of necessary but important technical knowhow that goes into that (terminal commands, git repos, cloud environments, etc) isn’t fun. The difference between maintaining an airplane and flying it, as I read somewhere recently.
So what are we doing now?
1) Kept it simple. Rather than attempt a “real product” in the context of a working app, I’m now going to set our sights on building “real code” in the context of a single page of code.
2) Just use Replit. Learning linux basics, deployment and git is useful, but that can come later.
3) Code frequently. To make coding a habit and to help the basis concept stick, we’re going to commit to doing a little coding every day.
4) Come up with a set of short coding problems that are self-contained, fun and allow for self-exploration.
For example, last night I challenged Aaron to code up a “coin flipper” function and then to measure what percent of the time it flips heads. As he experimented with ever-greater numbers of flips, he ran into the exponentially longer running time. Refusing to stop the execution, I challenged him to figure out (in a spreadsheet) how long it would take to run the function, and to write code to time it.
He did that and then built a spreadsheet that led him to the realization that it could take many days to run the function as many times as he had entered.
Anyway, we spent a lot more time “coding” than we’d planned, had a lot more fun, and he hopefully learned a bit of coding in the process.