overreactedby Dan Abramov

Name It, and They Will Come

March 25, 2019

You’ve discovered something new.

You haven’t seen solutions quite like this before. You try to keep your ego in check and be skeptical. But the butterflies in your stomach won’t listen.

You don’t want to get carried away, but deep down you already know it:

You’re onto something.

This idea turns into a project. The first commit is just 500 lines. But in a few days, you build it up just enough to start using it in real code. A few like-minded people join you in improving it. You learn something new about it every day.

You’re still skeptical but you can’t pretend to ignore it:

This idea has wings.

You encounter many obstacles. They require you to make changes. Peculiarly, these changes only make the original idea stronger. Usually, you feel like you’re creating something. But this time, it feels like you are discovering something as if it already existed. You’ve chosen a principle and followed it to the conclusion.

By now, you’re convinced:

This idea deserves to be heard.


If you work at a bureaucratic company, maybe you fight the legal department to open source it. If you are a freelancer, maybe you keep polishing it late at night after the client work is done. Perhaps you wish you were paid for it. But nobody knows about your project just yet. You’re hoping that they will. Someday.

You pull yourself together to get it ready for the first release. You write more tests, set up the CI, create extensive documentation. You design a beautiful landing page. You’re ready to share your idea with the whole wide world.

Finally, it’s the launch day. You publish the project on GitHub. You tweet about it and submit the landing page to the popular open source news aggregators.

git push origin master
npm publish

You’re anxious to hear the world’s take on your idea.

Maybe they’ll love it. Maybe they’ll hate it.

All you know is it deserves to be heard.


Congratulations!

Your project hit the front page of a popular news aggregator. Somebody visible in the community tweeted about it too. What are they saying?

Your heart sinks.

It’s not that people didn’t like the project. You know it has tradeoffs and expected people to talk about them. But that’s not what happened.

Instead, the comments are largely irrelevant to your idea.

The top comment thread picks on the coding style in a README example. It turns into an argument about indentation with over a hundred replies and a brief history of how different programming languages approached formatting. There are obligatory mentions of gofmt and Python. Have you tried Prettier?

Somebody mentions that open source projects shouldn’t have beautiful landing pages because it’s misleading marketing. What if a junior developer falls for it without fully understanding the fundamentals?

In a response, somebody argues the landing page design is boring. Additionally, it’s broken in Firefox. Clearly, this means the project author doesn’t care about the open web. Is the web as we know it dying? It’s time for some game theory…

The next comment is a generic observation about the nature of abstractions, and how they can lead to too much “boilerplate” (or, alternatively, “magic”). The top reply explains that one shouldn’t confuse “simple” with “easy”. Actually, Rich Hickey gave a very good talk about this. Have you watched it?

Finally, why do we need libraries at all? Some languages do well with a built-in standard library. Is npm a mistake? The leftpad accident could happen again. Should we build npm right into the browser? What about the standards?

Confused, you close the tab.


What happened?


It might be that your idea is simply not as interesting as you thought. That happens. It might also be that you poorly explained it for a casual visitor.

However, there might be another reason why you didn’t get relevant feedback.

We tend to discuss things that are easy to talk about.

Universal shared experiences are easy to talk about. That includes topics like code formatting, verbosity vs magic, configuration vs convention, differences in the community cultures, scandals, tech interviews, industry gossip, macro trends and design opinions. We have a shared vocabulary for all of those things.

We are also constantly pattern-matching. If some pattern triggers an emotional response (whether relevant or irrelevant to the presented idea), we’ll likely base the first impression on it. Learning by association is a tremendously valuable mental shortcut. However, familiar style may obscure the novel substance.

If your idea really is new, there might be no shared vocabulary to discuss it yet.

The problem it’s solving might be so ingrained that we don’t even notice it. It’s the elephant in the room. And we can’t discuss what we never named.


How do you give a name to a problem?

The same way humans always did.

By telling a story.

Name it, and they will come.


Discuss on Bluesky  ·  Edit on GitHub