110 likes | 222 Views
Getting Started Introducing the Core XP Practices. Based on Extreme Software Engineering Daniel H. Steinberg & Daniel W. Palmer. A Spike Is A Quick Investigation. An estimate based on no data is worthless. When estimating the time for a kind of task that is new to you, spike the task .
E N D
Getting StartedIntroducing the Core XP Practices Based on Extreme Software Engineering Daniel H. Steinberg & Daniel W. Palmer
A Spike Is A Quick Investigation • An estimate based on no data is worthless. • When estimating the time for a kind of task that is new to you, spike the task. • Example If you are to do a Java RMI task, implement a Java RMI “Hello, world” program before estimating the task’s time.
Advice: Spike the XP Process Experiment with some core XP practices before starting a client’s project.
Practice: User Stories • A user story is a brief description of some application function. • Process • Client initiates a user story • Developers refine it via a Q&A process • Team determines tests for the function. • Developers estimate the story (I.e., the time to design, implement, & test it).
Practice: Estimates • Be self-aware as a developer • Publicly record your estimate. • Note the actual time. • Investigate what needs to be changed in your estimation process. • This self-awareness process improves your estimation skill dramatically.
Practice: Living with Set Priorities • Client prioritizes the user stories • Developers decompose stories into a poset of tasks • Developers estimate the tasks • Developers develop (in pairs) highest priority stories that can be done within time limit. • Estimates may change • Immediately communicate changes to team.
Practice: Pairing • Pair withall developers on your team during the XP spike. • Reserve judgment about pairing’s merits until you have paired with all other developers. • Self-awareness: What have you learned from the process of completing the task at hand? • Spread your knowledge: Change partners.
Practice: Test First • “Test first” is special case of general advice: Clearly understand a problem before attempting to solve it. • If you develop tests first, you know when you have completed the task. (to the extent that your tests are thorough) • Tests monitor the integrity of the system when code is added/modified Test enable change w/o worry. (to the extent that your tests are thorough)
Practice: Continuous Design Improvement Improve the code immediately, even in small ways. • Improve the name of variables, methods, & classes. • Decompose methods so the name clearly indicates what it does. • Never duplicate code. • Spot patterns (with experience)
Synergies • Refactoring is safe because tests protect you. • You learn patterns & other practices from pairing, yielding more • opportunities for refactoring • skill at estimating • Pairing makes it easier to do the right thing (e.g., test first).
Choosing an XP Spike • You don’t need to finish the spike. • Pick something fun or interesting. • The bowling scoring problem • Tetris or some other video game • Visualizing the Mandelbrot set • Family tree application • Medical history application • Spike a Java technology • Java RMI • JDBC