09/30/13

Remember Daily Coding?

So I fell off the daily coding wagon.  This is my usual mode of operation.  It takes a few tries before a habit will stick.  The beginning of the school year is a hard time to start and/or keep a habit.  The schedule isn’t normal; there are many evening obligations; and one is generally mentally and physically exhausted.  But this week, I vow to start again.  I’m going to begin by doing a few fun things until Thursday, when I plan to start taking an online course.  Even when I know the material from a course, I like taking them because they do keep me coding, and I often learn new ways of doing things.  They also make me think about how I structure my own courses, which is a win-win.  I will continue to keep myself honest by posting in the daily coding section.

07/25/13

Daily Coding

This morning, I ran into this blog post about a women who decided to learn to code by coding every. single. day.  She also decided to be publicly accountable and is pushing all of her code to GitHub.  It’s very impressive.  There are some great lessons in her post about learning to code that I think every person who wants to learn to code and feels intimidated should take to heart.  In fact, much of what she says are things that I wish I’d said to myself years ago.

It’s scary to have all of my mistakes and misunderstandings out in the open. The fact is, that if you want to learn to code you are going to make a lot of mistakes, but just because your code might look a little goofy doesn’t mean you should stop coding. And you don’t need to be a certain type of person, you don’t need to be a math whiz, and you don’t need any prerequisites, because the compiler doesn’t give a damn about that. You just need to start typing.

When I started learning HTML/CSS, I didn’t worry about mistakes or bad code or anything, mostly because I was doing this for myself.  My websites were public, but this was 1996 and the web was a small place back then.  Everyone’s websites looked awful, even most professional ones.  But as the web developed and as I moved into an IT related job years later, I forgot some of that original feeling of doing things for myself.  I was surrounded by expert coders, both at work and most especially at home (ahem, Mr. Geeky, I’m looking at you).  I did not want to be embarrassed.

Ironically, that feeling has gotten worse as I’ve gotten better.  Now that I’ve ventured past HTML/CSS/PHP/Javascript into other languages that are what most people would consider “actual programming,” I feel even more intimidated and sometimes frustrated.  I need to put those feelings aside.

I think the best way to learn is to solve problems that you actually have. This is the primary reason I decided not to follow a course or textbook. By following my own path, I can tackle new concepts and problems in the most logical order possible, which is precisely when I have them. When I have questions, I look them up on Stack Overflow.

This is what I used to do.  I’d want to build X, and back in the day, I’d actually head to IRC to find answers to my questions (pre-Google, remember).  I still do that and things work best for me when I have a specific, personal problem I want to solve.  During the school year, I often code up my students’ projects that they propose.  I find that very useful for both learning new things and for teaching.  I often find more than one way to solve a problem and then I can point the student in the right direction.  I don’t reveal the actual solution.  I find it harder to be inspired to code during the summer.  During the summer, I’m planning, thinking, reflecting, and not always doing.  Even though I want to be doing.  I have this open schedule, all the time in the world.  I have Mr. Geeky to help me (though I really don’t want his help for all kinds of complicated reasons which I’m sure you married folks out there understand).  But every summer, I do less coding than I intend to.

So, I’m hereby (inspired by Jennifer DeWalt) adding to my goals to code every day, to make something every day.  180 days from today would put me at the end of our first semester, a perfect stopping point for this project as my workload is heavier in the second semester.  If anyone wants to join me, jump on board.

03/29/12

Women and Coding

I’ve been meaning to write for a while now, but I’m on break, and I basically refuse to use my brain. :)  Actually, there’s more to it than that, which I’ll get to in a minute.

Over the break, I ran into a couple of articles about Digital Humanities and coding, both by women.  They both address issues with exhorting women in DH to code.  Miriam’s post (second one linked) discusses the issues of the unfriendliness of both in-person and online communities for learning, and the pressure of representing all women.  The other post is more about not blogging and tweeting more, but it shares an issue with the other, which is about time.

These posts come on the heels of an interview I had with Audrey Watters about coding, and an article in the New York Times about the need for everyone to learn to code and touting all the new online ventures that are supposedly helping people to learn to code.  There are, btw, several women quoted in the article, at least one of whom I actually know in real life.  It’s a small world of people who think about these things.  There should be more of us.

As someone who is simultaneously learning to code and teaching women to code, I think a lot about why more women aren’t interested enough in coding to take the time to do it.  And I can come up with a few key things I’ve been thinking about.

