Running Women Who Code

I’ve helped to run Women Who Code Sydney for about a year (along with Lucy Bain and Peggy Kuo), and it’s been a blast. We organise practical hands-on workshops for a variety of technology like Arduino, Golang, Sass, Scala and Swift.

Participants spend about 1.5-2 hours working through a tutorial or problem set on their laptops, and can ask volunteers for help if needed, so it’s slightly different to a typical user group: the attendees are expected to code at every event.  I know that I personally learn more when I’m forced to do something, as opposed to listening to someone’s experience, and after you’ve done the workshop, everything’s installed on your laptop ready to experiment more at home.

A typical event might be:

  • 6:00pm: Arrive and dinner, chat to others
  • 6:30pm: Announcements and introductions
  • 6:40pm: Speaker topic for the night (e.g. introduction to Reactive Extensions)
  • 7:00pm: Commence hacking
  • 8:45pm: Feedback forms
  • 9:00pm: Finish

Things I’ve learned while running a hands-on user group:

Have a target that people can aim for
Inviting people to “learn some javascript” where there’s no specific learning material makes for a confusing meetup, because there’s no target to aim for. People will ask a variety of questions from all different angles (e.g. “what does var mean?”, “what do you think of angular vs react?”, “can you explain promises?”). If you provide a tutorial or set of exercises, there’s a defined path that is supposed to be followed to learn something, which cuts down lines of questioning and also provides people with a goal.

Designing a tutorial from scratch takes a lot of work (and rework).
You’re not likely to get it right on the first go, so unless you’re aiming for something you can re-use, you are better off going with already published material.

Utilise existing interactive online tutorials
They’re a big win. The tutorials have already been tested by hundreds of people before you, and someone has put a lot of effort into designing them. They explain concepts step-by-step probably better than you will first time.

Always try out the tutorial first
It’s important to gauge difficulty and identify what prerequisites are required. Also, sometimes the instructions change and it’s not the same tutorial any more!

Give people the answers upfront
If you are writing a custom set of exercises or tutorial, give everyone access to the answers. When people start with a working solution, it’s a lot easier to break various bits to see what they do, rather than having broken code and trying to diagnose what needs fixing.

Have some helpers available to answer questions
This is the thing that people don’t have access to at home. It really helps.

Aim to maximise everyone’s learning experience
You won’t actually cover that much material in a two hour window, so try to pick content that people can try at their own pace – that way everyone learns something.

Select an audience for your meetup
Choose either beginners, or people who are already familiar with programming. It is very difficult to cater for both at the same meetup.

Clarify prerequisites
State whether people need to understand simple if/else statements, or something more involved like recursion. If people turn up to an advanced tutorial but only know basic programming, they might start feeling like they don’t know anything and get discouraged – that’s the last thing you want!

Limit the speaker’s time in chunks
A 10 or 15 minute window is a good amount of time to keep people’s attention (especially after they’ve done a full day of work). Talk for a bit, let people experiment and try what you talked about. Repeat. This is difficult to keep in balance with a self-paced set of exercises, because some people will be ready for the next section before others, but it keeps people focused.

 

Hello, Arduino

Last September, Women Who Code Sydney ran a Learn Arduino event. I’m generally not very keen on hardware, so I hadn’t bothered to investigate Arduino in depth, but this blinking green light from the workshop was one of the most exciting things I’d seen in ages. It was programming in physical form: I’d written the code, sent it to the motherboard, plugged in the wires and resistors to control the current, then seen something in my environment that I could actually touch and change.

IMG_7199

Arduino has been around for a while. It is a small version of a computer with very simple inputs and outputs, and that’s what makes them really fun to play with.  There are lots of different input sensors you can use, like temperature sensors, movement, infrared, light.

It’s fairly inexpensive to get a basic Arduino kit, as cheap as $30 depending on where you get it from. Atlassian kindly sponsored our event and donated 20 starter kits which included the basic Arduino board, and a whole lot of extra sensors to play with.

  • 1 x 830pt Breadboard
  • 4 x LED
  • 2 x RGB LED
  • 1 x 9V Plug
  • 1 x 9V Lead
  • 1 x Breadboard Power Module
  • 4 x Tactile Switch
  • 1 x Small Slide Switch
  • 10 x Resistors
  • 1 x pack of jumper wires
  • 1 x Light Dependant Resistor
  • 1 x Small Plastic Servo
  • 1 x Buzzer
  • 1 x Linear Rotary Potentiometer
  • 1 x Ultrasonic Sensor
  • 1 x Hall Effect Sensor
  • 1 x 7 Segment Display
  • 1 x Temperature sensor
  • 1 x IR phototransistor
  • 1 x NPN transistor BC547

Our host, Natalia Galin did a phenomenal job preparing for the event, even down to these cheat sheets with components separated out and nicely labelled, which made it easy to work on our tasks.

IMG_7194

First up was a crash-course on electronics, and how the Arduino’s breadboard circuitry works.

IMG_7193

Then a series of programming tasks to connect up the wiring so that lights work, and using physical switches to turn lights on and off. It was addictive!

We were limited by how many kits were available, but we had around 25 people attend the workshop, and the atmosphere was great. A huge thanks goes to Google for sponsoring the venue and catering for the night, and Atlassian for the Arduino kits.

IMG_7200