Saturday, November 20, 2004

Extreme Programming (XP)

Thanks, Harold, for the comment, and welcome aboard. I don't know too much about XP except what you introduced to me and reading a few articles. It appears to be a more effective approach to software design, resulting in greater programming productivity and better tested software. But I'd like to see data which backs this up. The XP.org site seems to be a good starting point to find out what it is.

The idea of staged, interactive, cooperative software development is compatible with Complex Adaptive Systems which are more reality-based than top-down regimented approaches. These systems depend upon feedback, re-evaluation, decision making based upon that feedback, learning from experienced failures, and of course, adaptation to a changing environment. As I was just Googling on "Complex Adaptive Systems + software development", I did find this article on ASD (Adaptive Software Development) which appears to be akin to XP.

I was just reading the part about paired programming (this is where 2 programmers share the same computer), and you're right; I just can't see that being effective, especially with those endless mouse and keyboard battles! What would appear to be better is developers working on separate stubs (i.e. similar functionality, different approaches or algorithms), test them out in isolated environments, and then upload the best-fit stub. This would still necessitate the "teamwork" approach as it would take several engineers to make this determination.

Thorough software testing is integral to the success of XP. Automation can certainly increase testing coverage; however, experience has shown that automation can be a headache in a perpetually-changing software environment. Automation works best after a code freeze when the features and UI are set. Instead, I think "under-the-hood", or what is often refered to as whitebox testing, is preferred. This is code-level testing. It's effective at finding bugs and failures BEFORE the features are completed. This can help streamline design decisions and feature implementations.

0 Comments:

Post a Comment

<< Home