First, to address the issue of whether DH’ers or anyone else should learn to code.  Short answer, yes.  Yes, they should know a little code.  They should spend maybe just a few weeks learning enough to write a couple of simple programs–in Python or PHP or Javascript or whatever, doesn’t matter.  It will at least give them an appreciate of how machines work and interpret instructions, of the limitations of what we can tell computers to do, and the logic of the instructions we give.  It helps people see the gap between how humans process information vs. how computers do, which has to be a huge help to anyone, but especially for those in DH.  This is not to say everyone doing DH should become an expert coder.  Only if they want to.  There are plenty of ways to contribute without knowing how to code.

Second, why don’t more women pursue coding, especially with all these great resources that are available.  The answers differ, depending on where you are.  For my students, there’s the time factor–finding time for a class or an after-school program or just figuring it out on their own.  And when your schedule is already packed, that’s hard.  But there’s also a coolness factor (or lack of coolness factor, I should say), something the first post I linked mentions as an issue for teens.  That’s hard to overcome.

Older women also have the time issue.  And here’s where I get to my break.  I could be coding over break. I’m not. My husband did.  He codes in almost every spare moment of his time.  Sometimes I do, but a lot of times I don’t.  And frankly, I attribute some of that to being a woman.  Even if the actual physical labor of our household is evenly divided, and it’s not quite, the brainpower devoted to it is not.  As soon as my husband walks out the door, he’s not thinking about whether the kids will do their homework and clean their rooms or the fact that we’re out of butter or milk or that I have no underwear and therefore need to do laundry.  Those thoughts crowd my head, plus doctor’s appointments, etc.  That’s not to say I’m distracted when I’m working, but it often means that when I do have spare time, those things become my priority, not coding.  Learning anything is a challenge, and frankly, learning to code is not a cakewalk when you get past a certain level.  It’s higher order problem solving.  It puts my brain cells into probably their highest gear.  Which is great and exhilarating at times, but requires energy.  And if I’ve just put in a long 10 hour day teaching, I have a hard time mustering the energy to code.  And laundry takes less energy and it’s already in my head to do anyway.

The other, more important issue, I think, is about the culture.  Learning to code is about entering another culture.  Miriam mentioned the inside jokes that go along with this culture.  Those jokes, along with many other things, are meant to keep people out.  And that’s the nice way of doing it.  If you’ve been to Slashdot lately, you’ll see the not so nice way.  Programming culture, especially online, is not far off from Mad Men.  Women are made to feel that they don’t belong and we shouldn’t worry our pretty little heads about it.

The culture also creates particular structures for learning about programming which are not friendly to women.  Here’s how most men I know learned to code.  They or their parents bought them a (Tandy, IBM, Apple IIe), and they used the manual to learn to program, often in BASIC.  They did this on their own, in their bedrooms or rec-rooms.  By the time, they got to high school, they joined the computer club, which brought together all the other boys who’d learned to program the same way.  By the time they got to college, they’d written programs to do all kinds of things–from games to graphics to organizing their cassette tapes.  Girls, in contrast, often weren’t given a computer.  I got my first as a sophomore in college. Nowadays that’s less true, but nowadays computers don’t immediately look like they need to be programmed.  Why would anyone learn to program on their MacBook?  It’s got tons of programs.

The mostly solo, figure-it-out-for-yourself mode of learning has now been transferred online.  Every venture out there, from Stanford’s CS courses to Codeacademy, takes this as its model.  They think, well, I learned on my own, so if we just give people the resources, they can do it, too.  No, really, they can’t.  They might be able to get started.  But there’s no sequence of courses.  One doesn’t progress from easy projects to harder ones.  One doesn’t learn the next level of things, because often one doesn’t know the next level.  There aren’t group projects or socialization or a context that’s interesting and fun.  I’ve taken a couple of these courses.  In one from MIT, the first lesson had us calculating the first 1000 prime numbers. Woo hoo.  That’s going to be something I use again.  My first lesson in the class I teach? Draw a square with your robot.  Same principles apply, but it’s a lot more fun, imho.

My point is, these courses attract the same kinds of people to CS that CS has always attracted.  They’re not doing things differently enough to reach folks who’ve looked at coding and thought, nope, not interested.  As Miriam says at the end of her post: “If you want women and people of color in your community, if it is important to you to have a diverse discipline, you need to do something besides exhort us to code.”  Yes, you need to do things differently–way differently.  You have to attract the artist and the musician and the future scientist.  You have to contextualize coding within things that they’re interested in, not within things that you think are important.  It’s why I changed my 8th grade curriculum.  Okay, I said, you don’t like this, then let’s do this.  Similar information is being taught, but hopefully it’s in a way that doesn’t turn people off.  And I think it means you have to accept that most women haven’t been sitting in their basements hacking on their computers (though some certainly have), and that might mean explaining the inside jokes (or not telling them) and not assuming that they have a certain baseline knowledge.  And you can’t berate them for that.  I mean Apple once said, “Think different.” But when it comes to teaching coding, few people are.