Google+ What’s Hot Serves Based On Gender: “I get that WH algorithms are based on what people click, like, share, comment on, etc. Fine. But I challenge anyone to give me one good reason why there should be such a drastic difference in less than ten seconds by simply changing my gender, other than institutionalized sexism about what girls and guys apparently like.”

Mapping the Geology of Skyrim: “What I now aim to do is open this project up a bit to other geologists out there who I know are interested in mapping Skyrim. I would like to call on your expertise to come up with hypotheses about the geological evolution of Skyrim.”

The Business Case Against Booth Babes: “But the booth babe approach overlooks the essential connections brands need to make with their customers–for many brands, a group that is mostly and increasingly women–and the subsequent need to develop a culture that includes women as part of the conversation.”

Dear Learn to Code Startup, an open letter from a computer science teacher. “[I]f you really want kids to learn to code […], then don’t make yet another tool or start yet another class that’s separate from your nearby school.” What follows is some good practical advice on how to help way more children learn to code.

You can suggest links for future linkspams in comments here, or by using the “geekfeminism” tag on delicious or pinboard.in or the “#geekfeminism” tag on Twitter. Please note that we tend to stick to publishing recent links (from the last month or so).

Every good work of software starts by scratching a developer’s personal itch.

Regardless of the truth of this assertion, somewhere along the way I got the impression that people usually get into open source via “scratching their own itch,” and I mixed up prescriptive and descriptive to boot. Personally, I started dabbling in open source testing hoping to learn a bit of Python, and then really got stuck in when I saw a clear unmet need for documentation even though I wasn’t personally going to use it. Sometimes I thought I was inferior — surely I ought to have been thinking up my own projects, improving my work environment, and writing things that would help me out, thus getting me into a virtuous circle of learning?

Here’s one: the newbie who finds it frustrating that they “don’t have ideas.” This person, like me, has heard the message that a REAL programmer or a REAL open source contributor is supposed to be a self-starter who comes up with their own project ideas from the start and uses them to learn. Or the newbie knows they learn best by doing, but they feel a discouraging malaise whenever they attempt to think of an idea to pursue.

This affects people of all backgrounds, but I wonder — is it harder to reflexively “scratch your own itch” when you’ve been taught, as so many women have, to stop scratching and sit like a good girl? If you’re part of an oppressed group, and parents, schools, peers, mass media, and bosses have all consistently punished you when you speak up about a missing stair, then is it any surprise that you’d be slow to start picking up the saw and hammer?

I had finally learned that whenever I got angry and I tried to do something about my anger to the source of my anger, everything just got worse for me.

So in the long run one answer to this is that we have to work to make sure everyone has agency and feels it, their whole lives. But, given that some of us struggle with remembering our agency, and that it’s fine to have different learning styles, here are some ideas for priming the idea pump, or for alternate pathways into learning and getting into open stuff.

Embrace boringness. Look at other fields, like sewing, where it is totally fine to start off by making a simple handbag off a common pattern. In open stuff this might be the “same old same old” LED clock or blog platform. If an idea appeals to you but there’s an inner censor saying “that’s too boring” or “what’s the use,” you can tell that inner voice that Sumana says “shut up.” For me, it’s Skud saying “shut up” to that inner censor.

Embrace silliness. Perhaps the equivalent of embroidering a happy face onto an oven mitt. Again, if you think it would make you a scintilla happier, go ahead. And again, I have a Skud in my head telling the naysayer to buzz off.

Find someone else’s pain point. It is perfectly legit to work to improve shared tools. Look around at places online or in your local community where people are asking for help. Maybe you can find a ridiculously tedious data entry job that you can help with a corner of, or it would be nice if a light over here lit up when such-and-such happened. In a sense, this is what Outreach Program for Women, OpenHatch, and Developers For Good offer: the organizers have already curated the TODO lists so you can pick out the tasks that interest you. It is fine to simply piggyback on existing projects and drift around a bit learning lots of little things that way, and the more you learn and do, the more needs and opportunities you’ll discover.

