If It’s Good For You, Good For You!
tl;dr: We need to stop telling others that they’re doing it wrong just because they’re doing it differently. Different things work for different people; we should at least consider that other paths exist, even if we choose not to take them.
Y’all Be Jokin’ On Me⌗
The other day, I saw this meme:
It's not just me, right? #noestimates pic.twitter.com/LYL7TOO0ov— I Can Haz Agile? (@agile_memes) February 25, 2015
The instance of the tweet that I saw had about 9001 comments from both sides of the estimation debate that proved the point of the meme itself. My initial reaction was, “Yes! This observation is both humorous and valid. Often, people do indeed respond with great scepticism and dismissal when someone suggests exploring a new methodology!” The replies quickly transformed my feelings into something along the lines of “Stop arguing on Twitter about why everyone needs to do it your way!”
As I said above, to me it wasn’t really about whether estimates or no estimates is the best way to do things. It was about the way people (not isolated to developers) insist that their way is the only way, and everyone else is an idiot who has never been successful with anything in their lives. It’s about how simply suggesting that an alternate path exists is treated as incoherent babbling.
So many are convinced that what works for them and their team is the one true way, and anyone doing something else must be converted. To such a mind, there is no need to try something else, or to even acknowledge that something else exists. Methodology, language, framework, tabs vs. spaces, and even source control1 somehow become matters of great urgency.
What if we focused instead on the value being delivered and the problems being solved? What if it’s ok to eat mashed potatoes with either a spoon or a fork, as long as the food is making it into the mouth?
There are certainly cases where a new technology, a new methodology, or a different source control solution can yield significant, objectively measurable improvements. There are certainly patterns which can wreak havoc on a system or compromise privacy and security. In such cases, of course we should share that knowledge. However, there are ways to make such sharing effective, and there are ways to ensure that no one takes you seriously.
Ways To Make A Point, Ranked, Edited For Length and To Make A Point
(1) References to case studies, production systems
(2) Side by side demo solutions, real world scenario
(3) Side by side code examples, contrived scenario
(4) Prose describing hypothetical situations
(9001) Popularity contest
(10001) Get really loud
(11001) Get really snarky
(NaN) Call the other person stupid
What If They Still Won’t Listen?!⌗
Well, if we’re going to start a Dark Knight reference, we might as well wrap up with one. Symmetry!
Please do calmly, respectfully highlight the pitfalls of pattern / framework / methodology X and how Y mitigates said pitfalls. If a person insists on moving forward with X, you’ve done the best you can. It is not your job to change a stubborn, irrational person into a thoughtful, logical one. If the dangers are real, then they’ll eventually be bitten by their willful ignorance, and maybe they’ll want to revisit the discussion. If not, then maybe those dragons you were seeing weren’t such a big deal after all, and you’ve avoided fighting over something irrelevant.
Admittedly, this is a bit more complex if it’s happening within your own team. In that case, if the dragons come, they’re eating you too. Even if they don’t come, there’s a weird air of conflict hanging around. This post was focused more on arguing with people you don’t work with about things that will not impact you. I might cover team dynamics in the future, or you can feel free to share thoughts on that (or anything else) in the comments section below2.
probably definitely guilty of getting a bit evangelical about Git, but honestly, that kind of falls under the “Truly, Objectively Better” bit ;)
2: Just remember to keep the theme of this post in mind when commenting =p