Best Practices and Puffer Fish

James Bach’s seminal rant, No Best Practices, is a great reality check for architecture astronaut rhetoric. It’s worth revisiting even if you’ve read it before.

Some might say Bach’s viewpoint is pessimistic, even cynical:

The way to get rich in this world is mainly by making people feel large hope about a small exertion (i.e. “six-second abs,” lottery tickets, voting in an election, maturity models, and stuff like that). If you want to get rich, do not tie yourself to the truth.

I say his viewpoint is not only healthy, but necessary. If it feels painful, that’s good. The truth is always a little painful.

You should question all the advice you get. And you should especially question any so-called “best practices.” The very utterance of the words “best practice” should set off warning klaxons, sirens, and flashing red lights. At that moment, you’ve left the realm of opinion and advice. You’ve entered the realm of evangelism and true believers.

And yet the world is full of best practices and tidy little checklists. Developers are all too eager to preach the one true solution...

In way too many meetings, the fastest talkers win. And by “fastest talkers,” I mean those who are the first to articulate an idea, challenge, issue, whatever. Too many of us assume that if it sounds smart, it probably is, especially when we aren’t given the chance to think about it.

... but problems are rarely that simple in the real world. Why? James Bach has a theory:

Do you know what’s behind all this? I think it’s simply that so few of us know how to do our jobs. Like puffer fish, many of us feel that we need to huff ourselves up so that predators won’t devour us. We fluff ourselves full of impressive words.

All this impressive talk is fueled by fear. The field of software development is so vast – and the piece of it we know is so impossibly tiny. We’re constantly living in fear that people will find out how little we know. That people will realize we’re impostors who are lucky to still have a job.

Rather than simply stating what we’ve done and how we did it, we feel compelled to puff it up into a spiny, intimidating best practice. We attach our egos to our code frameworks. If someone doesn’t agree with our approach, they’re attacking us personally. If someone has a different best practice, they’re amateurs who don’t understand the problem domain.

Fear can make you do some irrational things. Being honest and humble is difficult – it’s painful to admit that you don’t have the answer; that you’re not an expert; that there are so many variables you can’t control. But whatever you do, always avoid the empty trap of the puffer fish.

Jeff Atwood

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what I'm talking about. Let's be kind to each other. Find me https://infosec.exchange/@codinghorror

⏲️ Busy signing you up.

❗ Something's gone wrong. Please try again.

✅ Success! Check your inbox (and your spam folder, just in case).

Recent Posts

map of the United States via rgmii.org showing all 3,143 counties by rural (gold) / metro (grey) and population

Launching The Rural Guaranteed Minimum Income Initiative

It's been a year since I invited Americans to join us in a pledge to Share the American Dream: 1. Support organizations you feel are effectively helping those most in need across America right now. 2. Within the next five years, also contribute public dedications of time or

By Jeff Atwood ·
Comments
Let's Talk About The American Dream

Let's Talk About The American Dream

A few months ago I wrote about what it means to stay gold — to hold on to the best parts of ourselves, our communities, and the American Dream itself. But staying gold isn’t passive. It takes work. It takes action. It takes hard conversations that ask us to confront

By Jeff Atwood ·
Comments
Stay Gold, America

Stay Gold, America

We are at an unprecedented point in American history, and I'm concerned we may lose sight of the American Dream.

By Jeff Atwood ·
Comments
I’m feeling unlucky... 🎲   See All Posts