<<

Overview

eXperiencing • Background eXtreme Programming • Why XP? • Values/Practices • Experiencing XP

Randall Bryant • Questions [email protected] 303-255-6079

Background Background Ctnd • Problems • AT&T/Bell Labs/Lucent for 19 years – Communication through documents, meetings, • Our Culture escalations – Process focused (waterfall), ISO certified – Process did not describe what we really did – Long term, up front planning and design – Could not respond to changing customer requests – Creating more process but not really improving – Control/Limit Change – Lot of intelligent, hard working people • Directive to “Revolutionize” organization – Read the “White” book in October 2000, began an • Received Quality/Process Improvement XP the next week Awards, ISO Auditor • Started our own company based on XP Values Why XP? Values Affect Change • Communication • Closer to my envisioned development model • Realized the “revolution” was cultural • Simplicity • Easy to advocate change • Feedback – Complete development model • Courage – People could relate and see value in some area Agile Manifesto values: – Passionate (good or bade) subject matter -Individuals and interactions over processes and tools • It was the Values, not really the Practices -Working over comprehensive documentation – Practices vary a lot across Agile methodologies -Customer collaboration over contract negotiation but the values remain the same -Responding to change over following a plan

Cultural Change Experiencing XP • XP Work Environment • Make essential plans without the ceremony • Planning • Embrace change • Design – Reduce the risk of changes • Test • Reduce inertia • Refactoring – “…today’s problem”, “…simplest thing” • Pair Programming • Real teamwork • Documentation – Effective communication • An XP Day – Break ownership boundaries and positions • Miscellaneous/Questions XP Work Environment Planning

• One “loud” room for a group of people • Short term planning on immediate needs • Everything happens in here does improve focus, commitment and time-to- – Meetings, development, arguments, your personal market life • XP Customer Role is a problem • Everyone is in here – Skill set, work load, buy-in, location or courage? • Story and task cards visible (physical entities) – Interesting and creative ways to fill role • Communication is non-stop and immediate • Experience: XP allows evolution of business plan but does not eliminate the need • Experience: Must have.

Design Design • Where’s the design? – Everywhere! – Original culture • Keep “Simple” in mind • Design is done up front before development • Use Metaphor to guide design decisions • Design is communicated through documents and reviews • Pair/Team design is superior • Design documentation is updated when it changes – right! – XP • Design-by-Test is very effective • Design is everywhere (metaphor, code, tests) – Helps keep it simple • Design is done throughout development – Creates feedback and environment for refactoring • Design is communicated in the project room (meetings, discussions, conversation) – Stopping place (avoid “gold-plating”) • Support document is generated when needed • Experience: Great! True OO design. True – Expectations vs Needs reusable code. Easy to change. – Design is ongoing, not a discrete activity Testing Refactoring • Team is responsible for quality (avoid • What were we thinking before we had development/test separation) automated tests? • Testing happens earlier • Basis/proof/ability to quickly and effectively – simultaneously with development change – Key for understanding what to develop • When to refactor? • Automation is critical but occasionally not – Somewhere between “always” to “only if there is a practical problem” • Incremental test and change concepts help • Testing pre-existing code can be difficult with learning and • Experience: Higher quality, clearer direction, • Experience: Critical skill, needs to evolve into faster feedback. a passion.

Pair Programming Documentation

• Pair programming is culture shock! • Document what you need when you need it • One of the most valuable parts of XP and the – Old process ~10 documents, XP ~3, used ~2 first practice abandoned • Value of documentation – Head off ownership issues quickly – Design documentation is always out of date – Paired efforts are more easily understood and maintainable – What would someone need to know to take over – Distribute knowledge (eliminate “truck” factor) this code? • Use pairing on lots of things – not just code – Collective ownership, pair programming, tests lead to self documenting code • Experience: We are faster, with higher quality. Actually a lot of fun! • Does anyone really read anything anymore? Miscellaneous An XP Day

• Simpler with rich, timely • Planning information – Short, stand up meeting to start • Takes time to learn how to create good – Any issues, what do we need to do, who needs help stories and good task breakdown • Development – Focus on useful function not infrastructure – Tasks taken and programming pairs formed – Tasks that can be completed in hours (end) – Write tests first, code until the tests pass • eliminates a lot of – Refactor if necessary – Deliver after ALL tests pass headaches – Get next task and new pair if needed • Sometimes change is expensive • Resolve issues in real time – Contact customer or taunt the last pair that designed it

Questions on XP/Practices/Others Almost the Conclusion

• The Planning Game • Collective Ownership • Actually the most disciplined “process” I have • Small Releases • Continuous ever followed (could be ISO Certified) Integration • Metaphor • The most fun we have ever had • 40 Hour Week • Simple design developing! • Testing • On-Site Customer • Refactoring • Coding Standards • Pair Programming Courage • Looked at and dealt with people issues related to XP (personality types for pairing, dynamics of project room, etc.) • Interpersonal relationships are important • Need courage to overcome fear, “bad” history, general personality dynamics • Some will leave (especially early), some will grow and some grow at a later time

“What part is mine?” “I’m more productive as an individual” “Never been so productive and had so much fun!” “I feel naked!” “Learning new things everyday” “How will I contribute, compare, be rated?” “Team result is better than what I could have done alone” “Real teamwork and values”