I listened to a podcast the other day from the guys at Herding Code that I found a bit disturbing, mostly because I think there is a some amount of truth in it. The podcast was about some fairly well known .NET developers who in the past few years have moved away from .NET into the Ruby world. Mike Moore and Scott Bellware were very active in the ALT.NET community and had a fairly well publicized split from the group. Google it if you want, I am not interested in rehashing it here. Jeff Cohen was a .NET developer who switched over to Ruby on Rails several years ago. Jeff also has a book out called Rails for .NET developers that looks interesting.
These guys have all switched over to primarily Ruby on Rails development. I have never developed any production Ruby code, so I can’t speak much to the benefits of Ruby, but the part of the podcast that really concerned me was the characterization of the larger .NET community as not being interested in design, testing, or having clean, simple code. And what really scared me is I think there is a fair bit of truth to it. As a .NET developer who cares a lot about TDD, good design, continuous integration and automated testing, I had to admit to my frustrations in the past at a larger community that may not care as much about these core principles as they might what the is in the next framework or set of tools.
I am not talking about the thought leaders in the .NET space like Jeremy Miller or Ayende Rahien, or the folks that I meet at local developer events. These are people that are either pushing the envelope, or at the very least trying to learn better ways to build great software. But I can’t tell you how many times I have gotten less than satisfying answers while interviewing candidates to questions like…How do you test your code? What blogs do you read? What new languages have you tried recently and how does it compare to what you are using in terms of ease of use, testability, performance. Why did you use a particular tool/framework and what were the strengths/weaknesses.
I have been able to do a little Python recently and have to say that the Python developers I have worked with are very familiar with the variety of tools available to them. Testing (especially TDD) and the goal of clean, simple code seem to be more baked into the culture and frameworks.
I am hopefully the the .NET community will continue to embrace good software development practices and be willing to look outside the Microsoft stack for good ideas and technologies. At the same time I plan on looking more at the Ruby and Python development communities. Give the podcast a listen, you may find it interesting and hopefully a little thought provoking.
Looking at RoR jobs or Google Trends, it seems like Rails peaked back in 2008. I think the impression most people have is that it’s a toy framework, and if you had to deploy something like consumer grade software or enterprise software one would choose .NET.
I am curious, based on your experience, how long do developers stick to a certain language or technology before moving onto the next big thing? Is a decade of .NET about what one would expect?
I don’t see .NET going away anytime soon (just evolving), but I wouldn’t mind trying out something new for hobby projects.
Hey Ryan, thanks for the comments.
The point I was trying to make was not whether C# was dying or whether Ruby was more popular. It is pretty obvious that there are a lot more C# developers and shops out there, and I don’t see C# going away any time soon (heck there is still VB6 code floating around out there). I like C# a lot and find there are a rich set of tools that allow me to use TDD, CI, and other good practices with C# and Visual Studio.
The point I was trying to make is what is causing some prominent .NET developers to move towards Ruby? Most of them are now developing in both C# and Ruby, but clearly there was a reason for them to make a shift. People like Scott Bellware, “Uncle Bob”, and Rob Conery are all very prominent in the Ruby community these days. What is drawing these Alpha-Geeks over to Ruby?
The other questions I was trying to ask is how much does your average .NET developer care about quality and craftsmanship, good design, and testing? How many developers on your team write good tests as part of their development cycle? How many teams are using automated tests and CI?
So I am hoping to get some time to start looking into Ruby some more. I download the Ruby for .Net developers book and started learning the basics. Right now I am doing some tutorials on ASP.NET MVC2 and trying to come up to speed on that, then I was hoping to do similar example applications in Ruby to get an apples-to-apples comparison. I will let you know how that comes out.
Pingback: Dirk J. Lässig » Blog Archive » .NET and Good Software