What Defines the Ruby Community?
Adam @ Heroku writes that two factors define the Ruby community:
“First, Rubyists love elegance.”
Every programmer worth a damn thinks they love elegance. But if you read Beautiful Code, you’ll come away with an appreciation that, though every programmer calls this thing we prize elegance, for each of us it’s something different. Some say assembler is elegant, because it’s so close to the machine. Others say Lisp is elegant because it’s so simple. Others say Python is elegant because it’s so readable. Others say Java is elegant because of all the design patterns. Everyone thinks their language is elegant and only they understand elegance. Well guess what? It’s bullshit. It’s called subjectivity, and we’ve all got it, and frankly, I think the language debate would probably be more enjoyable if we all just woke up tomorrow and realized that we chose these languages for stupid emotional reasons and that’s why we’re going to use the ones we’re going to use.
“The second, and more subtle point: Rubyists are dynamists. We have a deep understanding of the infinite series of technological progress: each stage of advancement building on the next.”
I think this is horrifyingly true. True, but should horrify everyone. While Ruby programmers are going out chasing “things that have the minimalist and pleasing aesthetic of a haiku or a Zen garden,” they’re also out there writing thousands of lines of code to create, among other things, unit testing frameworks when there are already unit testing frameworks that work just fine and have APIs that can be comprehended by humans. What’s not being said is what Ruby programmers just don’t seem to be willing to do: live with a system, incrementally improving it.
Remember the debacle with _why and nokogiri? There are three lessons in it:
- Ruby developers would rather start a new project than improve an existing one.
- Ruby developers like to be assholes on their blogs to other Ruby developers.
- Ruby developers have a hard-on for Asian sounding shit.
These are all traits of rock stars, not programmers. All guts, all glory, all bullshit. As I said on Reddit, it’s a great community if you can stand the pomposity, the childishness, the wannabe Promethean air that the vocal Ruby programmers take.
There’s another concept from Eastern religions these guys should really take a crack at: Maya:
“Maya, is the principal deity who creates, perpetuates and governs the phantasmagoria, illusion and dream of duality in the phenomenal Universe… It is a mistake, although a natural one, to believe that Maya represents a fundamental reality or Truth.”
The search for the perfect web server, the perfect unit testing library, or the perfect ORM are veils concealing the real questions. There’s always going to be a better ORM than the one you’re using, but should we be doing ORM at all? Making a good database is extremely hard, and querying a well-designed database isn’t always straight-forward. Shouldn’t we be spending our time learning to use the technology that we already have? Shouldn’t we be asking ourselves how to write better tests, rather than writing better testing frameworks? Would we really care if Thin ourperforms Mongrel if we were using a language in which performance were not so difficult to attain? The heart of the matter is so far from the Ruby crusade. The parade is marching in the opposite direction of progress, in the name of progress.