The cooperative game: An introduction to agile development techniques
1. Session 1 The cooperative game AgileDev Tour Duong Trong Tan Hanoi, December 2010 1 TurboBoost your development performance
2. Objectives Software Engineering trends What is agile development? The agile manifesto The diversity of adoptions Scrum XP TDD Crystal Kanban Agile mashup The cooperative game 2 TurboBoost your development performance
3. “Agile projects succeed when the team gets the spirit of agility.” – Ron Jeffries TurboBoost your development performance 3 AgileDev Basics Image courtesy to Pollyanna Pixton
4. TurboBoost your development performance 4 Continuous improvement Hyper productive Kaizen Agile Small teams Incremental Lean Changes Earned Value Based Iterative Rapid Adaptive
5. About Trends TurboBoost your development performance 5 Agile techniques were in use since the beginning. Agile techniques did not show competitive advantage in the 1970s / 1980s, but did during the 1990s and do now. Trial runs of current agile methodologies, 1993 - 1995 RAD Crystal XP Crystal Scrum Kanban In chaos, there are special kinds of controlled pattern => agile methods.
9. The Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan 9 TurboBoost your development performance That is, while there is value in the items on the right, we value the items on the left more. AgileAlliance.org
10. The Twelve Principles of Agile Software TurboBoost your development performance 10 Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity--the art of maximizing the amount of work not done--is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. AgileAlliance.org
11. AgileDev Plan-driven TurboBoost your development performance Low criticality Senior developers Objectives change very often Small number of developers Culture that thrives on chaos High criticality Junior developers Low objectives change Large number of developers Culture that demands order 11 Home ground comparison
12. The diversity of methods TurboBoost your development performance 12
14. Scrum TurboBoost your development performance 14 One of the most successful agile methods because of its hyper-productivity It is management – oriented Somewhat CMM Level 3 equivalence Widely used in various types of projects Google AdWorlds project 3M Universities RnD projects In VN: LogiGear, KPM, FSOFT, FAT, etc.
16. Scrum Roles ScrumMaster ProductOwner Scrum Team Other parties (all kinds of chicken) 16 TurboBoost your development performance
17. Scrum Team Team is cross-functional and consists of 5-9 people There are no set project roles within the team Team defines tasks and assignments Team is self-organizing and self-managing Maintains the Sprint Backlog Conducts the Sprint Review 17 TurboBoost your development performance
18. ScrumMaster Holds daily 15 minute team meeting (Daily Scrum) Assures every people related to the project follow the rules Removes obstacles Shields the team from external interference: “Keep Chickens away from Pigs” Maintains the Sprint Burndown Chart Conducts Sprint Retrospective at the end of a Sprint Is a facilitator, not a manager 18 TurboBoost your development performance
19. Product Owner (PO) Accountable for product success Defines all product features Responsible for prioritizing product features Maintains the Product Backlog Insures team working on highest valued features 19 TurboBoost your development performance
20. The Product Backlog List of all desired product features List can contain bugs, and non-functional items Product Owner responsible for prioritizing Items can be added by anyone at anytime Each item should have a business value assigned Maintained by the Product Owner 20 TurboBoost your development performance
21. A Sprint Time box: 2-4 weeks (why?) An iteration for building a piece of increment (potentially shippable) of the whole system It’s the working time, not planning or asking what to do. The team manages itself during a Sprint The team commits to Product Backlog during the Sprint planning meeting The Sprint Backlog is updated during a Sprint 21 TurboBoost your development performance
22. The Sprint Backlog Each item is prioritized and estimated 22 TurboBoost your development performance
25. What is impeding you?3. A Sprint (2-4 weeks) 4. Sprint Review Meeting 1. Sprint Planning Meeting 5. Sprint Retrospective Meeting TurboBoost your development performance
26. Sprint Planning Meeting Time box: 8 hours Product backlog prepared prior to meeting First Half Team selects items committing to complete Additional discussion of Product Backlog occurs during actual Sprint Second Half Occurs after first half done – PO available for questions Team solely responsible for deciding how to build Tasks created / assigned – Sprint Backlog produced 24 TurboBoost your development performance
27. Scrum Daily Meeting Held every day during a Sprint Timebox:15 minutes Team members report to each other not Scrum Master Asks 3 questions during meeting “What have you done since last daily scrum?” “What will you do before the next daily scrum?” “What obstacles are impeding your work?” Opportunity for team members to synchronize their work It helps removing burdens between members 25 TurboBoost your development performance
28. Sprint Review Time box: 4 hours Team presents “done” code to PO and stakeholders Functionality not “done” is not shown Feedback generated – Product Backlog maybe reprioritized ScrumMaster sets next Sprint Review 26 TurboBoost your development performance
29. Sprint Retrospective Time box: 3 hours Participants ScrumMaster Scrum Team. Product Owner is optional Questions What went well and what can be improved? ScurmMaster helps the team in discovery – not provide answers 27 TurboBoost your development performance
30. The Sprint Backlog A kind o f To-do list for a Sprint Created by the Scrum Team (can be originated by one member, responsibility belongs to another) Product Owner has defined as highest priority Used for synchronizing works between team members 28 TurboBoost your development performance
31. The Burn-down Chart Burndown Chart shows the Sprint trend, the performanceelocity of the team through Sprints 29 TurboBoost your development performance
32. Potentially Shippable Product Selected items are fully implemented, tested and ready for use Small but complete, “it will be bigger” Scrum Team needs to define what does “done” mean, in what aspects and contexts. “DONE” may be executable, “passed all tests”, “approved by senior engineers”, “reviewed by peers” or just nothing to do more with the item. 30 TurboBoost your development performance
33. Distributed Scrum Isolated Scrums - Teams are isolated across geographies. Distributed Scrum of Scrums –Scrum teams are isolated across geographies and integrated by a Scrum of Totally Integrated Scrums – Scrum teams are cross-functional with members distributed across geographies. Sutherland et al. 31 TurboBoost your development performance
34. Top Distributed Scrum Issues Difficult leveraging available resources, best practices are often deemed proprietary, are time consuming and difficult to maintain Difficulty synchronizing work between distributed sites Lack of effective communication mechanisms Conflicting behaviors, processes, and technologies Incompatible data formats, schemas, and standards Ensuring electronic transmission confidentiality and privacy Sutherland et al. 32 TurboBoost your development performance
35. From hacking code to a real process TurboBoost your development performance 33 eXtreme Programming
37. XP Values TurboBoost your development performance 35 Simplicity encourages starting with the simplest solution Communication favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback Feedback From the system, customer and from the team, to avoid optimism Courage design and code for today and not for tomorrow Respect respect for others as well as self-respect
39. XP Roles The Customer Sets project goals and makes business decisions The Developer Turn customer stories into working code The Tracker Keeps track of any metrics used by team The Coach Guides and mentors the team 37 TurboBoost your development performance
40. TurboBoost your development performance 38 Test Driven Development This is not a complete dev strategy. It is ‘embedded’ into methods. Tests created before coding This strategy focused on quality Derived version: Behaviors Driven Development
42. Crystal Clear Practices Frequent Delivery Reflective Improvement Osmotic Communication Personal Safety Focus Easy Access to Expert Users Automated Tests Configuration Management Frequent Integration 40 TurboBoost your development performance
43. Crystal Clear “The team can reduce intermediate work products as it produces running code more frequently, as it uses richer communication channels between people.” - Alistair Cockburn 41 TurboBoost your development performance
44. Crystal Clear Every product is slightly different and evolves over time, so the methodology, the set of conventions the team adopts, must be tuned and evolve. - Alistair Cockburn 42 TurboBoost your development performance
45. Crystal Clear Roles Sponsor Allocates money for the project Expert User Lead Designer Lead Technical person, mentors less experienced team members Designer-Programmer Each person designs and programs 43 TurboBoost your development performance
46. Kanban TurboBoost your development performance 44 Kanban literally means “visual card,” “signboard,” or “billboard.” Toyota originally used Kanban cards to limit the amount of inventory tied up in “Work In Progress” on a manufacturing floor … Step 1 Done Step 2 Step n In Process In Process In Process Queue Queue Queue … Work Items
54. TurboBoost your development performance 48 Using a Kanban approach in software drops time-boxed iterations in favor of focusing on continuous flow.
55. Kanban queue TurboBoost your development performance 49 … Done Step 2 Step n Work Items Step 1 In Process In Process In Process Queue Queue Queue …
56. Kanban queues (cont’d) TurboBoost your development performance 50 Large enough to keep the team busy Small enough to avoid premature prioritisation Ideally should be FIFO
57. Kanban - Work In Progress TurboBoost your development performance 51 Reduce multi-tasking Maximize throughput Enhances teamwork
58. The multitasking issues TurboBoost your development performance 52 Facts: 20% time lost to context switching per ‘task Sequential yields results sooner A A A B B B C C C A B C Chart courtesy to Yahoo!
59. Throughput TurboBoost your development performance 53 Organizational overhead goes up as work in progress increases Total Cycle Time = Number of Things in Process Average Completion Rate to improve cycle time Improve Average Completion Rate Reduce Number of Things in Process
63. Agile Mashup TurboBoost your development performance 58 It is so-called Yet Another Agile Development Method (YAAM) It follows the Agile Manifesto and keeps the sprit of agility It utilizes practices from several methods, for example: Use sprint backlog and user stories with TDD and standup meeting with a kanban liked dashboard. Use stand up meeting in daily Scrum Use Burn down chart in Kanban
65. Face-to-face communication is better Paper 2 people at whiteboard 2 people on phone Communication Effectiveness Videotape 2 people on email Richness of communication channel Slide courtesy to Cockburn. A. 60 TurboBoost your development performance
66. References and Further Readings TurboBoost your development performance 61 Agile Software Development: The Cooperative Game, 2ndEdn. By Alistair Cockburn. Scrum Guide 2010 by Ken Schwaber and Jeff Sutherland Agile Project Management with Scrum by Ken Schwaber Agile Java Crafting Code with Test-Driven Development By Jeff Langr Test-Driven Development in Microsoft .NET by James W. Newkirk and Alexei A. Vorontsov Extreme Programming Explained by Kent Beck XP introduction, http://www.extremeprogramming.org/ http://xprogramming.com/ http://www.agilealliance.org/ Kanban Oversimplified http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html
Editor's Notes
A research and reflection of SomeBody:We are living in chaos: eco crisis, tech boom, changes …
How to create a software from scratch?
Parties:UsersHas problems to be solvedUsually disorganized, chaotic, groupCustomersProvides requirements and validationShould speak with “one voice”Developers Actually builds the stuff Lots of different roles hereBusiness Owner Manages resources and money Often ignored in Development Process…Tech concernsRequirementsDetermine What the Software has to do…Challenge: Satisfy the UsersProduction Actually Build the Software Challenge: Deliver Quality ProductMaintenance Modify Software to satisfy new requirements Challenge: Maintain Quality
For reference and printing if needed, not for presenting
cross-functional = there is no strict role for individualsCode are collectively developed
The importance of planning, not plan documentThe importance of responsibility -> select itemsThe importance of prioritizing -> reduce risksMake things clear
Image , point to position
Architectural spike():very simple program to explore potential solutions, Most spikes are not good enough to keepMetaphor(an du): common vision of how the program works