This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Huh? I say, Huh??
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
The XP guys seem to want it both ways. They tell you that with XP you're agile but can have great quality too. I disagree, great quality takes time and resources. The coupling that a lot of testing creates between code and tests degrades the product's agility.
Agility is all about the YAGNI philosophy. YAGNI leads to not writing a lot of unit tests -- just ones for important or tricky situations. Unless you're a lucky or amazing programmer your product's quality will not be great.
Ok, he's clearly not understood what xp is about. The tests are supposed to be coupled to the code; they test what the code is supposed to do. You don't just write tests for the tricky situations, you write them for darn near everything
- at last count, the Pollock project had well over 7000 tests!
YAGNI does not lead to avoiding tests - it leads to avoiding useless featureitis, something that has inflicted most projects I've been associated with or seen. What YAGNI is intended to do is force the team to actually think about real user interactions - by talking to real users - rather than just come up with nifty features that amuse them. There's more:
Andrew believes that code-test coupling can be reduced to improve agility. I agree with this but it takes more effort and can complicate testing. It seems to me that the more tests your product has the less agile it actually is.
It's rather the opposite - since I actually started writing tests, I've felt much, much more comfortable with refactoring - the tests are liberating, in that they reduce the liklihood of missing the typical unintended side effects of changing code. I think Ryan needs to do some XP instead of just making assumptions about it