Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Software projects can be managed in terms of four variables (XPPG, p3):

  • time
  • scope
  • resources
  • quality

Principle roles of people involved in a software development project:

  • Customer
  • Developer
  • Manager
    *?

We need to define roles we believe to be important and how each aspect of an Agile or XP process impacts each player (see bullets on Feedback below)

"Agree as a team - including the customer - on an acceptable level of quality. Agree to consider that time and resources are fixed. The only remaining question is that of scope. What will be delivered? When will it be delivered? The customer will set priorities for individual features. You will work on them in turn. The software will always be kept in a releasable state." XPPG, p6

Objective is to keep the level of quality constant.

Learn to estimate the amount of work you can actually do. Assume the amount will remain constant. Adjust scope to fit the project to the amount of work your team can accomplish.

Perfect is the enemy of done. Aim for a solution that is good enoughFrequently and healthy communication among members of the team are essential.

Fundamental assumption of XP: Explosing Exposing the tradeoffs of changes leads to fewer surprises and smoother development.

Principle roles of people involved in a software development project:

  • Customer
  • Developer
  • Manager

Define Practices

  • Coding
  • Developer
  • Business

Benefits of XP to:

  • Customer
  • Developer
  • Manager

Feedback is fundamental to every XP practice. (XPPG, pp. 8-10.

  • "The sooner you can get feedback, the more time you have to react to it."
  • "It is only through actual work that you can understand your real obstacles."
  • "For the customer, seeing a feature implemented leads to a better understanding of the software and how it works."
  • "Feedback from testing helps you to be confident about making changes. Whether adding a new feature or improving the design of the code, knowing that a change in the last 10 minutes (or even 10 seconds) has broken a test reduces the amount of debugging detective work to manageable chunks."
  • "Feedback from frequent releases gives the customer confidence in the value of the project."
  • "The only way to recover from a mistake is to admit to it and to fix it."

Want development to be a process of refinement. Want to get to a point where this is true quickly.

Coding Practices:

  • Code and design simply. Goal: produce software that's easy to change
  • Refactor mercilously. After making a test pass, look for ways to improve the way your code works. After finishing a task, do a little house cleaning. Eliminate repetition. Break long methods and functions into smaller ones. Clarify variable and method names.
  • Develop coding conventions (such as we've discussed)
  • Develop a common vocabulary (for the project, for elements of the code, etc.)

Developer Practices:

  • Adopt test-driven development
  • Practice pair programming (SGB: not sure this is doable)
  • Adopt collective code ownership. The entire code base belongs to the whole team. For example, anyone is permitted to change any part of the code at any time.
  • Integrate continually

Business Practices:

  • Add a customer to the team.
  • Play the planning game.

XP Events:

  • Stories: The customer presents desired features as story cards.
  • Task cards: Developers discuss each feature and generate one task card for each step required to implement the story.
  • Estimates/schedules: Developers estimate how much time each task will take and schedule each task within an iteration.
  • Iterate
  • Release

Need to spell out the benefits of XP to:

  • Customer
  • Developer
  • Manager