Stop Saying Best Practice
wking.dev
wking.dev
The “stop saying best” conversation is one that came up periodically, and for a time, I was very against using the word “best”. There is rarely a single right or best answer to any given problem, and I wanted people to understand this nuance. I didn’t want people to blindly follow the advice because it says “best” in the title.
But over time, I changed my views. “Best Practices” is a label for guidance that tries to keep people on the rails. When people want to know what to avoid or what they should definitely do, they search for “<Product> Best Practices”. It’s a category of information as much as anything else.
Calling these good practices, or implementation considerations, or some other label that tries to signal the nuance of the imperfect guidance or the impossibility of defining “best” just makes it hard to find the content.
People are smart and understand that “best” can’t be taken at face value. The engineer in me wanted to hammer this point home by making the content label reflect this. But this doesn’t really help much, and makes it less likely for people to find and read the content, which is a net negative. And the people who will blindly follow advice will keep doing so regardless of the title.
This will depend on the product and the space used to publish the content. I worked on content that was published to a developer portal, which also had an integrated community, and this community had published guidelines for participating.
In terms of content discoverability/SEO, guidelines is often overloaded.
I started to look at this content as a direct extension of the overall product. And when thinking about naming things, it often most effective to meet users where they are. The technically correct label on a button is often not the label that actually resonates with users. Same goes for content, IMO (within reason).
I think most of this is solved by a summary/abstract describing the content and what the user should take from it.
Nevertheless, this is the term I've been using lately, mostly with a statement of guideline followed by its benefits or reasoning behind it. It is gentler and inoffensive to those who have tender sensibilities, thus enabling a productive embracement of the guidelines, a useful critic on them or an eventually better guideline, instead of inflamed egos inciting flamewars.
Sure, be open to something better coming along. But while you're waiting, use the best we have now.
- By well meaning people describing that they're using a tool or practice because it's a community standard
- By juniors using it as a weapon
An example of the second is when people insist on DRYing up a class that is only superficially similar to something that already exists, but that is virtually certain to diverge over time given our business model. Or addressing tech debt without considering what tech debt is high-impact, and focusing on efforts that don't make much of a dent in day-to-day operations.
I don't really mind the first; only the second.
Ideally, we'd proliferate some of these posts that talk about good patterns, the context they matter in, and what kind of tradeoffs they result in.
I don't like "best practice" either, because it implies a one-size-fits-all, fixed forever, no innovation approach. How about "this is how we are doing it now, it is really good because of X, but has weakness/limitation Y?"
It reminds me of the time somebody suggested always replacing the words 'user-friendly' with the words 'lemon-scented' because those words would be just as meaningless anyway.
"best practice" implies there's bo room for improvement. let's face it there's plenty of room to improve software development