Thursday, November 17, 2016

Don't set me up for a failure, it will happen organically too

I appreciate pull requests. The idea that one of us changes something and it goes through other people's eyes is wonderful. I like the idea of not being left alone. I like the idea of getting feedback and suggesting improvements. And I see this works well on some of the cases, usually ones where the size of the pull request is small, the scope of it is clear and where there are knowledgeable people to comment on stuff.

However, recently I've also had the pleasure of following pull requests that end up in long discussions. I've had my own 1st pull request in a new company rejected without a good reason. And I've seen that a process that serves some well is really painful for others.

So on some of the activities that end up as pull requests, I keep repeating: we would be better off mob programming. Pull requests can turn into:
  • wasted time on implementing a change that isn't welcome
  • wasted time on arguing over authority: who gets to decide what is good enough or right?
  • back-and-forth discussion over long period of time trashing all focus of other work
There was a twitter comment behind my need of writing this post with regards to my note on "I'd rather be mob programming":
I find that people learn in different ways, and I don't see anything inherently off with learning while in a mob as long as I feel safe. With smaller number of voices, I may learn bad practices that I need to unlearn later. I may be left alone with the conflicting information from two "seniors". And even worse, I may get completely blocked on my attempts to contribute. You wouldn't believe the reasons people find when they go looking for why nothing I do is ever good enough. Except that it is.

In a mob, I'm not a victim of one person's perspective. If I use the wrong words to express things, I find that other people help out and get to the core of the idea. As long as there is kindness, consideration and respect. We need psychological safety, and establishing that over PRs if it does not yet exist or gets forgotten is almost a mission impossible.

When I'm new, you don't need to give me tasks to try me out alone. I don't have to sink first to learn to swim. And even worse, as someone new, having me work on something only to correct me through pull request discussion (or rejection) isn't really setting me up for feeling like I belong.

In specific, this tweet makes me want to express my feelings more clearly:
Trust me, you don't need to set me up for failure to expose weaknesses or opening educational opportunities. Those emerge organically when working on things. And while getting to those educational opportunities, the idea that I really dislike is that there is no better way: just read the code alone. Because there is a better way. It could be pair or a mob. If you are a woman working with the guys who keep telling that women only write comments in code (old stuff, sure) you will always feel safer with a group. In group, people are on a better behavior. Even if it gets called a Mob.