Being A Good Critical Friend

January 25, 2015 at 3:58 pm in Teaching, Tech

I’ve been around software development a long time, and a reoccurring theme is to see this kind of feedback from peers:

I’ll never understand the logic behind [some thing I think is dumb / disagree with strongly].

or

If you’re not using [some technology I like] you’re doing it wrong.

Or a variant of

You’re using [some programming technique I think is dumb]? Well I write big applications. [that thing you’re doing] doesn’t [scale / work well / work at all].

This is so common it’s part of our vocabulary now. And I think we say these things without even thinking about how negatively they can affect people.

When I started teaching, I found myself having to constantly give feedback, and I had to learn to do it in a way that would improve the skills of the recipient. And I think that’s what people are trying to do with these kinds of comments. We all have experiences that we want to share. But in the world of 140 character tweets, it’s hard to do that. It’s easy to be unintentially snarky in a tweet, pithy in a pull request comment, or terse in an email.

So strive to get the behavior you’re after instead. By being a good critical friend.

Ask questions that provoke. Provide actionable suggestions. For example:

I notice you used [x instead of y]. I like y because [some amazing thing it lets me do.] You should spend a few hours with it; you’ll be amazed!

That one works because you have experience you can draw from. But it’s only valid if you’ve actually used both. Don’t just shoot down something you’ve never used.You’ll look like a fool. Experienced programmers are pretty smart about figuring out if you know what you’re talking about.

There’s also this angle, which is similar, but more focused on negative side affects:

I notice you’re using [x instead of y]. I did that a few times and it bit me hard. I wouldn’t recommend it because [x,y,z].

See, starting with one of those things contributes to the overall goal; you want to convince them to use your idea, your approach, your methodology.

You could even go farther. It’s never a good idea to assume they have the same situation you do, so why not ask?

I noticed you’re [doing x.] I’ve had problems with that in the past, but I’d love to know why it’s working for you.

or

I’ve never had much luck with [doing x]. What benefits are you getting out of it?

This helps the person fill you in on their situation, if they care to engage in the conversation. It lets them teach you something. And it may help them arrive at a different conclusion by themselves, in a strange form of rubber duck debugging. After all, explaining something is a great way to demonstrate correct understanding of a topic.

The other option is to say nothing. Are they doing something that will destroy the world? Will it make you come in on the weekend to fix it? Or do you just find it irksome? Search yourself for the answers to these questions, and if it really is of no consequence to you or others, let it go. Put your energy into something awesome instead.

We’re all programmers, working in a field that’s so new that nobody really has all the answers. When your convictions or beliefs about something are so strong that you must comment, be a good critical friend to the recipient. They may not choose to listen. But I guarantee you have a much better chance that they will than you do with something that puts them on the defensive or makes them feel stupid. I’ve gotten this wrong in the past. Join with me to be better.