In general, I like to think that technically savvy people are reasonably smart. But I am always amazed at how blindly devotional many of us are.
At the recent Startup Weekend, the dev team’s choice was Ruby on Rails. The question of whether I am a "Ruby Hater" of some kind has already come up a couple of times. For the record I’m not. I really don’t care. What I care about is the end result.
But polarizing everything into haters versus fanatics is very common in the tech world. PHP guys denounce Ruby and Java. Ruby guys denounce everybody else. Mac users think PC users are idiots. Vi lovers spurn Emacs users. Pick your toolset or platform and I guarantee there will be factions that pronounce you worthy or mentally challenged based on your choice.
When I ran an animation studio, it was the same thing. We need Maya. 3D Studio sucks. Lightwave just can’t be used for whatever. On and on and on.
But the point is this: the whole haters vs fanatics thing is crap. Sure, in the early days of something new, some functionality will be lacking and key features will be missing. But once a new tool reaches a base level of functionality the differences between new and existing tools become largely irrelevant.
However, thanks to our collective devotional tendencies, tool choices often become a matter of personal religion, not an assessment based on facts. And that can’t be good.
For example, in the case of our recent Startup Weekend adventures, I personally would not have chosen Ruby on Rails for three reasons:
- There was a RubyCon in Charlotte on the same weekend, so presumably we were a little light on highly experienced Ruby dev guys.
- While the idea was simple, there was still a lot to be done in a weekend. By virtue of it’s age, PHP has a far greater library of available code that could have been used to get things done.
- We were integrating with a number of external systems (Google maps and a payment system). This has been done more and debugged more with other languages.
Note that these reasons have nothing to do with architecture, scalability or any other serious technical concerns. My reasons have everything to do with the constraints of the situation (available time, resources etc).
While you can always argue over the finer points of something, you ignore reality at your peril. And if reality conflicts with your current "religion" you either bury your head in the sand or you act like a rational being.
I for one prefer rational behavior. That’s what guides my decisions, and that’s the way I like it.