3fE in Dublin has two large trophies from the World Barista Championships, but these barista skills in espresso are of no interest to us and we order a Chemex of their recently roasted Kenyan coffee. I'm sharing this Chemex with Max Ogden and Isaac Schlueter for a few minutes before Isaac says, "I have good coffee so often now that it doesn't seem like good coffee to me, it just seems correct."
A few years back I can remember dragging Isaac past about 10 coffee shops to arrive at the one I had deemed acceptable. Isaac was along for the ride but considered my quest ridiculous and remarked, "The great thing about not drinking good coffee is that you're fine with regular coffee, or even shitty coffee." Isaac clearly had no foresight into the impact our friendship would have on him in this regard, and I've always felt that he probably harbors some mild resentment because as much as I might be able to claim responsibility for his coffee enlightenment, I also must then claim the same level of responsibility for "ruining" his enjoyment of bad and mediocre coffee which is available in far greater abundance.
Isaac's apartment now includes an electric Bona Vita kettle and a Hario v60 for pour-overs, exiled forever from the guild of bad coffee lovers.
When Isaac used the word "correct" to describe our coffee he was using it the same way he had a day before and I couldn't help but relate the two incidents. At dinner we had gotten to talking about what I call the "substack pattern" -- node modules that export a single function -- and how it influences a module's aesthetic and keeps things simple. Isaac said that this was not a matter of opinion, it was simply the correct way to build node programs and modules.
I agreed with Isaac, but a few years ago I doubt I could have made such a bold statement. In my experience with so many other platforms and years of big projects, big modules, and grab bag utility libraries, I had never experienced the joy of working in an ecosystem built out of so many simple and small components that I now take for granted with node.js.
Theoretical exercises and methodologies get volleyed back and forth in regards to just about everything in programming. It's easier to read a book or write a blog post than it is to relate an experience but it's going through an experience that can change your perception forever. Rather than forming opinions about what is "the right way" you develop a more binary response: "This is the correct way, I have experienced its greatness, unless you have also experienced this and can relate to me you will not be able to dissuade me from my belief."
This makes it hard for those of us in certain communities to have civil discourse with people from other communities. If we've solved a problem well, and lived in the world where that problem no longer exists, there can no longer be an exchange of differing opinions. At the end of the day, we live in different worlds, and they just "don't get it." You can't have an argument about how to best solve a problem you no longer have especially if the other party is unwilling to admit that you have succeeded.
What doesn't help is to pretend these differences in perspective do not come from experience and to bend over backwards to give everyone a platform for "their opinion" about a problem that has been solved. We can either attempt to relate our experiences to each other and move toward a shared understanding or become content with the constant and embittered exchange of strongly held opinion we have now.