Tag Archives: openhatch

A breakout group at the Boston Python Workshop work at laptops around a table

– the anxiety of learning and how I am beating it

Beating learn-to-program anxiety with good gamification and courses

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.

A couple months later, I had a chance to attend OpenHatch’s intro-to-Python workshop specifically meant for women and their friends. I’d read about these before, on GeekFeminism and elsewhere, and it sounded like it would fit how I learn as well as help me plan to hold similar events in my community. So, on a Friday in December, I took the bus from New York City to Boston.

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

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.

Screenshot of two progress graphs from CodingBat

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.

There’s probably some game design term for this kind of compassionate railroading, but it makes me think of the caring side of the caring-to-combative community spectrum. And in both cases I got that feeling of being nurtured by someone who cared, even if that someone else is Nick Parlante (CodingBat’s author), years ago and a continent away.

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 logo

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.

CodeLesson, CodingBat, the Python Challenge, Leonard available for occasional consultation, and the Boston workshop are the dance partners I needed.

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.

Máirín Duffy giving a presentation

Wednesday Geek Women: Joanmarie Diggs, Máirín Duffy, Jessica McKellar and Stormy Peters, open source contributors

This is a guest post by Marina Zhurakhinskaya. Marina is a software engineer at Red Hat working on the GNOME desktop and organizing the Outreach Program for Women in GNOME. This post originally appeared on her blog for Ada Lovelace Day 2011.

I’d like to tell you about four women who have inspired me to no end with their work, insight, and community outreach. Every interaction with them has motivated me in my work. Essentially, by being as dedicated as they are, they bring out the best in other people. I’m lucky to have met all of them and to have worked with them on community outreach efforts.

Joanmarie Diggs has worked for the Carroll Center for the Blind for the last 14 years, helping visually impaired people learn to use assistive technology. She decided to teach herself programming in order to contribute to Orca, GNOME’s screen reader. She eventually became the maintainer of Orca. Exactly a month ago, she was hired to work on GNOME accessibility at Igalia within 4 hours of posting on Twitter that her grant-funded position at the Carroll Center had been cut.

Joanie’s tweets are always infused with a great deal of humor. She says “Random thought: I wonder if I’ll ever shovel snow again….†in the wake of her move from New Hemisphere to Spain. Joanie has been a very caring mentor for one of the participants in the recent round of the GNOME Outreach Program for Women. She is the best role model I know for any woman getting involved in GNOME development.

Máirín Duffy giving a presentation

Máirín Duffy, by Ramakrishna Reddy y, CC BY-SA

Máirí­n Duffy is an interaction designer at Red Hat. She has a strong commitment to graphic design with free software. She has been using 100% free software to create her designs for many years now and has created many resources and opportunities for others to learn free software graphic design tools.

Máirín created the Fedora Design Bounty project to provide people interested in contributing to Fedora design with well-defined tasks suitable for beginners. She created some great flyers and art work to promote the Fedora Design Suite spin at SXSW. She ran Gimp and Inkscape classes for local middle school students and for Girl Scouts, creating great resources for both. Helping Máirín with the Girl Scout classes and going over these resources was actually how I learned do useful things in Gimp and Inkscape.

Máirín has showcased 17 open fonts in an “Unpackaged Font of the Week” series in her blog. There is always some fun and inviting project she talks about in her blog, accompanied by great pictures, designs, and educational resources.

Jessica McKellar is a recent MIT graduate who works at Ksplice. She organizes Boston Python Workshops for women and their friends. These workshops assume no prior knowledge of programming and walk the attendees through the installation steps, basic Python constructs, interactive programming exercises, and small projects during a 1.5 day event. Jessica explains programming in an engaging way and she and other volunteers help the attendees with any stumbling blocks throughout the event. These workshops get filled up within days of being announced and, in response, have grown in the number of attendees they accommodate. Being able to learn how to program in a supportive environment where any setback is resolved within minutes is tremendously empowering to the attendees. Jessica has found a great approach for helping more women feel confident about learning to program and the detailed materials she has created are now used for similar workshops in other cities.

Jessica is one of the maintainers of OpenHatch, a community website that provides the information and teaches the necessary skills for getting involved in free software. Open Source Workshop is another event Jessica recently organized together with Asheesh Laroia, who is the creator of OpenHatch. This workshop walked the attendees through the basics of free software contributing and gave them hands-on experience with using IRC, working with patches, and triaging bugs. Participating in such events gives the attendees the necessary confidence to make their next steps in the free software world. The first step is often the hardest and the community events Jessica puts together help many people make it.

Stormy Peters photo

Stormy Peters by Ross Burton, CC BY-SA

Stormy Peters is the Head of Developer Engagement at Mozilla. Before that she was the Executive Director of the GNOME Foundation. After leaving that position, she ran for the 7 person GNOME board as soon as she had a chance, coming in first with the largest number of top votes. Stormy is also the founder and president of Kids on Computers, a nonprofit organization setting up computer labs in schools where kids have no other access to technology. Her leadership and ability to connect people is a great gift for all the organizations she is involved with.

Stormy has been my go-to person for the last two years in which we have been working on the GNOME Outreach Program for Women. She championed the need to revive the women outreach initiative in GNOME and has helped with everything from getting sponsorship to answering applicant inquiries. It’s a great luxury to know that I can get sound and helpful advice from her about anything related to the program. When not bouncing ideas off of Stormy, I like reading her blog posts. They are just as insightful, both on matters related to free software and on other things in life.

Creative Commons License
This post is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Want to highlight a geek woman? Submissions are currently open for Wednesday Geek Woman posts.

Google, gossip, and gamification: comparing and contrasting technical learning styles

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:

  • Google
  • gossip
  • gamification

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.

Continue reading