Each summer we try to arrange that our kids have a mix of fun things and self-enriching things to do. Self-enriching things are intended to help them develop their talents and maybe get a little better prepared for the next year in school. If they had some weaknesses the prior year, we’ll have them work on those a bit and we’ll try to get them looking ahead at next year’s equivalent class. We try to give them some say so on these projects so long as they stick to things that move the ball forward against the original goals. By way of developing talents, this summer we decided to try programming.
I had looked into the possibility months before and decided Python would be the learning vehicle. It has a number of charms, seems to be one of the Cool Kids Languages, is powerful enough to do useful work, has a following among educators and so on. In addition, it had a couple of strong marketing attributes that I think worked well with the kids. First, they respond when they hear it is one of the languages of choice at Google. I’ll never forget driving by Google’s offices one day in Mountain View and having my 12 year old daughter beg to go check it out. I was surprised that a young girl would care about Google, but to her it was a chance to see a very cool thing. I explained that the campus wasn’t really open and that while there were some fun things inside the doors, it was mostly just offices. I felt a bit bad for having deflated the dream a bit, but this argument that we’re going to learn Python because it’s what Google uses still carries weight with these kids.
The second key marketing attribute I have made sure to mention and remind them of several times was that I don’t know Python myself.
There’s a psychology to be aware of that I’ve seen before–kids don’t want to compete with Dad once they move into their teens. They want to win on their own terms, and if Dad seems to far ahead on something, that something is a lot less interesting. Knowing Dad is a programmer, I initially felt some push back over whether the kids would want to learn programming or not. But telling them I didn’t know Python and would look to them to teach me about it had the desired effect. They liked that a lot.
How has it gone?
It’s early days yet, but I have been impressed. First, I had only assigned this task to my son, but my daughter jumped in almost immediately of her own volition. Second, they’re chewing through the basics at a pretty good clip and without a lot of help. Their code seems pretty clean and well structured. They’re at the stage of basic control flows and seem to get it. Lastly, without any prompting from me, they’ve naturally taken to using the Internet as any developer would to help answer their questions as they come up by cruising forums, StackOverflow, and a variety of other resources.
I don’t know yet whether my kids will be great developers or not. I am from the camp that thinks software developers are born and not made. I have seen too many cases of inexperienced brilliant developers with little or no formal education coding circles around developers with computer science degrees from MIT, Stanford, and other top schools. Those that have the spark can manifest it at an early stage and grow rapidly from there. As every father would, I hope my kids can be stars at what their father loves, but at the same time I want them to choose their own way.
Meanwhile, expose your kids to a summer of programming just so you both can see how they take to it.