I just ran across Karen Rustad’s “How to teach programming: shy, practical people edition.” She cared more about making practical things than about what she perceived as “coding,” so her early technical life centered on HyperCard and making webpages, rather than boring faffing about with “mathematical curiosities.” Finally she came across a project she wanted to help, and scratching that itch meant learning more programming:
Basically what revived my interest was having the opportunity to work on OpenHatch. Getting thrown into web app development and all the associated languages and tools — Python, Django, git, Agile, bash and other command line nonsense — all at once? Yeah, it was a lot. But Python out of context is just a toy. Django out of context is plausible, but hard. Git out of context … wouldn’t’ve made any dang sense. So sure, I couldn’t remember half the git commands (Asheesh eventually made a wiki page for me :P) and I had to look up how to restart the Django development server practically every dang time. But I made do, and I learned it, because the context totally freaking motivated me to. Because *finally* code had a purpose — it was clear, finally, how it could be self-expressive and useful to me. Learning these tools meant I could help make OpenHatch exist. Like, fuck yes.
Different people learn in different ways, and for different reasons.
I figure I learn how to tinker in software, especially in open source, via three methods:
I learn to search the Net well, iterating on keywords and site: and so on; I fall into or develop a network of folks who won’t think I’m stupid for asking questions; and I play little games with myself, or write them, feeling the thrill of the challenge, leveling up little by little.
I was missing all of these when I tried to Learn To Program.
I took one intro to CS class, my first semester at UC Berkeley, the fall of 1998.Â My dad had been telling me he really wanted me to become an engineer, and I knew a little BASIC.Â My sop to his wishes was taking the intro to CS class.Â The student teaching my small section was a woman — an undergrad getting her bachelor’s, a senior, I think, not a grad student.
In retrospect, I know I wasn’t trying hard enough, and was going through all the strange buffeting waves that accompany a sheltered girl’s first few months away from home and at university.Â And debugging exhausted and humiliated me; I read it as constant failure topped by a meager teaspoon of success, instead of enjoying the challenge and reading each quest as a hero’s journey. Guys on my floor of my dorm helped, but I was just at sea, and embarrassed that I needed so much help. (I’d arrived at college knowing two other freshmen — both of whom were in completely different course paths — and did not know any women concentrating on CS, other than that one teaching assistant in charge of my discussion/lab section.)
I passed the class, but wasn’t nearly confident or skilled enough to go into the major or even a minor — and that suited me all right, because now I got to say, “See Dad?Â I’m not meant to be an engineer.” and go major in something else.Â I eventually turned into a manager, facilitating open source work, and I’m happy with that.
Only a few weeks ago, a decade after this class, did I realize that it wasn’t just me that failed — the teaching assistant failed, too!Â She could see that I was struggling, and didn’t reach out to help me figure out how to learn.
That was 1998.Â I was an insecure teen, the Web and Google weren’t nearly as substantial and useful as they are now, and instead of play, programming only felt like a burden.Â I’ve dabbled since then, remembering to Google and gossip and game, creeping along towards a much less fraught relationship between myself and programming.Â And now I have Systers and Geek Feminism; I know countless technical women who teach me, and whom I can teach.
Since then I’ve learned a lot of domain knowledge about tech and myself.Â I’ve become familiar with software engineering from the perspective of a colleague, collaborator, and manager.Â And I’ve learned more about how I learn, and how it compares and contrasts with how other technical folk learn, especially other women.
And as I see that there are many models of successful learning — social and shy, intense and trickling, linear and spiral — my shame about my college failure leaches away.Â I’m not A Failure; I just tried that time that one way, and it didn’t work out.
The other day I talked with my spouse about how I think I can’t be a tech leader unless I’m a hands-on technologist, and he basically said, you’re a good manager.Â And yes, you’d be a better manager if you were also a developer, so work on that if you want, but it’s not going to make the anxiety go away.Â This concern is just a convenient box to put your anxiety in, and if it weren’t this it would be something else.
I think he’s right.
And in a sense this is freeing, just as it was freeing when my dad died — now, if I develop my technical skills, it is no longer giving in to what he wanted my career to be.Â Similarly, if I know that developing these skills will not necessarily cure my anxiety, then I can just do it for reasonable and positive reasons, like “power” and “domain knowledge” and “tinkering”.
If you want to help people like me learn coding skills, and get into open source, provide that community — someplace they can gossip without fearing that they’ll develop reputations as emptybrains. Put up cheatsheets on the web, so Google can find them. And — along with encouraging newbies to learn things that’ll improve their career prospects and empower them — gamify. Provide a mind-itch puzzle and just hint enough that they’ll learn enough to solve it.
If you want to help people like Rustad enjoy FLOSS and get into programming, make it practical!Â Show them how quickly they can whip up helpful tools.Â And make time for intense one-on-one mentoring, and show up to newbies’ workshops.
How do you learn technical material and skills?Â I’m especially interested in hearing from women who spend a lot of time in a technical domain but whose first attempt at learning it went awry.