What Is Extreme Programming
Extreme Programming is a software development methodology that was created to address the frequent failures of software projects around the globe. Some of the reasons attributed for such failures were worst case scenario, belly up, and wash out. In the case of worst case scenarios, the projects were not being completed at all; in the case of belly up, while the budgets had overshot, the project failed to accomplish the goals. Finally, in the case of costly wash out, as the very term implies, the project got washed out after great costs had been incurred.
Some research studies such as the Standish CHAOS Report found that the longer the duration of a project, the more functional points it tries to tackle, which ultimately leads to its failure and demise. By applying shorter duration to the project and assigning smaller teams, this study further found that the failures could be lowered significantly.
Software developers found a way out to prevent the recurrence of this problem, which came to be known as Extreme Programming; it can then be defined as a methodology that applies principles of object-oriented programming. Object-oriented programming in simple terms, is a systems approach applied to the design of a software and works on the principles of communication, simplicity, feedback and courage.
The communication is created among the programmers and between the team members and customers at large. The customers play a vital role by selecting valuable features, designs, delivering system increments at an early stage, and testing the system on a continual basis throughout development. Communication between the programmers within the team takes place by working in closely-knit teams by applying Time Division Duplexing (TDD) programming in pairs; sharing all the source code.
The feedback from the customers is considered as a valuable component for the team throughout the development and it is through such feedback, the systems requirements are improved upon again and again until it satisfies the real requirements of the customers.
Simplicity is achieved by responding to unanticipated requirements by applying the principles of object oriented design. By this, it is implied that no scope would be given for the development of any unhealthy dependencies between components and it is achieved by continuously refactoring the designing. In other words, simplicity is achieved by without being rigid in accommodating arbitrary changes at any point within the life cycle of the project.
Courage is displayed in arriving at a balance between aiming to win and at the same time not over-stretching the objectives of the project. Accomplishing design ideas is infinite in nature, and at some stage, the team should have the courage to say enough is enough and leave the rest to the future to unfurl for itself.
Extreme Project Management
In a larger sense, Extreme Programming can be considered to be an integral part of Extreme Project Management. Extreme Project Management could be defined as the art and science that in a macro sense, facilitates the flow of thoughts, emotions, and other processes in a way that brings out valuable outcomes under complex and unpredictable environments. When applied at a micro level pertaining to an XP project, it enables an XP team to come out with robust software that contains outstanding features.
_Image Credit: XP Loop - https://commons.wikimedia.org/wiki/File:Xp-loop.jpg_