Extreme Programming (XP) places importance on the core values of communication, feedback, simplicity, respect and courage.
Communication
“Everyone is part of the team and we communicate face to face daily. We will work together on everything from requirements to code. We will create the best solution to our problem that we can together“. Don Wells (http://www.extremeprogramming.org/values.html).
At the heart of XP is communication. Regular, transparent, communication binds a successful XP project delivery team. Communication creates a “sense of team” and facilitates collaboration and consensus. A team that talks together is a team that is on the same page, with the same objectives and focus. XP facilitates successful delivery (of requirements) through direct and continuous communication between the customer and development team. It positions the customer in the delivery team, thus amplifying strength and occurrence of communication between the customer and developers. As discussions/collaboration takes place on a regular basis, the developer and the customer work together to (jointly) understand and deliver the project requirements.
This close communication and collaboration enhances flexibility and helps the XP team respond to change. Indeed, the strong communication assists (and is assisted by) short/regular feedback loops… every iteration, every week, every day, and even more frequently… allowing the customer to see the work as it progresses, and discuss with the developer (therefore giving feedback) which triggers small and frequent adjustments and ultimately, more precise and accurate implementations.
Strong communication also facilitates problem solving, either through the effective transfer of knowledge from one team member to another, or collaboration (for instance team members working together to brainstorm solutions to a problem).
Feedback
“Though planning ahead can avoid some mistakes, it’s only through actual work that you can understand your real obstacles“. (Extreme Programming Pocket Guide: Team-Based Software Development (p. 8). O’Reilly Media).
Pretty much every XP practice is designed to facilitate feedback.
For instance, XP focuses on constantly reviewing the situation and responding to it by providing a foundation for gaining rapid, frequent feedback, particularly from very short delivery cycles. By breaking the development down into small pieces of work (c. one week’s worth of effort) XP ensures that ideas are developed and checked, and that failures are identified, in a matter of days and weeks rather than months (or maybe even years). Plans can be tweaked (if problems are identified) or improved (as the team learns more). Developments can also be scrapped, before too much investment takes place, if deemed not as expected.
By having a customer in the team, XP looks to ensure that stories are accurately understood by developers. The customer writes the stories and then directly discusses them with the developers. A question being raised by a developer, and answered by the customer, is a feedback loop. Therefore XP faciliates feedback loops (developer/customer conversations) that over minutes and hours, take place within weekly feedback loops (weekly cycles).
Simplicity
“What is the simplest thing that could possibly work?” Kent Beck.
Simplicity is about building only what really needs to be built. Keep things simple and only develop what needs to be developed. Barely sufficient is still sufficient.
Predicting the future is difficult and costly, therefore XP suggests teams should only solve today’s problems today, and consider tomorrow’s problems tomorrow. XP encourages simplicity in the immediate by facilitating regular feedback; meaning that tomorrow’s problems will be considered soon enough.