views:

58

answers:

3

Having never worked with Ruby on Rails, I looked it up on Wikipedia. It says

It is intended to be used with an Agile development methodology that is used by web developers for rapid development.

This got me asking how a given language/framework can be more appropriate for given development methodologies. Are there certain languages that are more friendly for pair programming, for instance? Are there language features that make certain methodologies are more appropriate? Are there features that make certain methodologies impossible?

My initial reaction is to dismiss the connection (the design process is a business process, which is more dependent on business needs that language features). But I'm an only programmer within the firm, and I'm a partner, so I get to decide the business needs. What do you think?

Also, if the SO community finds that certain languages point towards certain methodologies, what methodology is most common for c#, which is what I use most of the time?

A: 

Certain environments help, particularly for methodologies which stipulate rapid code and unit test cycles. For example, it takes 4s for me to compile and run the basic tests for a 50,000 line project in C, but it there was a post on here a year or so ago where someone was taking 2 minutes to run 'unit' tests on RoR due to database overhead.

Pete Kirkham
A: 

Dynamic Languages are natural friends of Agile Methodologies (Agile is not a methodology but a family of methodologies with Scrum, XP,...) because they derive from the same "pragmatism" spirit but as Business Pressure requires it, even compiler's languages now use Agile and in fact are becoming agile by integrating dynamic features like C# or the .NET Framework with the 4.0 version.

Rebol Tutorial
+2  A: 

I certainly consider different languages to promote certain methodologies as much as they entail different philosophies


Object-oriented languages are suitable for larger groups since code can be neatly decoupled. Dynamic languages instead will allow much more explorative and straightforward approaches due to the possibility of interactively testing code (e.g. interactive shells) without long compile times.

Convention-over-configuration like practiced by RoR is suitable for rapid development whereas advanced functional type systems like F#'s or Haskells promote a types first approach.

And of course, it's even easier to prove opposite - You can't rely on types in an insufficient type system, you can't decouple by interfaces where they're all implicit and you can't easily explore a problem by try and error in languages like C++. So yes, there is a connection.

Dario