My previous post was a bit of April Fool-ishness. But it made me consider a serious question: why am I such an advocate of Agile software development, and what would it take to make me change my opinion?
I think that there is both a simple and a complex answer.
The simple answer is that, in my experience, Agile software development works. I have been involved in many different projects, each of which had their own style, and those that were agile produced the best results, i.e. the most frequent delivery of working software with real business value. However my experience is just that, and my (re)collection of past events is not the same as anyone else's. As Mr Ed acerbically points out just because XP has worked for me this doesn't mean that XP will work for you. (His argument that because XP has not worked for him it can't work for anyone else is quite ridiculous though.)
The complex answer is that the values espoused in the Agile Manifesto (and by XP in particular) resonate with me at an emotional level: XP ain't out there, it's in here. My personal values certainly include feedback, communication, courage and simplicity and I enjoy working with others who feel the same. I find it both unpleasant and difficult to leave part of my self at the door as I arrive at work, something I know I have to do when working in a non-agile team. I work best in an environment where people treat others as they themselves would like to be treated, away from the arrogance of "architects" who feel that coding is for "monkeys", and away from the unthinking bullying style of management that is the opposite of leadership. What I do at work is more than manipulating symbols on a computer screen. Being who I am is about collaborating with others to solve practical problems (and expressing those solutions in a well-factored, readable, and test-exercised software system). It's quite a standard to live up to, but that is what being part of an agile project means to me.