+Title: Survey Data on Cis and Trans Women Among Haskell Programmers
+Date: 2021-01-01
+Category: other
+Tags: Haskell, sex differences
+Status: draft
+
+Stereotypically, computer programming is both a predominantly male profession and the quintessential profession of non-exclusively-androphilic trans women. Stereotypically, these demographic trends are even more pronounced in "niche", academic, or hobbyist technology communities (_e.g._, Rust), rather than those with more established mainstream use (_e.g._, JavaScript).
+
+But stereotypes can be _wrong_! The heuristic process by which people's brains form stereotypes from experience are riddled with biases that prevent our mental model of what people are like from matching what people are _actually_ like. Unless you believe [a woman is more likely to be a feminist bank teller than a bank teller (which is _mathematically impossible_)](https://en.wikipedia.org/wiki/Conjunction_fallacy), you're best off seeking _hard numbers_ about what people are like rather than relying on mere stereotypes.
+
+Fortunately, sometimes hard numbers are available! Taylor Fausak has been administering an annual State of Haskell survey [since 2017](https://taylor.fausak.me/2017/11/15/2017-state-of-haskell-survey-results/), and the [2018](https://taylor.fausak.me/2018/11/18/2018-state-of-haskell-survey-results/), [2019](https://taylor.fausak.me/2019/11/16/haskell-survey-results/), and [2020](TODO: linky) surveys include optional "What is your gender?" and "Do you identify as transgender?" questions, as well as the anonymous response data.
+
+I wrote a script to use these answers from the CSV response data for the 2018–2020 surveys to tally the number of cis and trans women among survey respondents. (In Python. Sorry.)
+
+```
+import csv
+
+survey_results_filenames = [
+ "2018-11-18-2018-state-of-haskell-survey-results.csv",
+ "2019-11-16-state-of-haskell-survey-results.csv",
+ # TODO: 2020
+]
+
+if __name__ == "__main__":
+ for results_filename in survey_results_filenames:
+ year, _ = results_filename.split('-', 1)
+ with open(results_filename) as results_file:
+ reader = csv.DictReader(results_file)
+ total = 0
+ cis_f = 0
+ trans_f = 0
+ for row in reader:
+ total += 1
+ if row['What is your gender?'] == "Female":
+ transwer = row['Do you identify as transgender?']
+ if transwer == "No":
+ cis_f += 1
+ elif transwer == "Yes":
+ trans_f += 1
+ print(
+ "{}: total: {}, cis-♀: {}, trans-♀: {}".format(
+ year, total, cis_f, trans_f
+ )
+ )
+
+```
+
+It prints this tally:
+
+```
+2018: total: 1361, cis-♀: 26, trans-♀: 19
+2019: total: 1211, cis-♀: 16, trans-♀: 16
+```
+
+[TODO: 2020 data; I briefly thought about pooling years to get a better sample size, but that's methodologically invalid because probably a lot of the same people took the survey multiple years]