April 15, 2004

Change now, change later...

I’m going to refer to the article I mentioned in my last blog entry once more, the article where Bill Venners speaks with Luke Hohmann on Marchitects (ug).

The article has a nice quote on the difference between an XP approach and a pragmatic approach:

Both the XP crowd and the Pragmatic Programmer crowd are making a bet. Either bet is a future option: the option to not spend the money now, or the option to spend the money now so that the cost of future change presumably is less. If the Pragmatic guys make the bet to spend some money now, and they’re right, we’re all happy. If they’re wrong, we may have some crud to take out or clean up. If the XP guys make the bet to not spend the money now, and they’re right, then we haven’t incurred the cost, and we’re happy. If they’re wrong, if it turns out you need to make the change, then you’ve got to go back and refactor and retrofit.

Personally, the pragmatic approach seems more natural to me. I’m a big fan of many XP concepts but to Do The Simplest Thing That Could Possibly Work just seems stupid to me in many situations.

I suppose if I could map out a project and all of the decisions I’d have to make while working on it, a good baseline for all of my decisions might be “Do The Simplest Thing That Could Possibly Work”. I kind of dig this baseline since it helps you start out in a mode where you aren’t in danger of over-designing a project. However, it’s just a baseline!

However, I’d treat this map like an graphic equalizer and push up the sophistication of pieces that I felt are in danger of change. I’d do this in advance of any requirement. I think that philosophy violates XP a bit, but I think the violation is warranted and I kind of fault XP for promoting it so strongly.

I mean, if I look at a piece of poop, I know it’s going to smell like crap. I don’t need to discover this by getting too close. Likewise, if I were writing a feature that depended on a few business rules that I felt could change, I’ll design the rules tests in a way that new rules can easily be added.

Obviously if I’m inexperienced, especially in the problem domain, such risk-taking could bite me. I suppose you have to take that philosophy with a grain of salt. The rules behind some features may simply never change and if you don’t know this then you should probably “Do The Simplest Thing That Could Possibly Work”.

Posted by Nick Codignotto at April 15, 2004 08:27 AM | TrackBack
Posted to Programming
Comments
Post a comment









Remember personal info?






Valid XHTML 1.0!   Valid CSS!