Django Girls is a nonprofit initiative and community that facilitates free one-day workshops for women interested in learning about Python programming and web development with the Django framwork. From the first workshop in Berlin two years ago, it’s grown into a truly global initiative; the next workshops following ours were in Brno (Czech Republic), Mendoza (Argentia), and Mbale (Uganda). The aim: to bring more women into the world of technology by creating a fun and rewarding first experience with web development in welcoming and supportive surroundings.
What unites all the workshops on a practical level is the the Django Girls Tutorial, a continuously-evolving and collaboratively-edited guide that students follow to build and deploy a simple blog application using Django. Students work through the tutorial at their own pace, with small groups of around three students each assigned one coach to answer questions and help resolve problems.
Our workshop had 13 coaches (I was one), and 29 student attendees. The attendees were women from a wide range of different backgrounds: some were looking to get started in a tech career and wanted a taste of what Python and Django were all about; others were already working in technical professions and wanted to try out a different skill; others were simply curious or interested in learning something new and challenging. We had lunch, snacks, and copious amounts of coffee on hand to power us through an exciting and exhausting day of coding from 9am to 6pm.
It’s one of the strengths of Django Girls that the tutorial and the associated guides for running a workshop provide a fairly comprehensive framework, so organizers can build on the accumulated wisdom gleaned from past events rather than having to put together everything from scratch. But it was still interesting to think about the design decisions that go into creating a one day programming workshop. Why did the Django Girls format in particular seem to work well, and what kinds of values and pedagogical judgments does the structure encode about what should students should take away from the experience? When you’re putting together something like this, do you aim for depth in one topic or a broad exposure? More conceptual explanation or more hands-on activity? Should students build something interesting but artificial (a basic game, say), or should the focus be (as it was here) on a project that’s a simplified version of something in the real-world? Having to pack everything into eight hours also forces some hard choices about what to emphasize and what to leave out.
After going through the tutorial on my own in advance of the workshop and thinking about it afterwards, I think I’ve started to appreciate some of the choices behind the Django Girls approach. First: the idea is not really to teach Python and Django in one day --- that’s impossible --- but to provide a taste of the experience of working with both. Students won’t understand every step in building the project, but the experience of creating it is one that should hopefully encourage further exploration. The message is that building and deploying a basic web application is complicated, but not that complicated: you, a complete beginner, can do this in a day, on your own laptop, with open source tools that you can download for free.
That said, there is a lot to get through in the tutorial, and I was really impressed by how well the students handled the deluge of new information and techniques encountered during the day. Django Girls aims for breadth and for making things work, rather than spending too much time on programming fundamentals (like how objects work in Python, for example) which the student can easily return to if she decides she wants to learn more. Another touch I liked was that the tutorial is designed so that students will encounter errors by design before going on to fix them in later steps: the idea being that errors and breaking code are an important and necessary part of the development process, rather than a sign of failure.
Another key choice in the Django Girls approach is that it’s strongly focused on giving students an experience of the real world of web programming (as much as that’s possible in a one day session for beginners!). This begins with the choice of the Django web framework itself, which is powerful and flexible enough for major web sites, yet still relatively straightforward for beginners to use. It was exciting to be able to tell students that this was something I use every day (and about which I’m always enjoying learning new things too). Again, this is part of the message I hope students took away about web programming: you don’t need some expensive exotic software to develop for the web; the best tools, the ones used by the pros, are the ones that you can download and install yourselves for free. And that’s kind of a miracle. I think we’re now getting so used to living in the world that the Free Software and Open Source movements and a legion of volunteer programmers created that we sometimes take it for granted, but a miracle it is; it didn’t have to turn out this way. It was fun seeing this world afresh though the students’ eyes.
Another place the real world emphasis comes through is when the students learn how to deploy their site, first pushing their code to a github repository and then using the free PythonAnywhere service to run it on a remote server. This part was time-consuming and could get tricky for beginners; it would certainly have been much quicker and easier just to do everything locally (as the official Django tutorial does). But this really paid off in terms of student experience: there’s something peculiarly satisfying about seeing something you made ‘out there’ on the Internet. I encouraged my students to view their sites on their phones as well --- somehow it’s even more impressive when you see something you made through a completely separate device.
I liked the Django Girls Tutorial’s practical real-world approach, and I think the students did too. They were great: interesting, curious, and had a lot of very positive things to say about the workshop, the tutorial, and the project. Django Girls is still a new initiative and growing fast, and at this early stage it may be hard to tell to what degree it’s succeeding in its goal of encouraging more women to enter the tech world. And of course there’s certainly much much more to this challenge than just getting beginners interested, as last year’s excellent documentary film Debugging the Gender Gap demonstrates. But I’m certainly hoping that in a few years we’ll start to hear stories about workshop attendees now applying their creative talents in tech careers, and maybe working specifically with Python and Django as well.
A big thank you to all the coaches who gave up their Saturdays for our workshop, and especially to organizers Ivy and Kaye. I had a great time and I’m already looking forward to next year!
Learn more about Fusionbox, a python development company.