Scrum with XP
Introduction
Scrum and extreme programming (XP) are both Agile methodologies. We've heard controversy regarding the value of each, with people familiar with each tending to disparage the other. Yet we found these methodologies to be complementary in a recent project at a large energy company where we got to implement them jointly.
Scrum
Scrum is a product development methodology consisting of practices and rules to be used by management, customers, and project management to maximize the productivity and value of a development effort. Scrum takes the responsibility for development projects out of engineering and IT and puts them squarely back in the business. With Scrum, businesses own and manage projects rather than "tossing them over the wall" to IT and hoping for the best. Scrum reintroduces accountability for IT projects to the business, requiring the business to maximize the ROI, without excuses. A business uses Scrum to run development projects in a businesslike manner, paying particular attention to realizing the value of the investments as soon as possible.
Scrum doesn't have any engineering practices, wrapping and using those at the organization where it is implemented. When these engineering practices are weak, overall productivity is lessened.
XP
Extreme programming (XP) is an engineering methodology consisting of practices that ensure top-quality, focused code. XP begins with four values:
- Communication
- Feedback
- Simplicity
- Courage
It then builds up to a dozen practices, weaving them into a synergistic whole in which each one is reinforced by the others and is required for the whole to work. These values and their underlying practices and techniques are not divisible and individually selectable; they form a coherent, whole process. Teams that use XP practices are adhering to strong engineering disciplines. Like guilds, the teams that follow these practices generate good products.
XP doesn't have any management practices. XP tells management where it needs them, but offers few insights into maximizing value.