Mohamed Sanaulla wrote:
Jimmy Clark wrote:No, it is not dependent upon technology. Agile is a methodology for creating technology, i.e. software.
By technologies I meant- Programming language/ technology using which the software is built.
No, it's not dependent on a stack. Values, principles, planning, iterating, teamwork, etc (most of what constitutes Agile) is completely independent. You could be agile in Assembly or Basic or Prolog or Whitespace if you wanted.
When it comes to the
technical practices there are
biases. Some languages have been built up to make agile work easier than others, though I've seen it done in languages you might not choose for the purpose.
There are advantages to using languages which already have acceptance
test and unit test frameworks, but you can always build your own. I've seen them for C, C++, Python, Smalltalk,
Java, C#, PHP, and even SQL.
There is additional advantage if refactoring editors are available (smalltalk, java, C#, others).
If the languages run quick build/test cycles it's easier to get the rhythm going, so php, smalltalk, java, python, ruby have advantages there.
People are doing TDD in functional programming languages these days. It's different there, but that's not too surprising.
Finally, there are frameworks and libraries that can complicate testing. If you have an ORM (as most of us do) then you might have trouble keeping the tests fast because of dependency on the database. It's troubling, but we do it all the time. I've seen rails programmers do a lot of work in cucumber without unit tests when their work is really configuring some rails component instead of writing new code. Django expects to stand up a blank database for running tests, instead of testing quickly without a database.