- Risk Management: Extreme programming establishes the fact that smaller projects have a higher success rate. It breaks a big project into multiple small projects so that each release of the software contains only a subset of the required functionality. The final project deliverable is going to be the incremental production of small projects. Each release offers stakeholder to test the functionality so that high quality feedback is obtained, improving the quality of the software.
The targeted time between two releases are 6 to 8 weeks. If there is any serious issues in the early releases, there is still budget and schedule available to address those issues. Another important aspect if a project is canceled in the halfway. In this case, a team that has produced several incremental releases potentially have delivered something that will return value to the organization despite the project is not complete. Further, the risk of an important technical resource is offset by collective ownership of the project. - Integration Management: The scope of continuous integration requires that the work of software developers be integrated on a daily basis. It allows the team to identify any issue in the early stage. Otherwise, there is lot of rework required in case of any issue that is detected at the final stage of integration.
- Scope and Time Management: In traditional programming, the standard practice is to produce a project schedule based upon different activities like Analysis, design, Development and Testing. But, Extreme Programming focuses on Work Breakdown Structure and its constituent Work Packages. That would help a team improve their planning.
- Planning: In Extreme programming, user functionality is noted in a work package. The work package describes each project participant what the user wants in terms of functionality. The work package is used further to figure out estimates, build schedules, authorize work, conduct testing, and report status.
At the beginning of each iteration the developers estimate each work package as a team. Estimated work packages are then grouped into releases of useful functionality. Each release is then further broken down for two weeks development phase.
Once the project schedule is finalized, the next two-week development iteration begins. The developers discuss how to break the work package into smaller task or activities. The team members distribute the tasks among themselves and begin development. - Quality Management: Extreme programming emphasizes on simple design, simple code and flexible module as per the requirement of work package. If there is addition or modification of functionality, the design is reworked and modified in line with the most recently scheduled features.
Extreme programming do away with the status reports and weekly status meetings. Instead, daily stand up meeting is conducted to discuss the progress and issues.
Another beauty of Extreme Programming is pair programming. Having two programmers working together during coding stage offers several advantages. It proves collective ownership in a manner that code reviews by your peers is not going to happen.
During each incremental coding step, 100 % quality test has to be passed by means of automated test. Each and every function must have a functional specification captured in the form of an automated test suite. Automated test is a part of design phase and is written before the coding phase.
The key requirement to this practice is that the developers need easy access to someone who is capable and willing to make decisions when questions arise. The ideal situation is that there has to be a member of the user community who can be called on-site customer. If the user requirement changes as per the onsite customer, the new functionality needs to be added in work package.
Extreme Programming is the new direction of project management where software developers collaborate with fellow team members to solve problem quickly and effectively. Hence, in other word, Project Management has an important role to play in extreme Programming. It establishes the fact that the role of the project manager is not redundant. On the contrary, he has an important role to play, although, the approach is completely different than traditional project Management approach.