Remember that time when your team’s tech lead got mad at you for asking a “stupid” question? Or when that comment on the issue you opened in that open source project belittled you for not already knowing what was “obvious”? Then there was that time you had some code on GitHub and someone pointed and laughed…
Remember how that made you feel?
A Pull Request
A friend of mine told me about a website that he was browsing – a directory of things. He noticed that one of the apps he liked was not listed so he contacted the site owner and suggested adding it. The person replied, asking my friend to open a pull request on GitHub.
Having an interest in technology, but zero experience with Git or GitHub, my friend cautiously opened a GitHub account, figured out what a “fork” was, and eventually edited the right file. On sending the edited file back in an attempted pull request, though, something went wrong. It wasn’t obvious what he had done, but he knew something wasn’t right.
The owner of the site laughed at the failed pull request attempt and made a snide remark about it in the comments.
My friend closed the pull request (and his GitHub account, I think).
A Code Review
I asked each member of my team to produce one design idea for a feature – bonus points if you had unit tests to prove the idea worked. A week later, several of the team members had working code and unit tests.
I was impressed!
Until one of the team members showed some code that didn’t quite seem right… and a unit test that only proved the mock object he was using worked as a mock object. It didn’t actually run any real code – just called a fake method on a mock object.
Most of the team, myself included, laughed. He didn’t.
At the end of the project, we were doing one on one reviews to see how things went on a personal level. That team member told me how miserable he had been through most of the project – with the “unit test incident” being one of the key triggers.
A Compounding Design Problem
I spent 3+ days of billable time tracking down a problem – a major problem; one that was catastrophic to the success of the project, if not addressed… quickly.
I finally found the source of the problem – an open source library that I was using had what I considered a design flaw.
I was tired. I was frustrated. I was more than a little angry at how much time I had spent tracking down this issue only to find it was because of a “stupid” design decision in this library. It was all I could do not scream and rant and call out decisions as dumb, in the issue ticket I opened. Even with some restraint, I certainly didn’t present my problems well. I blamed the code and design of the library far more than I should have and clearly made myself look bad.
I’ve Been There
I’ve been the one in power – the project owner, the tech lead, the open source project creator. I’ve been frustrated by the comments on my projects, the ranting about why something does or does not work a certain way. I was the guy that laughed when my team member didn’t understand the issues with his unit test.
I’ve also been the one that had no clue what I was doing. I’ve submitted issues against projects when it was my code that was the problem. I’ve been pissed off at the project and the owner, wanting to scream and yell… and I have screamed and yelled.
I’ve laughed. I’ve pointed fingers. I’ve raged with anger.
It’s Not Easy
Calm down. Stop typing that gut-reaction response. Does that person really need to know what you’re thinking right now?
It’s not easy. It really isn’t – especially when you’re right there, in person, talking face to face. Being able to calm down, back away and stop yourself from doing something stupid can be difficult when you’re upset, frustrated, tired, etc. But with the internet, at least, we have more opportunity to calm down. The time between reaction and response can be nearly infinite when communication is asynchronous. Email, Twitter, GitHub issues, and even “instant” messaging; these things are not so “instant” after all.
I was angry with the project and design decisions on that issue that took 3 days of my time. I’m still upset about the time I put in to this – but that’s my problem, not the person that created this project. So, I stopped myself from writing the worst of what I was thinking. I did my best to have a civil conversation with the project lead. Yeah, I probably made an ass out of myself anyways. It’s hard not to when you’re upset. I tried… maybe eventually I’ll succeed… one of these days.
I still suck at this. I still rage. I still laugh and point fingers. But I try, at least… sometimes.
Remember That Time When …
The next time you want to fly off the handle at a comment or critique, or when you find that bug or see that ridiculous code, stop to think about the last time someone ridiculed you or got pissed off at you for asking a question.
How did it make you feel?
Yes, I’ve been “that guy” – I’ve been the jerk, and probably will be again. But I’ve also been that other guy – the one that took time to help, even when my initial response was to be pissed off and angry.
Guess which of these attitudes – hubris, anger and shaming vs patience, kindness and a helping hand – has been the most influential in my career, my relationships and in the communities I am part of?