Software engineering
Extreme prorgamming (XP) is a agile software development method, which I came across in an undergraduate Software engineering course that I took at Toronto. It didn't make much sense to me, and usually it doesnt make much sense to people who haven't programmed in the real-world for the real-world. All I remember of XP was that it required programmers to program in pairs. But that is probably a lesser important characterisitic of the agile method. Just the fact that two programmers has to sit together and program in XP, probably amused everyone.
XP is a rapid application development methodology, whereby less time is spent on design. This immiediately requires a lot of refactoring (cleaning up) code, which is another important characteristic of XP. So when do we pick XP over other methods? XP is best used for developing systems which require relatively a lesser amount of design time. So for e.g. e-commerce systems built using the Java framework, would require a far less time spent on design, due to the availability of already-built frameworks (such as JavaBeans, etc.). The developers build on top of this framework, which in a way dictates the programmers to follow a certain design rule. I say this from my experience at BEA, where portals developed using BEA's Weblogic Workshop, followed a more-or-less standard design rules set by BEA. These rules were obviously well established, and have known to work, and easy to maintain. The rules could, ofcourse be changed, by re-configuring a few XML files.
XP has become more practical with the advent of Automated refactoring tools. There are tools out there which could pinpoint repeating code, and replace repeating code with a single function. Eclipse and a lot of other IDEs out there are equipped with refactoring tool plugins. More on refactoring tools can be found here.
XP is a rapid application development methodology, whereby less time is spent on design. This immiediately requires a lot of refactoring (cleaning up) code, which is another important characteristic of XP. So when do we pick XP over other methods? XP is best used for developing systems which require relatively a lesser amount of design time. So for e.g. e-commerce systems built using the Java framework, would require a far less time spent on design, due to the availability of already-built frameworks (such as JavaBeans, etc.). The developers build on top of this framework, which in a way dictates the programmers to follow a certain design rule. I say this from my experience at BEA, where portals developed using BEA's Weblogic Workshop, followed a more-or-less standard design rules set by BEA. These rules were obviously well established, and have known to work, and easy to maintain. The rules could, ofcourse be changed, by re-configuring a few XML files.
XP has become more practical with the advent of Automated refactoring tools. There are tools out there which could pinpoint repeating code, and replace repeating code with a single function. Eclipse and a lot of other IDEs out there are equipped with refactoring tool plugins. More on refactoring tools can be found here.