XP Explained - KeynesYouDigIt/Knowledge GitHub Wiki

What is XP?

XP includes:

  • A philosophy of software development
  • A body of practices
  • A set of principles for translating values into practices
  • A community that shares these values and many of the practices

You can feel good about giving your all whether or not it works. If you hold something back, that protects you, but it doesn't make you feel better about not being able to get a project to work.

"Mountain people" and "Forest people": A resource-starved tribe of lying, cheating backstabbers, and a resource-rich, cooperative, loving tribe.

How XP addresses risks:

  • Schedule slips: Short cycles make slips short too, and prioritization makes any slips the least important thing
  • Project cancelation: Make the smallest release that makes business sense, which minimizes what can go wrong and maximizes the value of the software
  • System goes sour: Tests keep the system stable and deployable, problems are not allowed to accumulate
  • Defect rate: Tests are done from the perspective of programmers and users
  • Business misunderstood: Business people are first-class members of the team
  • Business changes: XP shortens the release cycle, so there is less change during a single cycle and features that haven't been started can be substituted
  • False feature rich: Only the highest priority tasks are addressed
  • Staff turnover: Staff isn't asked to do impossible things, encourages human contact, and encourages increasing responsibility for team members over time

Quotes:

  • "Don't protect yourself from success by holding back. Do your best and then deal with the consequences. That's extreme."
  • "XP is my attempt to reconcile humanity and productivity in my own practice of software development and to share that reconciliation. I had begun to notice that the more humanely I treated myself and others, the more productive we all became."
  • "You can't control others' expectations. You can tell them what you know about the project so their expectations have a chance of matching reality."
  • "XP is asking to get some of your human needs met through software development"

Learning To Drive

When driving, you can't just set the car in a direction and forget about it. You need to make incremental adjustments as you steer. Stay aware, adapt, change.

Everything in software changes- the requirements, design, business, technology, team, team members. The problem isn't change, because that's going to happen. The problem is our inability to cope with change.

Customers drive the content of the system, the team drives the development process. The customer doesn't know exactly what should be done, just as you have to continually steer the project.

Values

  • Communication
  • Simplicity
  • Feedback
  • Courage
  • Respect
  • Others

Principles

  • Humanity
  • Economics
  • Mutual benefit
  • Self-similarity
  • Improvement
  • Diversity
  • Reflection
  • Flow
  • Opportunity
  • Redundancy
  • Failure
  • Quality
  • Baby steps
  • Accepted responsibility

Primary Practices

  • Sit together
  • Whole team
  • Informative workspace
  • Energized work
  • Pair programming
  • Stories
  • Weekly cycle
  • Quarterly cycle
  • Slack
  • Ten-minute build
  • Incremental design

Getting Started

Corollary Practices

  • Real customer involvement
  • Incremental deployment
  • Team continuity
  • Shrinking teams
  • Root-Cause Analysis
  • Shared code
  • Code and tests
  • Single codebase
  • Daily deployment
  • Negotiated scope contract
  • Pay-per-use

The Whole XP Team

  • Testers
  • Interaction designers
  • Architects
  • Project managers
  • Product managers
  • Executives
  • Technical writers
  • Users
  • Programmers
  • Human resources

The Theory of Constraints

Planning: Managing Scope

Testing: Early, Often, and Automated

Designing: The Value of Time

Scaling XP

  • Number of people
  • Investment
  • Size of organization
  • Time
  • Problem complexity
  • Solution complexity
  • Consequences of failure

Creation Story

Taylorism and Software

Toyota Production System

Applying XP

Purity

Offshore Development

The Timeless Way of Programming

Community and XP