I spent the day TA’ing for my friend’s class. Sarah Mei taught an Intro to Ruby class for 6 hours to 12 high school senior girls. They were in a 4-day intense engineering stay-away camp, that they’d done for four successive years. They take girls freshman year, and the same girls come back every year.
Sarah managed to get the ratio of TA’s to girls approximately 1-3, which was awesome. I worked pretty closely with three young women. All of the TA’s were women, too, of different ages, races, and careers. Most of us were software engineers/developers, representing SLAC, Google, and Cisco. Sarah and I came from the start-up world. Of the girls I worked, two going into engineering- mechanical and civil- and one was a track scholarship to UCLA, studying sports medicine.
The girls had had a JavaScript class last year- the dive into a programming language, that required a run-time application to run- was new to them. Sarah provided them with thumb drives already loaded up with a ruby executable of Shoes, this neat, lightweight, easy-to-use Ruby toolkit. Thanks Pivotal Labs for the drives, those were super useful.
It was kind of awkward at first, the girls filed in and Sarah was great about introducing herself and the class structure. We were in a sweet computer teaching classroom, with PC servers for each station. I had grown up with some very juicy computers (Cupertino!) so I was glad they had a relatively robust setup. We started right in with opening a window, then got into an animation loop, tracking the mouse, and creating a graphic interface.
One interesting note here- I’m not sure the girls knew the difference between a client application and a web site. That’s something that’s merging so much lately, with Tweetdeck being a client application on a Flash browser, to chat clients that are really web clients, etc. In the history of this course, it was originally Intro to Java (cough), and getting to Ruby was a big step. As more and more software is downloaded, updated via internet, and managed on browsers, is it really important to have this classic separation?
My niece (13) told me the other morning that “teaching high school will be hard,” and I still am kind of wondering what she meant. I found it really fun. It’s not too different from TA’ing adult night classes in Ruby- the difference might be that these kids had no ego. They were almost a little too ego-less. I’d come up and ask tem what they were doing, and they’d kind of cringe, stop experimenting, and demonstrate the app so far, but with tons of caveats and self-effacing. I tried to be really encouraging. For some that were really getting it, or just good at typing and copying, I’d ask them some structural questions. Largely it was tough for them, learning a bunch of concepts at the same time- do-loops, if conditionals, variables, objects, strings, etc. Trying to fix code without using all the terminology was tough for me. “Put the cursor- I mean your mouse- before the line, the start of a line… press return.”
The thing is that the logic of the computer flow started to sink in, and we got into some interesting designs and interactions. Describing a button and its interactivity was a leap for some, and for others, understanding the syntax, “hash rocket,” “pipes” etc. they’d never had to find on a keyboard.
They almost all responded to the syntactical pickiness of code- and I wonder in a way if our lax spelling, LOLspeak/textese has contributed to a looser feeling on computers and keyboards.
Near the end we asked them some questions of what they thought of the class, and of programming. I was interested in any ideas they had of programmers before, and now that they’ve done it, what they thought now. One girl said that she knew programmers “from TV” and that now she’d done it, “It was easy.” I spoke to them a bit about my unconventional path to programming, and tried to compare my feelings about stereotypes of programmers to the realities of me and my friends. “I didn’t want to be a programmer like my friends’ fathers, but then I got involved in the internet, and we got to invent things…” I showed them some of my Facebook apps, and one of them looked at me and was like “You’re a partier?!?” which was super cute. That’s not a non-sequitur, but an app that I’m working on. Another time I think I had their attention (so hard to tell with teenagers!) was when one of them asked me when I got into programming. Sarah was right on when said that this casual chit-chat is core to what we can contribute. Talking about our stories, and college experiences, coming into programming late- and how *that’s OK*, and how software development has largely become integral to almost all math/science majors. Demographically these girls don’t have a lot of women-in-science, or college-educated mentors around them, so casual questions about whether it’s OK to be wait-listed, how to decide on which school, what major (and if that’s important), and honestly just showing that their life is beginning and they have lots of choices.
We got a few of them to put their flash drive into the teacher’s computer and show their code on the overhead. I was really excited about a “demo round” as showing and collaborating your work is what inspires some- myself, namely- and sharing code is also key. I can see a collaborative angle to this class, hopefully opening the door to contributing to open source and being a part of the community.
When you think of a dozen young women having this access, it’s really incredible. I was a self-starter, surrounded by the riches of Silicon Valley education, and had a few geek friends who would go with me to learn C (no lie) on a lovely summer afternoon. But I know that’s rare. To see self-defined math and science young people going to summer classes to do this stuff was really inspiring. They were all super ambitious and focused on what they wanted to do, and it was really inspiring for me to see such drive and self-awareness in people so young. It was also awesome to see Comp Sci grad students contribute a day to help TA, and that the places they work were supporting them in giving back to the community. Yay!
Some improvements I’d make- 4 days is just too short. Having a fun hackathon feeling, with games and competition and collaboration would be very cool. The TA’s teachers should probably put together some showcase work, and probably photos of them when they were young programming (possible??). It’d also be nice to get the kids to share and exhibit their work more. I was inspired with how creative they found the code we were doing- it was roughly artistic- and helping them integrate music, photos, along with animation might be an easy win and inspiring.
The biggest improvement that could be made, I believe, is awareness and monetary contribution to this program. There is absolutely no reason that a company with a diversity plan- small or large- shouldn’t donate to this. Any company that wants to hire more women engineers should donate to this program. Any company that thinks diversity in tech sectors is a good idea, should donate. The fact that this organization has created a very practical and pragmatic way to introduce already interested young women into programming, is about 90% of the battle. These girls are there, and willing, we just have to provide the time and space to continue their exploring.
More reading:
– Sarah’s talk that got me interested- based on this blog post she wrote, Teaching Ruby to High School Girls
– More about the program Get SET, at their site GetSET
– My first experiment with teaching kids to program (thank you to my somewhat willing niece and nephew, a.k.a. guinea pigs)
– Teaching girls to program games, notes on a talk I gave at an un-conference, to girls