Recently I was talking about Agile Development with some of my colleagues, and what it meant to be working in an agile culture. We do not work in a purely agile way, however we do practice many of the techniques often found in a team which practices a pure agile approach. For example we do Pair Programming, but only sometimes. We do TDD but not on all projects. We have short concise meetings but we sit down and don’t stand up. So the argument was are we agile or are we not?
Many people think that unless you are carrying out Iterative and Incremental releases, Test Driven Development and Pair Programming you are not working as an agile developer. However do you really need to be doing all these things to be working in an agile culture?
Back in 2001 a group of software engineers from various agile disciplines got together to discuss and find common ground with regards to the most efficient way to produce quality software on time and on budget. At then end of the two day meeting they came up with the Agile Manifesto
If you go and read the manifesto you will see that no where is there mention of what processes should be used, it simply states four principles. Now you could argue that if you follow the four principles then you are working in an agile culture right?
In an article by ‘Uncle’ Bob Martin The Corruption Of Agile he states his opinion that it is not only the values but also the practices used by a culture which define it.
This leads us back to the idea that to be working in an agile culture you need to put in place practices such as TDD and Pair Programming.
The way I see it?
- If the way you work values individuals and interactions over tools and process, and
- allow you to produce working software of high quality, where
- customer collaboration is made a keystone of how you produce your software, and finally
- you can respond to change without causing catastrophic damage to your code base
then you are working in an agile culture and A rose by any other name would smell as sweet.