In reply to the latest and greatest article about how the ruby train is all choo choo. This started as a comment on the said post, but grew too large into justifying a post here.
A couple of pre-words on me in case you got here from that article and you’re not familiar with me.
I’ve been doing web related and (other kinds of) software development for quite a few years. Just in the last couple of years I did so with Java, .NET, Ruby, Javascript (and to a lesser extent also with python and php, even perl). I actually moved from “fat-client” to web with .NET (circa 2003) and discovered rails later (but quite early – @mid 2006) so I fall into the “.NET devs discovering rails” group. My machine of choice (actually bought it myself) is Macbook Pro. You cannot put any fanboy hat on my head.
And I think that Rails is a cool platform, I really do.
And I like the ruby language. A lot.
BUThere is my take on the takeaways from that article:
RoR is mainstream in Silicon Valley startup scene. Even non devs (business guys and VC types) that I talked with were all chanting about “how ruby is cool and all startups must use rails”. It is far from mainstream on any corporate environment, at least the ones I’ve been in contact with. Why? I have a idea but there isn’t enough room here for that. But it is getting a huge traction outside of early adopters circles (along with other disruptive stuff like node.js, tornado, lift etc
Rails is more enjoyable from crappy vanilla .NET environments. But vanilla rails (with no gems) is much worse. Now if you use modern tools and libraries on .net (monorail/fubo/nancy/windsor/nhibernate/etc.) then .NET is at least as “enjoyable” if not more, since you do not have to deal with crap-load of conflicting, questionable-quality gems. As for productivity - this is a whole different story - it is more about the developer’s abilities and mindset than about the tools he’s using. I know COBOL devs that are super productive, and Rails guys that are destructive at best. Perhaps others think differently than I do, but you should scrap the “every, single, one” bit (or at least the undo the colouring). I might just be that one, and I know more than a few more.
Far from being a fanboy MS (with regards to server dev tools) has loads to offer. C# is wildly more advanced and feature rich than any other mainstream language, and the upcoming things in c#5 making it even better. And the BCL of .NET is better and richer than perhaps any other built-in class library today in orders of magnitude. The VM , typesystem and core runtime are very robust and filled with features. Real features, like the advanced concurrency controls etc. So, true that Rails comes with nice sugars that appeal to some people, but once you need to do more than “read from DB render to html” you start hitting walls. While on the other end, if you start with a solid baseline (like .NET’s or Java’s) you are far less likely to get stuck, and it is easy to find the right sugar to sparkle on-top (there are countless snappy MVC frameworks for Java and .NET, and language choices - even compatible rubies, but far more options). Java 7 got dynamic dispatch, and if Java 8 will at last get closures (and if it will be supported in the runtime and not in the compiler) then we are looking also at good news from Oracle-land.Btw - if stagnation is the issue - when would the rubyists finally give up on 1.8, and on the hybrid 1.9, and get a proper 2.0?
Almost every professional I know that is involved in .NET, is not identifying himself as a .NET developer, but as a Software Developer, and they are open for ideas, and they are not religious about their tools. On the other hand, apart from one, all of the Rails related professionals I know of are behaving as if they are the warrior-priests of DHH, spreading arrogance (we saw the light - you will too!, my life were so bad, but now it’s all flowers and barbecue, blah blah blah) FUD and loudness everywhere (whitespace is crap! static typing is crap! tabs instead of spaces? crap!). And they ALL identify themselves as “Rails developers”.
It is much worse than what the Java community used to be before they started opening up for stuff like groovy, scala and clojure.
My takeaways:
As a developer – always strive to be better. Know the tools of the trade. Know the tradeoffs of the tools.
As a person – always strive to be better. Know that the are (usually) no black-and-white decisions. know the tradeoffs.