Spec#, A Safe Ride in Fast Ruby World

Let’s support Mike and friends at their Spec# project with Greg Young’s “I Want Spec#” campaign. Microsoft needs to know we want it.

Finally, we are just one step away from writing a self-verifying software. This goes completely the opposite direction from Ruby. And it is truly remarkable the irony of Spec# enthusiasm among Agilists, in the middle of the hype of Ruby and dynamic CLR, again, among Agilists. I don’t know if fanatics of fast sport-car has ever wanted car manufacturers to only produce safe 80 Mph cars.

People want the freedom to write expressive code without limited by those annoying compile-time verifications. But having software that verifies itself is also dream of every developer. It must feel like a tough dilema.

I don’t know about the feeling myself. First of all, I am not a fans of Ruby and other duck-typed languages. I don’t really want to admit it, because many people say (and reempasized by Jeremy Miller) that Ruby is like a developer magnifier that allows good developers to be faster and bad developers to fail faster. So by hating Ruby, I am apparently fall in the later category. But with all my bitter experience with an uncompiled duck-typed language, I just can’t help myself from prejudice hatred toward Ruby.

But seriously I haven’t got what is so cute about Ruby. What it gives you is just little bit more than syntatic shortcut. And with the emergence of Lambda expression in C# 3.0, the only thing Ruby really gives you now is frequent runtime exceptions. We lose all the immediate feedback and verifiability of static languages. It’s also refactoring nightmare, and we all know fear of refactoring is the most common cause of poor code quality. And are syntatic shortcut and quicker coding really worth introducing few bugs and sacrificing performance?

Probably in a fast-track arena, I will prefer a formula car to a safe city car. And I might only use Ruby for fast prototype or very small project. But most other time, I like car that is cheaper to maintain, efficient, and most importantly: safe.

I think, what we really get from Ruby is the community. The vibrant attitude of the community has produced many of greatest ideas and influences in software development. And many of the ideas have come illuminating the .Net land. Castle frameworks, the best friend of all Agilist, was born from Ruby’s RoR and ActiveRecords. And Ruby’s convention over configuration has also brought a major shift in how frameworks are now written in .Net.

But apart from the community, technologically speaking… I WANT SPEC#!