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.