Becoming a welcoming open source project, Mentoring Branch

Cate Huston (@catehstn) asked what we could do that would get us from “open source” on a project to “welcoming source”.  Codes of conduct, good newbie issues and good onboarding were her initial suggestions, and I said that a good project would also have a really clear goal, because one of my consistent frustrations with trying to start a project is not understanding what the end goal is and how my contribution furthers that goal.

Then Cate got distracted by “jet skiing” in “Suva” (a likely story), and Mike P (@snowcrashmike) and I went down a rabbit hole about mentoring.

Read the context on Storify

Mike said that senior mentoring was also important, and I agreed, but I thought that was too vague. As I see it, there are four kinds of mentoring on a project.

  1. Mentoring on the project itself — architecture decisions, goals, dead ends that we rejected. This should not be mentoring, this should be DOCUMENTATION. (You knew I was going to say that.)
  2. Mentoring in the art and practice of contributing to any project — interpersonal politics, how not to show fear in the face of code repositories, how to figure out who knows where the bodies are buried.
  3. Mentoring in a specific skill or language that is used on the project.
  4. Career mentoring, which is a catch-all for everything from “how to report bad behavior” to “don’t show up to interviews in a shirt with holes” to “plotting your ascent to the corner office”. (Hah. Pretty sure OSS projects are not rife with corner offices.)

I asked Mike which of those he meant, and we agreed that the ideal mentor would be one who could do all of that. Full-stack mentoring, as it were.

But just like full-stack developers are pretty rare, so are full-stack mentors. Asking someone to have that high level of competence on top of asking them to have a product vision, a genius for distributed management, and a competence at coding just seems like too much.

The best solution would be for people who are already in the project to do some thoughtful discernment about what kinds of mentoring they are good at. For example, I can’t code, and my design sense is marginal, but I can write a pretty mean sentence, walk someone through writing a conference talk, and my problem analysis skills are pretty great. So you shouldn’t really have me do pair programming or mentor by teaching a coding language. You should have me mentor someone on how to come across like less of a jerk on mailing lists. I should be mentoring people on how to write bug reports. I can toss code questions over the wall to someone who understands the code base.

The problem is that of course there are not enough mentors. There are not enough anyones, in open source. That’s just the nature of the beast. So when we say that newbies need mentoring, it’s true, but it puts enormous, unreasonable pressure on the very core maintainers we are trying to prevent from burning out.

Asking someone to repeatedly perform something that is not just outside their skill set, but outside their interest is asking them to do a lot more work than asking them to do something they are strong at and pleased by doing. We all need to develop our growing edges, but I feel like that’s not what this is. Instead, it’s an accidental burnout accelerator, because the people who care most about mentoring are the ones who are going to overextend themselves trying to be everything to everyone.

Let’s not burn out our best mentors.

Instead, here is my suggestion for when a project decides to include new contributors:

  • Document the decisions that you’ve made about where you’re going and where you’re avoiding.
  • Be clear about your goals for the project.
  • Establish not just a code of conduct, but a standard of communication that the project tends toward. Lots of smilies? Bullet points? Simplified English? Bilingual postings? Whatever it is, make sure it’s something the core maintainers are willing and able to do all the time.
  • Mark newbie-friendly bugs, features, and doc requests. Try to attach a mentor to the bug/feature/doc. That way, the load gets passed around, and new people get to work with a lot of team members.
  • When a new person asks for mentoring or seems stuck, ask them what kind of help they’re looking for. They may not know, but they can usually tell if it’s a code problem or a people problem.

Tl;dr: Treat mentoring more like a microservice and less like a monolith.

Don’t ask me to work for free, a reprise

Back in January, I wrote this LinkedIn post: Don’t ask me to work for free

I talked about a conference that had asked me to pre-write a new talk before they accepted me. Back in January, I had spoken at a lot fewer conferences, and I estimated that I was running about six conferences a year. Heh. I have six talks left to give this year, and that’s about the pace I’ve been on since June.

