Skip to content

Instantly share code, notes, and snippets.

@searls
Last active July 18, 2016 15:48
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save searls/e752f63f8aaf77ce94cf79dd78d4337f to your computer and use it in GitHub Desktop.
Save searls/e752f63f8aaf77ce94cf79dd78d4337f to your computer and use it in GitHub Desktop.

Justin Searls presents, "Tenderlove: the DHH story of a boy named Gary Bernhardt"

Short abstract

Ruby has heroes. Demigods who show us how to write better code. Turns out: they're just ordinary developers! This is the story of how I discovered that by becoming Ruby-famous. In the process, I learned our hero culture is toxic.

Want to keep Ruby weird? Stop listening to us (right after my talk).

Full abstract

Ruby has heroes. Demigods who show us how to write cleaner code, use newer tools, and think better thoughts. We are blessed by their wisdom.

¡Spoiler Alert!

Turns out, Ruby celebrities are just ordinary developers with a platform to share their ideas. This is the story of how I discovered that by becoming Ruby-famous myself. In the process, I learned why hero culture is toxic and how we'd all be better off if we suppressed it.

So, you want to keep Ruby weird? Then stop listening to me! (…right after this talk, I mean.)

Notes

This is the sequel to Make Ruby Great Again.

Ruby never had a single big vendor like Oracle or Microsoft backing it. That's exactly why so many of us started using it! From 2004 to 2008 or so, Ruby experienced a veritable Cambrian explosion of creativity. Frameworks that did things you couldn't do in other languages. Gems that did familiar things with delightful, creative APIs. DSLs that enabled teams to reframe how they thought about things like requirements and deployment.

Prior to Ruby, my experience with Java was typified by a reluctant compliance to do whatever Sun told me to do next. But with Ruby, I could write whatever I wanted—and nobody could tell me I was doing it wrong. But those free-wheeling days were numbered; the power vacuum didn't remain unfilled for long. Slowly, as the community coalesced, events and social networks grew to foster the emergence of a cadre of heroes in the Ruby community. Most teams writing Ruby adopted a mindset of compliance, appealing to the authority of the Ruby heroes they followed. Before too long, you could short-circuit an introduction by identifying what tribe a person belonged to. It may have made us more productive, but it narrowed the breadth of how we used Ruby.

Even still, for quite a while life with Ruby was vastly superior to other ecosystems. Instead of a monolithic vendor with a self-interested agenda telling developers what to do, Ruby had a relatively diverse set of viewpoints available, each put forward by thought leaders jockeying for acceptance by the Ruby community. This sorting process was hardly meritocratic, but it was more egalitarian than most language ecosystems.

More recently, now that the dust has settled and the ecosystem is mature, a lot of those leaders have stopped writing Ruby. Hero culture, the same force that supplanted the chaotic, unbridled creativity that led to Ruby's ascent, is now itself in decline. Today, most of the surprising and exciting new things I see being done are happening in other languages like Rust, Elixir, and JavaScript. If complying with the prescriptions of its heroes was ever an effective strategy for Ruby to be successful, it's no longer working.

At this point, the biggest impediment to Ruby's continued relevance is our own inhibition to buck the social and technical norms popularized by its heroes. Ruby's best chance for a bright future is for each and every one of us to take our language back. Experiment with unproven designs, even if the broader community has previously rejected them. Play with new ideas, even if they aren't popular. Publish new gems and blog posts, even if they're half-cocked. Think boldly and propose radical changes to how other Rubyists do things, or to Rails, or even to Ruby itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment