Tuesday, January 25, 2011

Extreme Programming Installed, Chapters 1-3

Reference Information
Extreme Programming Installed, Chapters 1-3
Jeffries, et al
Addison-Wesley Professional, 2000

Summary
The first three chapters explained the desired relationship between customer, manager, and programmers in extreme programming. The most critical aspect of these relationships is that the customer, or its representative, should be on-site with the programmers to field questions and provide immediate feedback on each new release.

The customer should be involved in the planning process by selecting which features that they would like to be implemented, and in what order. These features are written out in the form of stories, explaining exactly how the customer wishes the product to work. The customer estimates the cost of each feature in time to implement and relates this to the customer, who can then decide which features he wants in the next release so that the business value of the program will increase the greatest. The programmer should refine his estimations based on past performances. This is what the book refers to as "the circle of life", and is critical to the extreme programming process.

To effectively implement this practice, the programming team must adopt certain ways of working. These include sharing the ownership of code with everyone on the team, writing code in pairs to ensure quality, using unit tests, using tests defined by the customer, and a continuous design paradigm to go with the small release cycle.

The manager's job is not to be involved with the design and implementation of the software itself, but to remove obstacles from the path of the programming team and to organize planning meetings. In addition, he should ensure that the customer's needs are being heard at the meetings, and also prevent outside influences from affecting the team and dispense with rewards or provide compensation to team members.

Opinion
The topics in the first three chapters seem to relate to a programming philosophy that I am already familiar with: Agile development. The system proposed here seems like it would help produce software more efficiently and with higher quality. My main concern is the idea of only designing the program for each iteration. This seems like you could end up with significant difficulties if the customer introduces a story that is even moderately different than what the program was designed for. Other than this, I believe this would be an effective system.


A picture symbolizing the customer attending the meetings

No comments:

Post a Comment