I decided that this was the year I didn’t pay to speak at conferences, and I haven’t. Well, I have, but it’s more in the range of taxi charges and parking at the airport. I’ve asked for and gotten financial assistance from a number of conferences, including (but not limited to) Abstractions, Pycon AU, LISA, DevOpsDays Tel Aviv, and SeaGL. I’ve also gotten — without asking, or presenting a statement of need — travel and lodging from The Lead Developer, SpringOne Platform, Surge, DevOpsDays Chicago, Nodevember, and APIStrat. I sadly turned down a handful of acceptances

Some of those conferences are big and well-funded, with a company behind them. Some of them are community-run, and the organizers aren’t even getting paid. SeaGL has free tickets, and they still managed to find enough sponsor money to get me to Seattle. (You should come hear me speak!)

There are also conferences that I have chosen not to apply to because they don’t say up front that they are offering a comped admission or travel help. For example, the CFP for OSCON closed last night. Nowhere on that page, no matter how many times I read it, does it say that speakers get free admission. I was pretty sure they did, based on history, but that took sleuthing to find. You could also add to your proposal that you needed financial reimbursement for travel. MadCap Flare has a conference called MadWorld. Speakers get a free pass and 2 nights of lodging for a three day conference. No travel money.

My level of anger about this is directly proportional to ticket price. Alterconf manages to offer free tickets to people who want them, inclusive catering, and payment for their speakers. Community conferences in the $200-$500 range have managed to cover my expenses. But if you are changing over a thousand dollars a ticket and you don’t offer me anything beyond free admission? Please.

I look at this two ways. The first is cost to me. Every day I’m at a conference, I’m not billing. So there’s an opportunity cost that I am willing to accept as my marketing budget for future freelance leads, and as part of being in community. I also spend time I could be billing working up a talk, customizing it to the conference, practicing it, all that stuff. Giving a talk costs me about $1000 in lost income.

The second is cost to the conference. For a domestic flight and a couple-three nights of hotel room, it will cost about $1000-$1500. It can be done more cheaply with good management (which takes time), but let’s use $1500 as a scenario. That’s what it will cost you for me to get to your city, get enough sleep, deliver a kick-ass talk, network, mentor, and participate. A typical conference runs two days, and has 10 slots a day. 20 slots by however many tracks there are. If it’s a single-track conference with 200 attendees (I’m making the math easy for myself here), I am providing 1/20th of the content, or 10 attendees worth. You would have to charge $150/ticket to cover speaker expenses. Of course, there’s a lot more overhead than that, like space and food and insurance and advertising and tee shirts*. But also, only a few conferences I go to are single-track, and very few have attendee numbers that low. If you are talking about thousands of attendees, and tickets over $500, I just have no patience for you to be cheap with me. None.

DevOpsDays Chicago managed to fly me in, get me car service from the airport, put me up at a nice hotel, make sure I had all the food I needed, give me a fancy speaker gift, and make custom conference socks — for an Ignite talk. 5 minutes. I ended up doing an unconference session, too, but they didn’t ask for that. If that is possible, if free conferences can pay, if tiny conferences can find me a roommate, then there seems to be no excuse for why expensive conferences can’t do a little more.

*I just put up my swag from Minnewebcon, which was a poster with custom art. Let me encourage other conferences to do this. No sizing problems!

Minnewebcon 16 poster

Lady Speaker Party Education

I was at a conference party this fall, and I had an interesting conversation that I wanted to tell you about.

First though, let me beg conference organizers — if we’re having an evening mixer, PLEASE explain to the DJ that people are going to be trying to talk to each other. The music was loud enough that I found an organizer to ask the DJ to turn it down and I still felt like I might lose my voice by shouting over people shouting over the music.

User story: As a conference speaker, I do not want any conference event to interfere with my ability to give my talk!

Content note: Rape culture

Ok, on to the actual conversation. I was talking to a couple guys, one my age, one shiny-new out of college. College Guy, hereafter known as Craig, said something about how free beer was good beer.

I shrugged. “It doesn’t really matter to me,” I said. “I’m only going to have one, and I’m not going to set it down, and I’m only having this one because the place is well-lit and I don’t have to worry about getting back to my room.”

