Perhaps the hardest thing for smart people to learn how to do is be wrong. And that’s a shame, because being wrong is a powerful thing that introduces you to new ideas and solutions. Especially when we get used to being right much of the time, it’s easy to lose sight of newer and more effective ways of doing things.

Invalidate your cache

When people form an opinion and stick with it for a while, they sometimes forget about the series of events that caused them to form that opinion. It’s easier to just stick with and repeat a solution than to review how it came to be each time, especially when it is proven to have a satisfactory rate of repeated success. This is very common in engineering environments. Sometimes, we need to invalidate our mental cache and be open to new ideas.

Just because something works well enough doesn’t mean that it can’t work better. Recently at Jellyvision, me and some other engineers had a civil and spirited debate on JavaScript promises. I voiced my opinion against promises, as I didn’t see the pattern as much more than syntactical sugar. Steve and Nadine countered with actual use cases where it helped to mitigate callback complexity. It took me a moment to realize it, but I was wrong, and I’m better off for learning from them. If you do anything for long enough, you tend to form strongly-held opinions, and it’s helpful to have a team that will cause you to revisit and sometimes reconsider those opinions based on their own perspective.

Proof speaks louder than words

Perhaps the most straightforward way to know you may be wrong is to look for metrics to substantiate or invalidate your position. I recently made a screencast that indicated that CSS animations performed better than JavaScript animations. This caught the attention of Paul LewisJack Doyle and Carl Schooff and prompted an email discussion that weighed the advantages and disadvantages of each solution. Jack and Carl provided numerous usage scenarios where JavaScript proved to be both more performant and effective than CSS for animation. Check out the linked articles to see what I mean. The answer of which tool is better for animation is nuanced and not clear-cut (I hope to summarize our discussion and put it online in the near future), but my original position of “CSS is just better” didn’t end up being correct. What swayed me was the evidence that Jack and Carl provided to prove their point. As an engineer, I cannot ignore evidence when it’s presented to me.

Learning to be wrong

It’s easy to see when someone else is wrong about something (or at least claim as much), but it’s a lot harder to realize when your own position on something may not be correct. It’s very common for engineers to get stuck in their ways. Loss of humility is so subtle that hardly anyone sees it happening, so it’s helpful to have a team and a community to keep you in check. The more wrong you are willing to be today, the more likely you are to be right tomorrow.