Katie Miller is giving a talk about outreach and diversity within the functional programming community at next month’s Erlang User Conference. She sent a questionnaire to the Lambda Ladies mailing list about our experiences, and accordingly, I thought I’d share my responses here.
What led you to pursue functional programming?
Originally, I was an English education major in college, but I went back to school and finished an additional degree in mathematics. Afterwards, last summer, I attended Hackbright Academy, a software engineering fellowship for women in San Francisco.
Fortunately, Hackbright assigns each of its students a set of mentors, and one of my mentors works at Twitter! She noticed that I had the right attitude for functional programming, so she introduced me to her coworkers. The Scala engineers I met all seemed friendly enough, so I wrote my final Hackbright project in Scala, then began consulting as a full-stack developer in Scala soon after. Recently, I’ve started volunteering as a TA for ClojureBridge, as well.
What sort of perception did you have of functional programming before you learned more about it? Was this a barrier? If so, how did you overcome this?
When I first learned about functional programming, it seemed like exactly the kind of thing I would enjoy. My mentors explained that its most well-known applications were distributed systems and data processing, which both sounded right up my alley—and, I really loved the idea of working in an area of software engineering that would take advantage of my math degree.
However, when I arrived at my first Scala meetup, I’d been programming for only a month. I was the least experienced programmer in the room by many years, as well as the only woman. The talks that evening were on data mining and scalable machine learning, with Scalding and Algebird. Countless monad jokes were told. Literally why?
To be honest, I felt pretty conflicted after that evening. On one hand, I really enjoyed the talks; on the other, I felt completely disassociated with the community itself.
Thanks largely to Hackbright, I was used to being surrounded by a friendly and supportive community—and, although I found Scala developers to be friendly, I felt like there was also an undercurrent of competition that I would never match up to. Many of the functional programmers I’d met had very traditional backgrounds in computer science, and since I’d never be able to have that, I wondered if it was worth sticking with functional programming at all.
Eventually, I realized that there was no sense in worrying about the things I couldn’t fix, and I gave up emulating someone with a traditional background. It turns out that having a computer science degree doesn’t make you better—just different. And, a lot of the time, my “nontraditional” background gives me a better perspective when solving problems!
What were the challenges for becoming part of the functional programming community?
For me, the biggest challenge was figuring out how to navigate the functional programming community while still a junior engineer—and without a computer science degree.
Most people assume that, because I have a math degree, I did some amount of programming prior to Hackbright. However, although my math background lends itself well to functional programming, I still have less than a year of programming experience; there’s a lot that I haven’t done. I can’t wax poetic about vintage programming languages, I don’t know that much about Linux systems administration, and people are still surprised when I explain, “No, I’ve never really worked in Java—Scala is the first language I pushed to prod!”
The functional programming community tends to assume more programming experience of its members than many people realize, so depending on the language, enthusiasm isn’t always enough for someone to be welcomed into the fold. It’s disappointing for me, personally, because I don’t think that having an extensive background in imperative programming is necessary for someone to pick up functional programming—but, a lot of the time, the underlying tone at functional programming meetups strongly suggests otherwise.
Why do you think women are underrepresented in functional programming, more so than in programming generally?
The functional programming community is deeply academic. In San Francisco, it isn’t odd to run into self-taught developers, but in the functional programming community, I meet them very rarely. Most people I know found functional programming through graduate coursework in either computer science or math, and most of those who didn’t have simply been programming long enough that they’ve stumbled across many topics in computer science—functional programming being one of them.
However, very few women complete bachelor’s degrees in computer science, and even fewer complete graduate degrees; the technology industry as a whole has a terrible attrition rate, as well. By those standards, it wouldn’t be unreasonable for a woman to leave software engineering before encountering functional programming at all.
What strategies do you think the community could employ to address this problem and improve the (gender, and other types of) diversity in functional programming?
The functional programming community tends to focus on mid-level and senior engineers, which makes functional programming seem unapproachable to a lot of juniors—and, since there are fewer mid-level and senior engineers who are women, in particular, that approach makes diversifying our community nearly impossible.
I’d love to see more efforts like ClojureBridge that make functional programming friendlier for first-time coders, and I’d also encourage leaders of non-diverse functional programming groups to reach out to organizations that focus on improving the experiences of women, people of color, and those who are LGBTQAI. Actively promoting your organization amongst diverse communities is a good start towards making your group inviting, but more than that, leaders can and should seek advice regarding codes of conduct, marketing, and other aspects of their group that, when improved, could attract people of diverse backgrounds—then support and retain them as part of the existing community.
Do you think it helps to have a women’s group like Lamdba Ladies? How has it been helpful for you?
I love Lambda Ladies, and it absolutely helps!
Back at Hackbright, when I first told people that I would be attending a “coding bootcamp for women,” their first question was nearly always, “I mean, is that realistic—learning to code without guys around? You can’t avoid men forever! Might as well start working with them sooner rather than later!”
However, having a space to be enthusiastic about learning—without needing to worry about defending your gender, or guarding against harassment—is especially valuable. Women’s voices are rarely heard in the programming community at large, so belonging to a smaller community where the focus can be on developing your skills, versus developing “culture fit,” can be an overwhelmingly positive experience.
And, women’s groups, ultimately, are not insular; they exist to strengthen members’ resolve so that women can both achieve individual success and bring progress to the programming community as a whole. Members of Lambda Ladies, for example, arrange study groups for those looking to learn a new language, but they also schedule brainstorming sessions for women interested in proposing conference talks. Ultimately, whenever possible, women’s groups tend towards sharing information rather than hoarding it, and I think that’s a perspective that non-feminists in the programming community sometimes miss.