Work with scraps. I get anxious over wasting food or cloth or paper, so when I cook or sew or write stand-up comedy or poetry, I feel more comfortable working with scraps, with leftovers. When I am scribbling ideas for stand-up bits, I prefer to use textfiles that already have miscellaneous jottings in them, or little half-full notebooks, or odd-shaped scratch paper. No doubt my preference for pre-ruined materials reflects my perfectionism and anxiety over worth. I can be creative more easily if the materials were just going to go to waste anyway. I think the trick to addressing this mindset, in the long run, includes habits of deemphasizing and subtlety, tricking oneself into not making a big production out of any given attempt. I’m not good at that. But in the short term: scraps. Find patterns in datasets you already have. Look through old academic papers to find citations to add to Wikipedia. If you have a web presence you barely use, repurpose it as a CSS playground. I’d love more ideas around this theme.

The examined life. What do I actually want? Is there a thing that could make my life better? Honestly I find this question really hard to answer; it requires that I address the pain of unfulfilled desire instead of just accepting my world as it is. But if I have conquered some of the ways the kyriarchy has colonized my brain, then it’s possible to hear the “$foo would make my life better” signals and perhaps address them through technology.

What have you found useful in overcoming the myth of boundless ideation, or in learning to listen to your own itch?

I have anxiety about learning technical skills. I wrote about this a little while back. But now I know more about how I learn, and, in bits and snatches, I am gaining proficiency and confidence. Here’s a summary of my journey over the last several months with learning more programming skills (in this case, mostly in Python), with links to some resources in case you’re like me.

I get anxious when learning skills that I think I should already know; I feel behind and guilty. Structure, little rewards, friendly sociability, and encouragement from other women help tremendously. Tedra Osell writes about this in the context of writer’s block, and FlyLady and Cheryl Mendelson’s Home Comforts speak to that problem in learning to keep a comfortable home; the people and resources I mention (CodeLesson, OpenHatch’s Boston Python Workshop for women and their friends, CodingBat, and the Python Challenge) provide many of the stimuli I need. Also, my anxiety spikes if I think I am supposed to compare my speed or quality of work with others (hence my post’s title), but cools down if I see evidence that someone else wants to patiently help me. These resources helped me learn without pushing my “argh everyone’s better than me” buttons.

So, first: CodeLesson. The vintage and handmade store Etsy ran a free four-week online course in HTML, CSS, JavaScript, and the Etsy API. Hundreds of people signed up; I got on the waitlist, and eventually did three of the weeks in September and October. (I then had a big crunch week at work and didn’t finish, but I intend to finish that last week’s work anyway, to learn animation and pagination in jQuery.) It was exactly what I wanted — well-written tutorials and exercises to get me over the initial hump. I now know a little CSS, JavaScript, and jQuery, which is infinity percent more than I knew before. I had lots of fist-pump “Yay, I made it work!” moments. And the instructor’s praise of my work helped; I’m a social animal, and recognition and praise from instructors helps reassure me that I’m on the right track.

Thanks to Etsy for the free class. And I liked the CodeLesson interface and infrastructure enough that I may pay for additional CodeLesson classes, or get my organization to follow Etsy’s lead and offer classes through them to increase our users’ skills.

An instructor looks at a student’s laptop at the Boston Python Workshop

It’s a good thing that the Friday night prep part was three hours and that I already knew a bunch of stuff that other people were new to (familiarity with the command line & the Python prompt, etc.) since I was an hour late! It was good to fix the syntax-y bits in my mind. The CodingBat exercises were great practice and I got a big triumphant fist-raised feeling when all those unit tests passed.

In between sessions, I chatted with some of the people who run the program. It sounds like each individual run of it costs about $300 for lunch for everyone and that’s practically it, since they use volunteers and the venue time is donated (and then like $10 total for pens/sticky nametags/laser-printed “here’s the workshop” signs/etc.). That’s practically out-of-pocket for a tech community, and they get grants. So it’s totally replicable. I’ve been reminded that it’s important to treat these kinds of workshops more like a community introduction than as standalone events; local user groups and communities should be the teachers, and email blasts and encouragement should integrate participants into their local hobbyist groups.

Saturday morning’s lecture included some review of stuff I knew, but it went fast enough that I was still learning most of the time — like, how to ask for the nth character in a string, or how for-loops quite work, some subtleties of scope, etc.

Then the project bits — the teachers and their presentations weren’t quite as polished as Jessica McKellar, who had led the earlier parts of the workshop. But I still learned a lot and got to make cool things happen using, say, the Twitter API, and that was very neat. As designed, the workshop led me through small, basic exercises first (the equivalent of finger exercises in piano), then showed off visually satisfying things we could do with Python and its ecosystem.

