Talk from EuroClojure 2015 in Barcelona, on the ClojureBridge programming diversity initiative to bring more women and other underrepresented groups into the Clojure programming community. This covers what a ClojureBridge workshop is, why it's needed, and how to run one. The speaker organised the first European ClojureBridge workshop in Edinburgh, and now helps and mentors other people organising them.
10. ClojureBridge in 2014
April - Durham, NC
May - San Francisco, Brisbane,
Minneapolis
August - Melbourne
September - San Francisco, Edinburgh
December - Sydney
14. Gershom Bazerman - Letter to a Young Haskell Enthusiast
“If your primary goal is to spread
knowledge, then you must be
relentlessly self-critical of
anything you do or say that gets
in the way of that.
And you don’t get to judge that
— others do.”
15. Hacker School rules
No feigned surprise
No ‘well actually’s
No back-seat driving
No subtle -isms
Good afternoon - it’s great to be here at EuroClojure in Catalunya! I’m here to talk to you today about ClojureBridge, a project with the aim of widening exposure to the Clojure language and recruiting more people to the Clojure community.
My name’s Ali King, and I’m a developer in the Data team at FanDuel, the market leader in online daily fantasy sports (it’s big in America!). I’m also involved in coding education and diversity initiatives in Edinburgh where I live including Girl Geek Scotland and Learn Tech Edinburgh, an informal learn programming group. I serve on the board of ClojureBridge organisation, and help mentor event organisers.
So, what is ClojureBridge? ClojureBridge is a one day coding workshop aimed at introducing women to programming in Clojure. The workshops are free to attend, with the venue, refreshments and any other requirements covered by sponsors. There’s also an Installfest the evening before, so everyone can get set up so that they spend the actual workshop coding not troubleshooting. Although the principal target audience is women, some workshops have a policy that men are welcome to attend if they do so as the guest of a woman. The aim is to cover the main concepts of the Clojure language, and have the learner write a small application by the end of it. We also hope that they enjoy this enough to continue learning Clojure after the workshop is finished, and join Clojure communities in their location and/or online. The workshops are organised by people from the local tech community, but the workshop format and contents are developed collaboratively and shared internationally among all workshop organisers.
Before going any further, I’d like to say a bit about ‘diversity’ as a concept. Most diversity efforts focus on women because they’re the largest, most obvious group which is underrepresented in programming communities. They’re half the population, and this is pretty consistent wherever you are, and they are usually easily visually identified. Although the workshops so far have been aimed at getting women programming in Clojure, they can be targeted towards any other groups which are underrepresented in a local Clojure community. This might mean minority ethnic groups, the LGBTQ community, people with disabilities, or from economically deprived backgrounds. Some workshops have included genderqueer and gender-nonconforming people as well as people who identify as women. It’s also an option to target one group and encourage applications from people who belong to multiple marginalised groups. Many of the workshops have explicitly specified that trans women are welcome, as some other feminist organisations and events have not been inclusive of them in the past. For the remainder of this presentation I will be mainly referring to women (both trans and cisgender), but much of it is applicable to other groups.
In September last year the first ClojureBridge event in Europe took place in Edinburgh’s CodeBase, the UK’s largest technology incubator. Not the prettiest building, but full of great tech startups, and with a pretty spectacular view of the castle! We taught 20 women to program in Clojure, with the help of volunteers from the local tech community, and the support of our sponsors.
The event was organised and promoted through Girl Geek Scotland, part of the international Girl Geek Dinners network. It was the first time we’d run a coding workshop, but using the organisation’s network and financial setup helped enormously in promotion and handling expenses. We received financial sponsorship from GitHub, ScotlandIS, Entrepreneurial Spark, NCR and Scott Logic, and CodeBase gave us a venue free of charge. We were also able to give everyone who attended LispCast videos and copies of SICP Distilled courtesy of Eric Normand and Tommy Hall, and a stylish souvenir tote bag full of goodies from the sponsors and other organisations supporting women in tech.
I hadn’t run a day-long coding workshop before. I wasn’t hugely experienced with Clojure. It was a a matter of enthusiasm over experience. But I spoke to people who knew more about these things, and put the word out, set up a Twitter account, and people I hadn’t known previously stepped forward to help out with organisation, sponsorship and teaching. So if I can do it, so can you!
So how did I get involved with all this? In August 2013, I attended a one day conference in Edinburgh called Mostly Functional (run by Gordon Guthrie), which was unsurprisingly about functional programming, and was my first real exposure to the topic. By the start of the next year I started learning Clojure, and in March 2014 I attended an event called Clojure Launchpad, a one day introduction to Clojure for programmers already proficient in other languages. This was great, but like the conference before it, I was one of only a couple of women attending. I spoke to the organisers afterwards and suggested running a workshop targeting women, and they agreed this was a great idea. I looked online and discovered that ClojureBridge already existed as a concept (yay, less work to do!), and a few months later found myself organising one.
These motivations turned out to be exactly the same reasons that Sarah Allen and Sarah Mei founded RailsBridge in 2009. They attended Ruby events and conferences in their local area, and found that they were very frequently the only women there, and decided to do something about it. RailsBridge was originally a series of free one-day workshops in the Bay Area teaching women beginner programmers to build web applications using the Ruby language and the Rails framework. From the workshop guidelines: “Bridge the gap from aspiring developer to contributing community member, through mentoring, teaching, and writing.” We also bridge gaps across communities, between people who have access to tech & skills and people who do not, between people who feel excluded and people who live & breath this stuff with joy.” It was successful in bringing more women into participating in the Ruby community, and soon expanded across the world. I attended a RailsBridge workshop in Edinburgh in 2013. The RailsBridge format started spreading into other languages and areas, and so the Bridge Foundry was set up as an umbrella organisation.
And so ClojureBridge was born. The first ever ClojureBridge was organised by Bridget Hillyer in April 2014, in Durham, North Carolina. This was followed very quickly by ones in San Francisco, Brisbane Australia, and Minneapolis, then a few more, including Edinburgh.
And in June 2015 we’re currently running at 15 workshops, with the 16th due to be held this weekend in Minneapolis, and the 17th in a couple of weeks in Berlin. From March onwards we’re averaging 2 a month worldwide. As you can see from the map, the European ones have mostly been in Northern Europe - the UK, Germany and Scandinavia. There are a couple more UK ones being planned in Manchester and Bristol. [Raise your hand if you’re been involved in running a ClojureBridge workshop, past or upcoming?][Where’s everyone from? Raise you hand if you’re from x. Have I missed anywhere?]. So we’ve established that there are people in this room who could run workshops in [countries]. I think we’re off to a good start!
Since RailsBridge in 2009, there have been several similar international initiatives running workshops to attract more women to specific programming communities. Rails Girls was started in Helsinki in 2010, and currently runs around 5-10 events a month worldwide. RailsBridge runs events at a similar rate, but they’re much more US-focused in terms of locations, whereas Rails Girls have more presence in the rest of the world. Django Girls was launched last year, and has had over 40 events to date, again with good geographical reach. What’s worth bearing in mind when comparing ClojureBridge to any of these is that they all sprung from larger, longer established communities. Although Rails dates from 2004, Ruby goes back to 1995, and Python began in 1991. Both Python and Ruby are in the top 10 programming languages in use, by most measures, which means there are a lot of developers to choose from who might organise or help out at a workshop. Considering Clojure’s current situation in terms of community size, we’re doing pretty well so far, though I’d love to see ClojureBridge expand much further!
It’s well established that women are underrepresented in the tech industry, particularly in engineering roles. Functional programming has historically had lower female participation than many other programming fields. Perhaps due to functional programming’s academic roots, people have a perception of it being a bit dry, more mathematical than other varieties (and so therefore hard!), and are not really sure of its applications and benefits. Functional language communities also have a reputation for being hostile to beginners, where people asking questions are told to RTFM or have people answer in a way that underlines their inexperience.
And this can be tremendously deterring for anyone starting out on the road to gain programming knowledge. Women are more likely to be assumed by default to have less technical knowledge, and be challenged to prove their programming credentials. And when you add into this imposter syndrome, it’s easy for someone to believe that maybe they’re not cut out for this, and go and spend their time elsewhere. If we as a community want to expand our membership, we need to examine our behaviour for anything which might needlessly drive away people who want to contribute.
At ClojureBridge Edinburgh, we introduced a set of ‘social’ rules used by Hacker School in New York, which runs an immersive program to help programmers of all levels improve their skills. It’s now known as the Recurse Center, partly because students arriving from abroad telling US Immigration they were visiting to attend ‘Hacker School’ didn’t go down too well. These rules are not designed to be strictly applied, but to allow people to gently point out when someone is engaging in unhelpful behaviour, so that they can avoid it in future. They could be applied in any group learning setting, which would cover most Clojure meetup events. ‘Feigned surprise’ here means a put-down of someone’s knowledge or abilities phrased in a way that suggests they ‘should’ have greater experience, for example “I can’t believe you don’t know what a monad is!”. A ‘well actually’ is where in response to someone’s largely correct statement, the speaker lays out in what circumstances it would be incorrect, largely as an excuse to show off their own knowledge. We also discourage backseat driving - giving someone unsolicited instruction instead of letting them work it out themself - and less obvious discriminatory comments. These are behaviours that are more about the speaker feeling superior to the other person than being helpful.
Beyond any purposely challenging behaviour, sometimes people in a group can unintentionally exclude some of their members. This might be by assuming that an experience is universal when it is not, or drawing attention to a difference. This might be referring to a mixed-gender group of programmers as ‘guys’ , or telling someone that it’s really unusual to meet a woman programmer - they already know! This can also trigger what’s known as ‘stereotype threat’, where they will perform worse because they’re anxious about conforming to stereotypes of them being less competent. Have you seen the XKCD cartoon ‘You suck at math … Girls suck at math’? It’s basically that - feeling that people’s opinions on the group to which you belong will be confirmed and their hopes let down because you’re having a bit of a mental block. Then there’s the continual cases of mistaken identity - it’s common for people at tech events to make incorrect assumptions about what you do. I’ve lost count of the times I’ve been assumed to be a marketer, recruiter, or other non-technical roles. It’s also common for black and latina women in particular to be mistaken for administrative, custodial and catering staff (this comes from US research, so may manifest differently in Europe according to common perceptions of these groups).
I used to be involved in a running club when I lived in Glasgow. Like many tech groups, it was majority male, with a smaller number of women attending. One night we had several new women joining us, and they opted for the shortest distance group as they were relatively new to running. And so the jog leader in charge of the group led us away. We crossed a footbridge over the motorway into a poorly lit park in a slightly dodgy area of Glasgow, and we didn’t have many lights between us. I felt slightly on edge, and I can only imagine how the new runners felt, trying to keep following people they’d only just met in an unfamiliar area, away from roads in the dark. This was the sort of situation that most women are taught from a young age to avoid, and unsurprisingly the women for whom this was the first time running with the group didn’t come back. The group leader had chosen this route because he was fine with it - ran it all the time - but hadn’t considered that others might not be as comfortable. He recognised his mistake, and we agreed not to run that route after dark in future. Your comfort level with a situation is not the same as everyone else’s, and situations and comments that you and the existing group are happy with can still be offputting for newcomers with a different experience in life.
So how welcoming is your Clojure community? Everyone who’s a member may be happy with things as they are, but anyone who isn’t comfortable with the situation probably either didn’t stick around or didn’t join in the first place. It’s easy to assume that people in a group with one thing in common (enthusiasm for the Clojure language) will share the same values, sensitivities and behavioural norms. However, this often is not true, and some people may do and say things, intentionally or unintentionally, which make others uncomfortable. This is where a code of conduct comes in useful. This lays down what is considered inappropriate behaviour, and how any situation of this nature will be dealt with, and can make people who are concerned about things like sexual harassment feel safer. It’s great to see that this conference has a code of conduct - ClojureBridge events use the Bridge Foundry’s Code of Conduct.
It can be difficult to reach out to the people who aren’t in the room, but if you’re able to get their input, perhaps through an anonymous survey, this can help with identifying areas you can improve to make the group more inclusive. That way you can maximise the gains of any work to recruit more diverse people to the community, by making them more likely to feel comfortable and valued, and stick around.
A lot of coding education initiatives aim to get the learners producing websites in the shortest possible time. This often involves the use of frameworks, and minimal use of the language holding everything together. It also means that learners spend more time grappling with the architecture of these frameworks than learning the mental modelling of problems and thought processes crucial to grasping the essence of the language. This is not a boot camp, but a day spent hopefully igniting the learner’s interest in programming in Clojure, functional programming, and programming more generally.
Many Clojure developers are well experienced in other languages and so know well that Clojure is a joy to program in compared to what they’ve used before. However, when you’re encouraging people new to programming to give it a try, they don’t have the same frame of reference. I asked about this in the ClojureBridge mailing list, and this prompted a lively discussion. Why should someone spend time learning Clojure, is it the first language they should learn, the only one? The main answers people put forward were that it’s modern, so doesn’t have hangovers from previous architectures like C. There’s not a lot you have to learn in terms of keywords and syntax, so you can get going very quickly. Functional programming is arguably easier to grasp than object-oriented programming. Clojure is best known for running on the JVM, but there’s also Clojure CLR for .NET architecture, ClojureScript for JavaScript, and Clojure Android. And lastly the REPL - a simple interface that gives you immediate feedback, and allows you to build a program iteratively. (On whether it should be a first language… Clojure was not designed specifically as a teaching language, and it has some features which make it less beginner friendly. What do you get when there’s something wrong with your code? A Java stack trace… not the most helpful to a genuine novice. My opinion is that people should learn it alongside other languages to absorb the functional thinking practices, and then switch over to it as primary language when they’re ready)
Running a ClojureBridge event can be a great way to energise and grow your local Clojure community, and it’s something anyone can do. You can become an organiser of a ClojureBridge workshop in your town - more on how to do that in a minute. If someone’s already organising an event near you, you can volunteer to teach at one - it’s really good for improving your own understanding of programming in Clojure. If your company has a budget to sponsor tech events, you can support a ClojureBridge workshop financially. The Bridge Foundry now has a central fund to help run events in locations which aren’t tech hubs with lots of local sponsorship options. If you have ideas about what and how we teach at ClojureBridge, you can also contribute to the curriculum on GitHub.
There’s a particular challenge in running diversity programs where there is a very low existing participation rate from the target group. The ideal would be to have the workshop run largely by women (organisation, facilitation, teaching), so the students have lots of role models there. However, it isn’t possible to find many women Clojurians in every location (it’s a bit of a chicken and egg situation) - this is why we need ClojureBridge! In this case, rather than resorting to cloning, holograms or any other extreme measures, make sure the women you have are in key roles, presenting and teaching, to make the most of their being there. Ask women with experience in other languages to spend a little time learning Clojure - it shouldn’t be hard for an experienced programmer to pick up enough of the basics to teach a class. Invite women Clojure experts from nearby cities (paying their transport costs), or time the event to coincide with a conference when lots of great programmers will be in town. Then the next time you run a ClojureBridge (there will be a next time, right?), ask some of the former students to teach.
If you’re interested in organising a ClojureBridge workshop, your first stop is the organising repo on GitHub. Here you can find guides covering all aspects of putting together an event, so you can get an idea of what to expect and to plan for. There’s also the Google Group, where you can join in discussion with others. Once you let us know you’re planning a workshop, we’ll put you in touch with a mentor - someone who’s run a workshop before and can show you the ropes. You may think you don’t need this of course if you’re very experienced at running coding education events, but it’s still helpful to have a designated point of contact if you have any queries. Something worth mentioning is the importance of running training for your teaching volunteers.
The training session for the teaching assistants (T.A.s) takes place usually a few days before the event. This covers how to interact with the students, making them feel comfortable and capable, and not afraid to ask questions. It also looks at how to tell when the pace of the workshop isn’t right for people, and dealing with behaviour issues (from both the students and other T.A.s). It’s particularly useful if, as is often the case, your teaching assistants are programmers without professional teaching experience. It’s also good particularly for men who don’t have experience of diversity work, as it helps them identify behaviours which might have an unintended negative effect on students. The discussions around this can be a real eye-opener for people who are well-intentioned but hadn’t considered the effects everyday language can have. The teacher training materials we’re using currently are borrowed from RailsBridge, but we’d welcome it if anyone’s willing to fork them and add more Clojure-specific content!
So what does a ClojureBridge in full swing look like? Here’s a photo from the first ClojureBridge event in San Francisco, in May last year.
And here’s the most recent European one - Solingen, less than 2 weeks ago. There’s another one coming up in Berlin in a couple of weeks, and the organisers have been working together to co-ordinate and share resources.
In order to maximise the likelihood of workshop attendees continuing to learn to program in Clojure, ensure that they have information about the sources of support available. Mailing lists and Google groups, Slack teams, and local meetups for Clojure and programming more generally. It’s also a good idea to have a feedback survey, so you can figure out what could have been done better.
The organising materials are continually evolving based on the experience of people involved in running workshops. There’s also ongoing discussion through mailing lists and chat channels so that we quickly get feedback on what works and what didn’t go down so well. The initial curriculum turned out to be too long to get through in a day, and the end application, which involved getting data from the World Bank API, was not that engaging to some learners. We’ve had better results with a new curriculum which involves drawing using the Quil library. If you’re interested in more details on this, Yoko Harada did a great talk on it at Clojure/West, which you can find on YouTube.
The main aim of ClojureBridge workshops is to improve the diversity of Clojure events. There’s also the knock-on effect that even if the learners don’t continue with Clojure as one of their major programming languages, the functional thought processes they’ve learned will stay with them (and they might come back to the language later!). Another benefit of ClojureBridge events is the energy and community links that they generate. When I started looking for people interested in helping with ClojureBridge in Edinburgh, I was taken aback by the enthusiasm of the volunteers and sponsors coming forward to make the event happen. We didn’t have a regular Clojure meetup in Edinburgh prior to the event, but the workshop volunteers and other enthusiasts stepped forward to make it happen. I also met some of my current work colleagues through ClojureBridge, and we now host the Edinburgh Clojurians meetup at FanDuel.
Now you may think that running courses to teach people Clojure and increase the diversity of the community is a very noble and altruistic thing to do. You’d be right of course, but there is another benefit. At the moment, many of the Clojure enthusiasts I know are programming in something else in their day job [show of hands]. One of the key factors in choosing the technologies a company uses is how easy it is to find developers able to work with them. So, making a concerted effort to create more Clojure programmers makes it easier for companies to hire Clojure programmers, which makes them more likely to use Clojure, which means more Clojure jobs. This in turn provides an additional incentive for more people to learn Clojure because they can get a living out of it. This is already happening of course, as part of the natural adoption cycle of a programming language. However, it is in your power to accelerate this process, to help more Clojure programmers to live the dream!
For more information, check out the ClojureBridge website, organisation on GitHub, and the Google Groups mailing list. I’m also happy to chat with anyone who’s interested in organising - it’s great to meet so many people from all over Europe and beyond! Does anyone have any questions?