XP - alexdaube/My-Software-Engineering-Guide GitHub Wiki

Extreme Programming

Feedback loop

Values

  • Communication
  • Simplicity
  • Retroaction
  • Courage
  • Respect

Client's rights

  • Change your mind
  • See the advancement of the product at all time
  • Be informed of anything happening. Stop the development and keep the work at anytime.

Client's obligation

  • Trust developers with technical stuff
  • Analyse risk with user stories properly
  • Choose critical user stories
  • Write precise user stories
  • Work with the dev team as a member

Developers' rights

  • Evaluate time needed for user stories and revise it with changes
  • Leave the business decisions to the client
  • Produce quality and satisfy client's need
  • Productivity, fun, great atmosphere with reasonable schedule in the work place

Developers' obligation

  • Follow teams' standards
  • Develop only what is asked to keep simplicity and value
  • Constantly communicate with the client

Client's view

XP circle

The team

  • Sit Together in an open space
  • On-site customer
  • Informative and open workspace
  • Advantages => visible progress, agility, great communication

Customer Tests

  • User Stories
  • Customer Tests => Conceived by the client to verify progress
  • Advantages => Tangible and verifiable progress. Traceability and repeatability.

Planning Game

  • Goal and planning of delivery bases on developer's recommendations
  • Programmers only implement what is asked for this iteration
  • Advantages => Rapid feedback. Can direct team to success. Auto-organize teams.

Small Releases

  • System put to production immediately. Features are in production rapidly.
  • Advantages => More feedback. Incentive to quality.

Teams' view

Continuous Integration

  • Rapid integration of new code. All tests must pass.

Collective OwnerShip

  • Programmers can touch any part of the code at any time.

Metaphors

  • System is defined by a metaphor. Story describing the system

Coding standards

  • For code readability

Sustainable pace

  • 40 hours week, no extra time

Test-First Development

  • Unit testing before implementation of feature
  • Clients write functional tests for User stories

Pair Programming

  • 2 people on one screen, keyboard, mouse

Refactoring

  • Code transformation technic to augment the design

Simple Design

  • Just enough to implement what is needed. Not more. Push to later decisions that we don't have enough information about

###Development Cycle

Dev cycle

User Stories

=> As "who", I want "something" for a "reason"

  • Write tasks...
  • Write Acceptance Test(tests cases) => Input, Tests, Output.