Aside from tiny minor delays, the workshop basically ran like a Swiss watch the whole time. I was impressed. It takes a lot of preparation, skill, and practice to make an event like that go so smoothly and teach so many people; congrats to the workshop volunteers! And I’m glad I went, learned and remembered Python, and got more confidence to attempt projects. On a community management level, I’m also massively grateful that I’ve seen firsthand an example of how we can construct and maintain these parts of the pipeline, to help more girls and women get into STEM.

The workshop so excited me that I then did all the Python exercises on CodingBat, and started Python Challenge (I’m at step 4 or 5 right now). They’re complementary. They both gamify learning, and you don’t have to look at how other people are doing, and they both have somewhat granular ways of kindly telling you when you’ve done something slightly wrong. With CodingBat it’s the unit tests, which go from red to green when you cover another edge case. In Python Challenge, for example, at one point I went to a URL where I had transformed the filename from the previous URL per a transformation hinted at in the challenge. The URL had ended in .html, and after the decryption, it ended in the extension (making this up to avoid spoilers) “.ywnb”. At that address was a text file that the server signalled you should download. I downloaded and opened it and it just said, “have you ever heard of .ywnb files?!” or something like that, implying basically that I shouldn’t have transformed the file extension, just the filename. So, it didn’t just fail, it gave me a nicely furnished dead end, signalling kindly but playfully that I had done something understandably wrong.

Progress graphs from CodingBat, showing my attempts to solve two problems; the green portions are unit tests that passed, and the red and pink portions are unit tests failing. The exercise “String-2 end_other” took me a while, but I got it.

Also, CodingBat is pretty clear about how you solve any given problem (declaring that this set of problems is about lists and only 1 layer of for-loops, or what have you), whereas in the Python Challenge you have a puzzle that you know you can solve with Python but that you can hit a bunch of different ways. If you want an experience with arguably more realistic exercises, the author of CodingBat also made the Google intro to Python, which includes exercises along the lines of “munge the semistructured data in this file with these guidelines.” I intend on doing that this year.

Python Challenge is mysterious, yet friendly.

It was good to have my spouse Leonard nearby to help me when I was working on the Python Challenge, to (for example) help see that I had called a variable inconsistently, to notice that I couldn’t import a file as a module because I’d named it “1” instead of something starting with a letter, to remind me how to learn of (“dir(filename)”) and then use (“filename.function”) the functions within it, to tell me about string.replace, and to tell me how to use the interactive prompt properly to investigate how you call a method on an object of whatever type. But I did nearly all the work myself. And as of today I feel a lot more comfortable using for-loops, knowing what data structures to use for a problem (I decided to use a dictionary datatype the other day! And it worked! So exciting!), getting stuff in and out of dictionaries, and generally thinking “I can learn this!” Data structures and algorithms had felt mystifying to me. Now data structures no longer do. I remember the moment in Python challenge when I thought, “I’ll use a dictionary!” and I was right! It’s great.

I’ve just begun CodeAcademy and stalled (as with all the rest of my learning-to-code endeavors) due to lack of time, as my job is pretty absorbing right now. (Worth a skim: Scott Gray’s thoughts on CodeAcademy.) I also haven’t tried Philip Guo’s online Python tutor which may suit me better since I’m more interested in Python than JavaScript right now. But I thought it might help others to talk about my journey so far.

My name is Jessica, and I’m an organizer, curriculum developer, and lecturer for the Boston Python Workshop, a free, 1.5 day project-driven introduction to Python for women and their friends. The workshop has run twice, in March and May, and the third run is happening in July at Google Cambridge.

I’d like to share some of the lessons the Boston Python Workshop staff have learned about organizing outreach workshops and our goal of bringing more gender diversity to the local Python community.

First, the structure of the Boston Python Workshop

The Boston Python Workshop is for women and their friends who have no or limited programming experience (I’ll talk more about “women and their friends” in a bit).

The workshop is held on a Friday evening and all day Saturday. On Friday, attendees set up their development environments and start learning Python through a self-directed tutorial and practice problems.

On Saturday, attendees continue learning Python with a 2 hour interactive lecture. Attendees and staff socialize over a sponsored, on-site lunch. In the afternoon, we break out into groups to practice Python while rotating through three short projects on a variety of fun and practical topics. Our projects have included writing parts of a Twitter client, how to cheat at Words with Friends, writing a basic web app in Django, and writing graphical effects for a ColorWall. Our material is all online, so check it out.

