Quick Guide To Extreme Programming (XP) For Managers
In Brief
XP is a development methodology that aims to deliver a useful minimal system as early as possible and evolve it incrementally. The main techniques are: short customer lead iterations, a comprehensive suite of automated tests and design refactoring.
Short iterations delivering working code ensure feedback and closure, tests catch unexpected side effects and prove the system, and refactoring allows the software to evolve by cleaning up the design as new requirements are implemented. At all times the emphasis is to have strong communication between the development team and the customer and to produce quality working code that adds value to the business.
Why would you use XP?
- you cannot wait many months or years to see a return on your investment,
- you want your business to be agile and responsive to change,
- your development staff are complaining of lack of job satisfaction,
- your existing software process is very bureaucratic and causing a lot of frustration and delay,
- your team is delivering lots of documentation but very little tested working software,
- your last project failed to deliver on time or to budget using classical waterfall processes.
What kinds of projects are suited to XP?
- projects with teams up to 15 people,
- most types of problems except safety critical,
- where the requirements are uncertain or difficult to determine,
- when a quick solution is essential but more complex requirements can be evolved.
What parts of the software process are covered by XP?
- planning,
- requirements capture,
- software design,
- coding,
- unit testing,
- acceptance testing.
Why does XP work?
XP is an agile methodology which is designed to deliver high quality working code as quickly as possible. It achieves this by accepting the fact it is very difficult to deliver software in a big bang fashion, instead it delivers software incrementally. A typical XP project will consist of 2 to 3 week iterations leading to a production release every 3 to 4 months. Some projects will have much shorter iterations and releases, but normally not longer. The goal is to deliver as quickly as possible so that the customer can see a return on their investment and developers can get feedback.
XP is not unique in using short iterations. Other Rapid Application Development (RAD) methods use similar techniques such as Dynamic System Development Method (DSDM), Crystal or Scrum. However, short iterations are not enough because they can lead to poorly designed software that is difficult to change. Three other features ensure XP delivers useful quality software that can be maintained for many years,
- very close collaboration with developers and customers (or business analysts),
- comprehensive automated tests at unit and acceptance levels,
- a strong emphasis on good software design through refactoring.
Communication
XP does not place great emphasis on producing documents, rather it prefers to deliver tested software, but it still needs detailed requirements. As a consequence it needs a customer or business analyst to work closely with the team to clarify requirements, produce acceptance tests and validate test results. Unlike traditional methods that consider intermediate documentation as a deliverable product XP considers documentation as a means to an end.
Good communication channels are vital to an XP project. Ideally customers and developers should be sitting next to each other. Geographically dispersed XP teams do not work very well despite modern technology unless a lot of effort is made to ensure good communication.
Testing
XP does not devote much time to producing documentation. Instead it expends its effort developing automated tests. Customer acceptance tests in particular are replacements for detailed requirements. Why bother producing detailed requirements when a test will specify it more accurately thereby reducing work and making the most of scarce resources.
Developers are also required to test their software at the unit level. In fact a test first culture is often evident on XP projects where tests are written before the code.
The consequence of all these tests is higher quality software, considerably less effort spent on regression testing, and most significantly the ability to change the software more cheaply because unwanted side effects are quickly caught by a failed test.
Design
Good software design is a strong element in XP because poorly designed software is harder to change and will slow the project down. However, good design rarely comes from considering a problem for months on end. Most good designs have evolved through an iterative process of design, test, design some more, refactor, test etc. (refactor is a technical term of redesigning software to improve its quality). Without comprehensive automated tests evolutionary development becomes expensive.
Who are the players?
There are three major players in an XP project:-
- customers,
- developers
- and a coach.
Customers specify requirements, write acceptance tests and choose what goes into a release. Business analysts can represent the customer as long as they have a good understanding of the problem.
Developers estimate how long a requirement will take and write unit tests and code.
The coach is a bit like a project manager, he tracks the project, ensures the process is being followed, but relies on developers to provide estimates. This may seem like too much power is being given to developers, but as the developer only estimates over a short time period the risk is low.
Summing Up
XP relies on a set of practices to deliver software incrementally,
- that meets business needs,
- that has been proven to work by automated tests
- as quickly as possible.
How To Find Out More
Search for Extreme Programming in Amazon or Google.com and you will find a large body of information available in the form of books, papers and tools.
SMR can you help you by navigate through this information and successfully use XP by,
- examining your current practices and making recommendations for process improvement,
- making recommendations on tool support,
- providing XP training courses,
- providing coaching and mentoring on your XP projects