XP - alexdaube/My-Software-Engineering-Guide GitHub Wiki
Extreme Programming
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
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
User Stories
=> As "who", I want "something" for a "reason"
- Write tasks...
- Write Acceptance Test(tests cases) => Input, Tests, Output.