This comes to a solid 10 hours of learning and practicing Python, with support from a strong group of volunteers from the local programming and open source communities. The workshop is run under the auspices of the Boston Python Meetup (I’m one of the Meetup organizers) and we hold follow-up events like an open Project Night through the Meetup.

Lessons learned about teaching Python to beginners

There is a huge difference between teaching Python to people with programming experience in another language and people with absolutely no prior programming experience. The biggest lesson we learned is that if you are going to teach absolute beginners, you have to commit to really starting at the beginning:

The psychologists asked female students studying biology, chemistry, and engineering to take a very tough math test. All the students were greeted by a senior math major who wore a T-shirt displaying Einstein’s E=mc2 equation. For some volunteers, the math major was male. For others, the math major was female. This tiny tweak made a difference: Women attempted more questions on the tough math test when they were greeted by a female math major rather than a male math major. On psychological tests that measured their unconscious attitudes toward math, the female students showed a stronger self-identification with math when the math major who had greeted them was female. When they were greeted by the male math major, women had significantly higher negative attitudes toward math.

In the next study, they found that university-level women asked fewer questions in class and in office hours after a term with a male prof than they did after a term with a female one. And in the final study, they found that women had more confidence with a female teacher… even if tests showed that they were outperforming their male colleagues.

The latter two studies could be for reasons other than the gender of the teacher: previous studies have shown that although fewer women reach the level of prof, those who do tend to be exceptional so it might be their innate talents and not as much their gender that allows them to reach their students better. But still, it’s an interesting selection of research, and really speaks to why outreach from women’s groups like my local CU-WISE can be especially valuable! We do a variety of events for younger women including helping at summer camps, science fairs, and visiting schools.

So next time you wonder if it’s worth doing an outreach event, remember that your smiling face may be just what another young woman needs to get her to try that little bit harder!

This was originally written for the CU-WISE blog and has been altered slightly for GF.

So far in the grading it seems like everyone did their fair share of the work. Then I get to the last group I was going to grade for the night. It is two men and a woman. I read the men’s reports first where one of the men was a superstar, but they rated the other man and woman as doing great work; both men agree, the female student in the group did fantastic work.

Then, I get to her report. She gives herself the worst grade I’ve seen assigned to anyone else thus far. So I read through her explanation where she says that she doesn’t feel that she contributed as much, that she doesn’t have the same skill set, and so forth. I just about wanted to cry. Here was a young, energetic, stellar female programmer who when comparing herself against her male colleagues felt that she didn’t equate. I put my computer down, and decided to call it quits for the night while I ruminated on what I was going to do.

Laurian ended up sending the young woman an email about impostor syndrome and urging her to learn more, as well as letting her know that despite her bad self-evaluation, her peers actually thought she was doing a great job. You can read the letter here. I’m betting a lot of folk would love to have a teacher like Laurian who was willing to go out of her way to make sure you knew you were doing just fine, and that feeling insecure about it is something that happens to many competent people.

I’ve most definitely seen impostor syndrome among my students, and while I’ve never had to send an email like Laurian’s, I’ve often spent a lot of time congratulating students (loudly) during tutorials and encouraging them to show off their awesome work to others. Sometimes it’s amazing that the students who were too afraid to share at the beginning of the term are making all kinds of fun variations on their tutorials and bragging to their friends (and me!) by the end of the term. I’m lucky to teach such talented students.

So my question to you is two-fold:
(a) How have you combatted impostor syndrome in others?
(b) How have people helped you out with your own feelings of insecurity?

Students who did not have the privilege of hacking since they were young are at a disadvantage in Computer Science (CS). However, CS departments can teach introductory programming using an obscure functional programming language to limit the young hackers’ advantage. Most students with prior coding experience learned a procedural programming paradigm, so forcing all students to struggle with learning a new, functional language helps restore meritocracy.

While I think my course was pretty sucky, one good thing it did was to knock the wind out of the sails of those guys who’d been programming for ages – by starting us on an obscure functional programming language called Miranda (oh did it ever raise a whole lotta grumbles from the boasters). Only after that did we do procedural stuff like C, and then onto C++. Mind you, the whole course seemed determined to be as academic and un-real-world as possible, so C++ was probably the most career-relevant thing we got out of it! […]