XP Programming explained - in plain English!
Lets imagine that you order some software. It needs to do quite a lot of things for you so it will take some time for it all to be written, but finally the agreed completion date arrives; and the software isn't ready, it will take another three months. Three months stretches to five and then it finally arrives; a wonderful, all singing, all dancing product with far more capabilities than you will ever require. The only problem is, it's full of bugs and crashes regularly. This wouldn't be so bad if, whilst it was running, it did everything that you wanted it to do but over the previous months your business model has changed beyond recognition so you need more modules adding to it. Two problems; firstly the package was never designed to be upgraded, so adding modules will be a very difficult and expensive task, and secondly the only programmer who understands the code changed his job three weeks ago. Your expensive software package, which you waited so long for and paid so much money for is now fit only for the bin; a big row ensues, the only winner of which will be lawyers in the end.
So let's look at a different scenario. A team is set up comprising of a representative from your company and a number of people from the company which will write the software. They provide not only programmers but also people who can write programs which will test the software automatically to ensure that it will run correctly and achieve what you want it to achieve, perhaps an analyst, and maybe a management person to liaise with outside suppliers too.
The job of the representative from your company is to liaise with the team and tell them exactly what you want the program to do. The programmers work in pairs writing the code, and every time any appreciable amount of code is added the system is tested. Once the code reaches the stage where it will achieve some of the tasks that you require, it is released to you so that you can start using it straight away and the programmers continue to work on adding more functionality, as specified by your representative, but meanwhile testing testing and more testing is carried out to ensure that the code runs satisfactorily.
Whilst this is going on a number of strange things are happening. The first thing that you will notice is that programmers are working in pairs, which to some people is extremely unusual but there is a very good reason for this! Because they are working together they are constantly able to check each other's code writing so errors can be corrected very quickly, and also both of them understand the way in which the programme is being written. At regular intervals members of the team will exchange places, which means that eventually every team member will understand everyone else's job and, not least of all, will understand the coding and what it is to achieve. In the meanwhile your representative will be keeping them completely up to date with any new requirements and will be reporting back on exactly how well the existing code that your company is already using is performing.
As each new important item of functionality has been written into the system which has been thoroughly tested it is released to you so that you can make use of it as soon as possible.
When the day finally dawns on the completed package, you know that should you need to have the system extended or altered in the future there is likely to be a number of people at the programming company who can do this for you, using the existing software which has been written with the express requirement of upgradability. The package will do exactly what you wanted it to do but probably little or nothing else; it is therefore lean and mean so not only have you not had to pay for useless functionality but also you have the advantage that the program itself is not slowed down by bloatware; and since it has been tested, tested and tested over and over again you can run it using all of its available functionality without annoying crashes, freezers or errors. Congratulations: you have just experienced Extreme Programming!
For more info try here