I graduated this Saturday! The CS department hosted its own ceremony where I gave a brief address to my classmates.
I never write down my speeches before I give them (habits from my high school extemp speaking days). Below is an edited version of my commencement address from memory. I added a bit to the section on community that I left out because I was running short on time but was in the speech as prepared. (namely: giving two examples of Engler's Corollary and going more in depth on how we might combat sexism instead of just saying that combating sexism is a good idea)
Parents, faculty, and staff, thank you for joining us in celebrating our graduation. Before I start, I need to clear something up. Because I'm standing in front of you at a graduation ceremony, its natural to assume that I must be an especially qualified student or some great dispenser of wisdom. That is not the case. Angela [Angela Ellis, department administrator] sent out an email to all of us asking for a volunteer and I volunteered.
In fact, if the department were trying to pick an outstanding student, I'd be near the bottom of the list. I just scraped through a demanding six credit semester. So I am your paragon of academic excellence: a lazy student and a mediocre programmer. Why am I so down on myself? This is a commencement address! It's supposed to be all rah-rah, you can change the world, carpe diem, YOLO.
Well I am upbeat. As a mediocre programmer, I will change the world. Not can, will. I have no choice in the matter. As technologists, we will all face moral questions that will have a disproportionate impact on the rest of society. And looking around, I see many of you who I know are better than mediocre, so it applies doubly to you.
Today I want to convince you that we are obligated as young people with computer science degrees to view our career decisions through a moral lens. First, I'll talk about work: we will be responsible for the way our creations impact our fellow humans. Second, I'll talk about community: it is next to impossible to build software that reflects our values if we're part of communities that don't.
But first, work. Because this is graduation, finding work is on our minds. Many of you already have a job lined up. Congratulations. Maybe some of you are still funemployed like me. Thanks Mom and Dad. Some of you are going straight to grad school. My sincerest condolences.
For those of us who are going into the working world, we need to stay mindful of what we're creating. Most of us got into this field because we love solving puzzles and seeing how complex systems fit together, so sometimes we get caught up in the details and forget the bigger picture of our work.
We need to remember that as creators, we are morally responsible for what we create.
For example, last year I co-oped at an industrial automation company. They make software that replaces factory workers, makes them obsolete. I contributed to that software. What is my moral obligation to those people? I don't know. You might say that I don't have any obligation to them, that we want a society where there is less need for manual labor, so that's the price of progress. There's gonna be losers. I don't think that's the answer, but the point is that this isn't a technical decision. It's a moral judgment.
Maybe you're thinking - this doesn't apply to me. I'm not making the next predator drone, I'm making Candy Crush 7. No matter what, your choice of work is a moral choice. You're judging that the joy your game brings is worth not working on something else. And I want to be clear that I'm not saying that if you aren't devoting your life to protein folding research then your life is worthless. There's something to be said for getting a steady job that can support you and a family. But as young people with Computer Science degrees, we are in a privileged position. Compared to our friends in, say, the liberal arts, we can be picky about what we work on, even as junior developers. So when you're finding your first job, you can afford to think about more than Ember vs. Angular. You can find work that aligns with your values.
Just as important as the work you pursue is the community you'll build around that work. Wherever you go, communities will spring up around software development, whether it's your company's engineering team, the Anchorage Ruby meetup, or the open source community around your new Linux distribution. We may not have the power to reshape society, but we do have the power to make communities that reflect our values.
Have you all heard of Conway's Law? The idea is that the structure of a software team will determine the software's architecture. So if there are three groups that don't talk much to each other, you'll likely end up with three modules that are loosely coupled through some kind of API. I'd like to abuse Conway's Law and take it one step further. I'll call this Engler's Corollary. The social setting in which we make software determines how and by whom it will be used. For example, rich young white people cluster in Silicon Valley startups and make really nice services for rich young white people in Silicon Valley. Or as a positive example, the self-organizing Homebrew Computer Club helped foster the personal computing revolution of the '70s, one of the great democratizing moments in computer history.
One of the most pressing problems we face as an industry is diversity. The under-representation of women and people of color in our industry is an outrage. That there are systemic obstacles keeping a large group of people out of our industry is unjust on principle. But also, by Engler's Corollary, we are doomed as a white male industry to make products that won't serve most people as well as they could because we are missing these voices. And that's somewhere where I as a mediocre programmer can contribute. I probably will not be a crusader for social justice, but I can work in small ways to make my communities more welcoming to women, minorities, and LGBT people. A bunch of people saying "Hey, that's not cool," when a colleague makes a sexist joke can add up over time.
Once more, I want to make it clear that I am in no position to be giving moral exhortations to you all.
I'm in the exact same position that you are. So really, I see this speech as a challenge to myself. I want to find work that I think has a positive effect on others and I want to build communities that reflect my values. I hope you do too.
To the family here, thank you for helping so many of us through school. To the faculty and staff, thank you for all of the help and instruction you've given me over the years. I know it's changed me. I hope it's changed you. To my fellow graduates, I wish you all the best. I'm in town all next week. Buy me a beer and I'll send you a postcard from Peru.