Craig laughed awkwardly and asked if I was afraid of being hung over. I made eye contact with his co-worker mentor, and he gave me the nod that said, “Go ahead and disillusion the youth.”

So I said, “No. I’m afraid of being raped or assaulted. And every woman here is making a similar calculation while she drinks with her co-workers and compatriots. You see, we all know we’re outnumbered, and we know that almost everyone in this room is as nice as he seems to be, but we don’t know that for sure about absolutely everyone.”

He goggled. I was feeling both feisty and merciless, and said, “Look around this room. There are about thirty women here. Odds are, ten of us have been sexually assaulted and recognized it and told someone. Not one in ten. Ten. ”

“You’re kidding me!”

I’m really not, Craig. I’m trying to explain that most women are running a background process that you don’t even think about, and it affects our decisions. (I didn’t say that part)

So then I asked him if he was in a relationship. He said he was. I asked him what he would do if his partner told him she’d gotten raped when she went to a conference. At this point, older dude has his hand over his mouth so he doesn’t try to save poor Craig.

“I’d pound the crap out of that bastard!”

“She probably doesn’t know who he is, or if she does, she may not want him pounded. It’s hard on her career. What else can you do?”

“I’ll make her report to the police!”

“You know, police are not always the most sympathetic audience when you’re already freaked out. She may not want to report.”

“But she has to! I’d do everything in my power to persuade her that she had to!”

Older dude is looking for patterns in his drink and not making eye contact, but not abandoning this poor kid. I respected that.

“Craig, you’re telling me that after your girlfriend has a psychologically and physically horrible experience, you would pester and hound her to talk to strangers about it? Because if that’s what you’re saying, you can see why the women here are being as careful as they can, and if something terrible does happen, they don’t always talk about it, and even if they do talk about it, they seldom report it. Which is why you don’t know how common it is to be a victim.”

And then I lifted my drink in salute to the mentor, gave Craig a sad smile, and faded off into the crowd to go back to my hotel room and throw the lock and the hotel bar, like I always do when I’m alone.

Craig is not a bad dude, and I am mentally apologizing to his girlfriend when he gets home and tries to ask her about this. He’s smart, and he’s socially adept, and he’s probably quite nice. But no one has gotten through to him that some of us are living in parallel universes to his – darker, scarier places. Places where the cops aren’t always helpers, and co-workers are not always buddies, and the failure state of dates is death, not embarrassment. I hope he gets it. I hope I helped him along that path, but I am sometimes so exhausted thinking about how many people there are to teach — and I’m one of them.

Here’s to you, Craig. I hope your next free beer is uncomfortable, and you remember why.

Iced cocktail with a black straw and raspberry with rosemary in it

Fruity cocktail

New year

Some people set their new year by the Gregorian calendar. I tend to do mine by my birthday, which is in a couple days. There’s something about fall that makes me ambitious and inspired.

This year is a big milestone birthday for me, so I’m trying to be mindful about my goals, what I want to accomplish in this shiny new decade, and I thought I’d tell you about them, as accountability.

Professional goals

  • Get an invitation to give a paid keynote.
  • Write three new talks.
  • Write a workshop on Minimum Viable Tech Writing for Developers.
  • Actually sell that workshop and deliver it at least once.
  • Participate in more formal mentoring of others.
  • Develop at least a small passive income stream.

Personal goals

  • Ride either a century or do back-to-back 60 mile days. (Cycling)
  • Learn enough CSS to fix this WordPress template and its stupid inability to properly indent bullets.
  • Sew myself a pair of pants I am happy with.
  • Enter at least two items in the Minnesota State Fair.
  • Teach the kids to be totally dish-autonomous.
  • Hire an accountant.

I think the key part of goals that get done is that they are testable. Some of these tests are obvious, some less so, but they are not ambiguous, like “get in better shape”.

The other thing I try to do is for goals that I have control over, I have a bunch of steps and mini-goals to work toward to get there. Before I can sew pants that I like, I need to finish watching my pants classes, sew a pair of pants I can use for fitting, and make alterations to the pattern. To write a workshop, I need to outline it, write a draft, test it with an audience, and revise it.

What about you? Do you have any goals for this year, or for the time between now and the winter holidays?