I used to work in Calgary. For 3 years, I worked on the same product. When I left the company, our team had CI, TDD with 450 unit tests covering 52 % of our code base. The funny thing is that we never considered ourselves Agile. In fact, it's a new member of our team who told us.
As any Agile team, we did it by iterations. It all started when my boss was asking me to test our product before a release. I got tired of saying "It's completely tested" because I had no metrics to honour this statement. How was I able to determine if the application was robust? So I looked on the web for answers. I found a tool called
NUnit. That was back in 2004. It took me about a week to convince myself. I became an adopter of TDD. A few months later, I discovered
Test Driven .NET which boosted our productivity.
6 months passed and things were going well. We were writing tests and running them manually from time to time. The tests found bugs but we couldn't fix them fast enough. We then discovered
Cruise Control .NET and its continuous integration process. It took us 2 minutes to realize it was the missing link, the killer app we were looking for. We could now automatically build our product and run our unit tests on it. It set our iteration period, our frequency of releases.
But we were far from perfect. Did we do a daily Scrum? Nope. Did we do pair programming? Nope. Did we use mock objects in our unit tests? A little bit but we could have worked more on that. At least, we were continuously improving our process. We took the time to rewrite portions of code that were hard to debug. We had little (or no) written documents about features to add.
A month before I left the company, a new developer joined our team. His first remark was how Agile we were. We never considered ourselves Agile. We attended Agile meetings, read books about it but never gave thought about how Agile we were.
Looking back at my Calgary experience, I think it's hard to determine when you are Agile. You know you are a Java shop because you write code in Java. You know you are ISO 9001 because you pass the certification. But how do you know you are Agile? It's pretty fuzzy to me. Maybe this is the strength of Agile. It leaves you the burden to decide when you are Agile.