Is Ruby Draining the .NET Community Too?
August 5th, 2005David Heinemeier Hansson, winner of the Google/O'Reilly's Best Hacker of '05, has some thoughts on the effect that Ruby on Rails is having on the .NET community. It seems a significant number of .NET developers are finding the Ruby environment to be more productive.
I see the reasons for ASP.NET developers to move to RoR is different from the reasons common for the Java community. In both cases the developers find they can get more done with less code. The Java people like the fact that they do not have lots of XML or complex hierarchies of objects to get the job done. For .NET developers, they just find the productivity shortcuts in RoR are basically the shortcuts they have been dreaming future releases of VS.NET would include...
One advantage that RoR has over legacy Java is the use of attributes to control and configure objects. You do not have to code every behavior. This functionality was created with XDoclet and now Java 1.5 includes annotations which provides this sort of meta programming ability. The .NET framework has had the ability to decorate classes and methods with such meta data to influence the compiler and the IDE in ways which really speed up development. And Scott Guthrie explains new features in ASP.NET 2.0 take it a bit further than before.
And perhaps the inherent simplicity of RoR is the hidden feature. With both Java and .NET a developer now relies on the IDE to handle lots of details and it is now all but impossible to work on such a project without an IDE. With RoR the functionality is still all there but you can actually edit each file with a basic text editor instead of a memory / processor hungry IDE. This simplicity acts almost like a drug to the programmer always searching for a way to write better software with fewer and fewer lines of code. That addictive quality could be the draw which has been hooking so many developers who were die-hard fans of other platforms.
Another major draw of RoR is that it has learned from other projects and uses their techniques to tune this new framework. David explains It's boring to scale with Ruby on Rails. The RoR team just looked at PHP, Perl, mod_perl, .NET and Java and used the bits which worked best. You could say that .NET did the same when it was created by looking at Java, Pascal and C. But when Ruby was created they stuck very close to the ideals of the Object-Oriented vision. In fact, everthing in Ruby is an Object, no exceptions. At first glance the environment does not have to suffer debates over multiple inheritance or whether generics will hurt the language. The Ruby developers seem to have gotten it right.
If they have it all right, why are we still considering .NET and Java as our trusted platforms for the next several years? The obvious fact is that Java has been around a while and there are lots of Java programmers. In a lot of ways Java is a safe bet. The .NET 1.1 Platform has made inroads and the coming .NET 2.0 is proving to be a smart next step for the platform. Both platforms have effectively proven themselves. As for Ruby, it is currently the new shiny object that has everyone drooling.
Give it a while for the new car smell to go away. Then consider if it can be taken seriously to run a commerce site such as Amazon.com. Perhaps it can, but until it does prove itself to the suits, the majority of us will be hacking away with our current toolsets. And maybe, just maybe, these toolsets will learn some lessons from RoR so they will not become viewed as we now view legacy languages such as COBOL.
