Have wasted a lot of time on things that didn’t work
So want to iterate on ideas before starting
Goal, Strategy, and Tactics
Goal: want tech companies to be more ethical and responsible
Which really means “want people working in tech to be ethical and responsible”
Strategy: raise consciousness in ways that programmers will actually engage with
“Raise consciousness” ==
“make people more aware of how the industry and our society actually work”
“Will actually engage with” ==
“hook their curiosity rather than preaching at them in ways that don’t make them feel ignorant”
Tactics: teach the young and not-so-young
Alter or replace undergraduate software engineering courses with ones that include alternative non-technical material
(where “alternative” == “not Silicon Valley ideology”)
Offer short Carpentries-style workshops for people already in industry
using material shared with those undergraduate courses
Use stories and scenarios to make material more engaging
Build a coalition of the willing to create, maintain, and deliver these classes and workshops
Personas
Sami Student
20 years old;
in his final year of a BSc in Software Engineering;
has done two work terms and taken introductory courses in Economics and Statistics.
Wants to start his own company “just like Elon Musk”;
makes jokes about DEI hires and about other students’ lack of job prospects.
Father (also a programmer) was recently laid off despite his employer posting record profits;
Sami wants to understand how that happened,
and why some of his classmates have started sharing anti-immigrant memes.
Paola Professor
38 years old, has had tenure for three years;
research focus is energy consumption of large computer systems.
Enjoys teaching,
but disappointed that most of her students don’t seem to care about anything except their job prospects.
Overworked;
frustrated by how hard it is to make meaningful changes at her university,
particularly when it comes to hiring and promotion.
Dacey Developer
29 years old;
non-binary but finds it easiest not to correct people who don’t use their preferred pronouns.
Has been building mobile applications for seven years;
takes pride in the quality of their work;
is now technical lead of a three-person team.
Wants to be a good manager but finds most books on the subject vague, dull, or both.
Four Options
Presented in order of increasing radicalism
Gradual Reform
Plan: add a little to existing courses
Pro:
Low effort to create
Less likely to frighten potential adopters
Early feedback
Con:
Won’t have much impact on learners in either the short or long term
First thing to be cut when time runs short (which it always does)
Unlikely to excite people
Unlikely to attract funding
The Responsible Programmer
Plan: teach tools, processes, evidence, and responsibility in team capstone courses
“Tools” because intended audience accepts them as valid
“Processes” because tools aren’t useful unless you know how to use them
“Evidence” because we want to know which tools and processes actually work
“Responsibility” to both teammates (fair play) and society as a whole,
because once you know how to interpret evidence,
it’s hard not to see the harm we’re doing
Pro:
Medium effort to create
Gradual escalation from where people are to where we want them to be
Ties concepts together
Con:
Later material more likely to be cut because of time pressure (and discomfort)
Hard to subsection material for workshops:
early content is already covered elsewhere,
later will feel like “jump in at the deep end” on its own
Note: the title is a deliberate play on the title of The Pragmatic Programmer
Making pragmatic compromises got us into this mess