Robert Heaton

Software Engineer /
One-track lover / Down a two-way lane


22 Oct 2018

I’m not a teacher or an expert. I’m also not a lawyer or a doctor or a real engineer who actually works with physical material or Jesus Christ dad I know you’re disappointed in me but can’t we drop it for just one day?

Nonetheless, 3 months ago I added an /office-hours page to my blog. On it I offered to talk about programming for an hour with anyone who thought that that sounded interesting. I’ve since spent 20 hours with 20 excellent people, and, at least for me, the experience has been delightful.

I think it would be great if more people, you included, made /office-hours pages and offered office hours of their own. In this post I’ll talk about why, give a few administrative tips, and offer some suggestions for what and what not to talk about. Finally, I’ll provide some aerial cover that might come in handy if you’re as afraid as I am of imaginary people accusing you of being an arrogant narcissist.

I’ve had it pointed out that this is all easy for me to say, but it gets much harder if you’re part of a group whose skills and knowledge are often not respected as much as they should be. It can get even harder if you can never be certain that someone really does want to talk about micro-services and not what a nice girl like you is doing in a place like this. I don’t know what to do about any of these problems, but I do acknowledge that they’re there.

Why do office hours?

Because it’s fun. You might also help some people, learn a thing or two about yourself, and spread knowledge of your industry or hobby to a larger and more diverse group of people. But none of these side-benefits are large or certain enough to tip the scales compared to whether or not you enjoy the experience.

Why not do office hours?

Every one of my friends and acquaintances who I’ve spoken to about office hours has been supportive and encouraging. That is, everyone apart from the entire law firm of devil’s advocates with their regional headquarters in my brain. True to form, they immediately came at me with a barrage of vicious accusations, including claims of arrogance, time-wasting and 4 unrelated counts of burglary. The worst of it was that even once I had successfully litigated these allegations away, the advocates simply came back to court the next day and started repeating them. I wish I understood more about how the appeals process works. It doesn’t feel like they should be allowed to do this.

In case Satan, Lucifer & Steve have set up a branch inside your head too, here’s a condensed transcript of one of our courtroom battles:

“Suppose that we took a random sample of advanced beginner programmers. We gave half of them real office hours, and gave the other half placebo office hours and a sugar pill. Would the cohort who did real office hours show a statistically significant increase in their life outcomes?”

No, obviously not. I can’t even guarantee that they wouldn’t show a statistically significant decrease in their life outcomes.

“You’ve mentioned diversity several times. But do office hours really have any measurable impact on diversity?”

Honestly I doubt it, at least not with the scattergun approach I’ve been taking. But if you’re going to do this kind of thing anyway then you might as well do a tiny amount of work to create a tiny amount of benefit.

“How do you know that office hours are remotely useful?”

I haven’t been distributing post-meeting satisfaction surveys, since that seems like a bit much. But plenty of people claim to have found our chats useful, and I can’t imagine that they were all only being polite.

“You still sound quite pleased with yourself. But wouldn’t it be better if you spent your working in a soup kitchen instead? Is this the absolute best thing you could be doing with your time?”

No, it’s not. And whilst this is a good angle to keep in mind, you’ve got to give yourself a break sometimes. Otherwise you’ll end up spending your lunchtimes and weekends working at an investment bank and donating the salary to buying malaria nets for AI safety researchers.

“No further questions”

Yeah right.

What to say?

At the start of each of the first few sessions I realized I had no idea what to say. “So, uh, why are we here exactly?” didn’t sound like the kind of thing that the amiable, welcoming person that I like to pretend to be would begin with.

Of course, the secret is to just have a conversation. Where in the world are you? What’s the weather like there? How did you get into programming? Are you working on any projects at the moment? How’s that going? It sounds silly but I always feel much more comfortable talking to strangers when I’ve mapped out my small-talk ahead of time. I was nervous before my first few sessions. The nerves mostly subsided after I’d done a few.

Ask open-ended questions. Ask “what would you like to talk about?” to make sure you don’t go off in the wrong direction. Make it clear to the other person that this is their time and that you’re happy to talk about whatever they want. Ask awkward questions in a gentle way. “That sounds tough, tell me more.” “Why do you think that hasn’t been working?” Be careful about giving specific advice unless you’re sure you know what you’re doing. Use caveats. If you’re conjecturing or regurgitating vague tribal knowledge that you don’t have any direct experience of, be up front about this. Keep a pinch of salt next to you at all times. Ask people what they think they should do. Talk a bit (not too much) about what you’ve done in your career and what you’ve found to be helpful and not so helpful. Not everyone has specific questions. Very few people even have specific problems.

I mean this in the most positive way possible, but set your expectations low. When was the last time that someone who you’d only just met gave you a piece of advice that instantly changed your life? Me neither. But when was the last time that someone who you’d only just met mentioned something in passing that you didn’t entirely agree with, but some bits of it made you stop and think, and so you took those bits, sanded off their weirder knots, and glued them on to your ever changing worldview? Now we’re starting to put together a theory of change.

I suspect that a lot of this is just what good managers in good companies do, which does make me think that being a manager might be kind of fun. But then I remember that managers do still sometimes have to fire people and deny legitimate requests for compassionate leave, and they also don’t get to do very much programming or cooking or whatever it is that the people they manage do.

Take action

By now you’ve decided that you would like to share your time and knowledge with the world. Start by writing a few paragraphs on what you’re offering and why, and put these paragraphs on your blog or homepage or whatever at /office-hours (here’s what I wrote). Feel free to link to my post to give yourself some cover against the imaginary haters (“this guy said I should do it”), although I bet that there won’t be any. Link to your page from your Twitter account, MySpace page, Tinder profile etc.

Schedule appointments using Calendly. Calendly is a neat service with a free pricing tier that allows people to book meetings with you. When someone emails you, reply with your Calendly link so that they can pick a slot that works for them. Try to offer a few different times of day to give feasible options to people in all timezones. I generally offer Sunday mornings PST and Monday and Thursday lunchtimes. Send people reminders 24-48 hours before you are scheduled to talk. Calendly sends both of you a calendar invite with the date and time of your appointment, but not everyone uses a calendar and people do forget, especially if they booked the session 2 weeks ago.

Then there’s nothing left to do other than be punctual, listen carefully, and have fun.

Subscribe to my new work on programming, security, and a few other topics. Published a few times a month.
Follow me on Twitter ➜ RSS ➜