Question

I have been practicing TDD and (some) XP for a few years now and have found that it solves many of the problems I had in my career previous to it's adoption. By removing so many headaches, my love of coding has been rejuvenated. The problem is I have also found it difficult to find .NET (my current stack) projects utilizing these practices.

My question for the SO community is: Which communities (language and/or frameworks) do you feel embrace agile practices such as tdd, (all the xDD's really) xp, ci, etc the most?

For this question to be asked, a means of measurement must be defined. I would define it for a given community/stack as:

(number of current projects embracing agile methodologies) / (number of current projects)

Obviously without data that probably does not exist this is impossible to determine...I am just looking for people's perceptions

Was it helpful?

Solution

I have toes in both the Rails and the Django camps. From what I see, the Rails folks really get testing. They talk about testing in blogs, talk about testing in conferences, and spin off some interesting testing tools (e.g., ScrewUnit) for testing the non-Rails parts of their apps. It's really hard to be part of the Rails community and not test.

The Django community lags behind on the testing front. Django ships with basic support for testing, but you have to look for it. None of current Django books do much more than give testing a footnote, and I rarely see any substantive "how to test" blogs from Django community members. There were no talks on testing at the first DjangoCon.

On the flip side, Rails people are far more likely to get themselves into messes dues to monkeypatching and gem version conflicts (or gems or plugins doing conflicting monkeypatching), so automated testing is essential. The Django projects I've seen have been able to skate by because it's harder to get yourself into the same trouble.

As for other agile practices, it's hard to say without being able to peek inside of a lot of projects on a day-to-day basis.

OTHER TIPS

If by communitry this is about people, as what else is a community really, here are a few groups:

Agile Project Leadership Network has the implication in its name that it embraces Agile approaches.

Alt.Net strikes me as a group where you could bring various Agile practices and get various results as some may like them and some may have had problems with them.

Agile is more about process rather than specific technologies usually, though. If your question is more about what technologies and frameworks do companies using Agile embrace, that is a whole other ball of wax with questionable value to my mind. The companies near me, in Calgary, Alberta, that embrace Agile may be vastly different than others,e.g. what companies in Bangalore, India or London, U.K. or Silicon Valley or New York City, New York or Seattle, Washington to give a few locations where there are some developers working, usually unless you mean companies like Thoughtworks that do Agile if you are near a large city where they have an office.

Another line of thought would be to consider how some technologies may have various sub-communities or size that may cloud things here. For example, there are likely many Java and .Net developers that embrace Agile and many that loathe it. If some companies have a Waterfall methodology that works well for them, why should they switch to Agile? At the same time, some technologies may have really small communities and so they may be viewed in a much different light. There is also how well organized would the people using these new and emerging technologies be if that is a factor to your mind.

Hopefully someone found this brain dump interesting... ;)

I don't think any of these workflows are tied to a specific language, nor do I think any language necessarily lends itself to these workflows. Any deviation from this is largely cultural.

For example, the canonical rails project skeleton has a very low barrier to writing tests or using TDD, but there's nothing stopping you from grabbing NUnit and writing a TDD .NET project.

Here are some .NET tools you might be interested in researching:

Unit Testing:

Continuous Integration:

From my somewhat limited experience I have found that the Ruby/rail community has been pushing the cutting edge on testing. Introducing new technologies and generally integrating the concept of TDD and BDD into most things. PHP on the other hand is somewhat haphazard. Some groups use it religiously and other seemingly not at all. The toolset in PHP does not seem as robust and deep as it is in the Ruby & Rails communities.

YMMV.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top