110 likes | 227 Vues
Dive into the core practices of Extreme Programming (XP) with insights from Daniel Steinberg and Daniel Palmer. This guide introduces essential XP techniques, such as spikes for effective task estimation, user stories for functional requirements, and continuous design improvement. Learn the value of pairing in development, prioritizing user stories, and understanding the importance of testing first. Explore practical advice to enhance your software development skills, improve estimation accuracy, and facilitate better collaboration within your team for success in client projects.
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