Slide 1

Slide 1 text

High Quality Software Development with Agile & Scrum @ March 2012 HIGH QUALITY SOFTWARE HIGH QUALITY SOFTWARE DEVELOPMENT DEVELOPMENT WITH AGILE & SCRUM WITH AGILE & SCRUM WITH PRACTICAL WITH PRACTICAL TIPS AND TRICKS TIPS AND TRICKS LEMİ ORHAN ERGİN LEMİ ORHAN ERGİN S E N I O R S O F T W A R E E N G I N E E R S E N I O R S O F T W A R E E N G I N E E R G I T T I G I D I Y O R / E B A Y G I T T I G I D I Y O R / E B A Y

Slide 2

Slide 2 text

High Quality Software Development with Agile & Scrum @ March 2012 About the author Lemi Orhan Ergin Senior Software Engineer GittiGidiyor / eBay Projects involved: E-Commence Site For Mould Industry (e-Tool) - BYM Legacy Product Information Management System (SPICE) - Sony Brand-New Product Information Management System (SPIDER) - Sony Mebs Taburu Yönetim Sistemi (MEBSİS) - Turkish Air Forces Marketing sites for all European Countries (ODW) - Sony Web Experience Project / Common Toolbar Project (WEP) - Sony Core Backend Services & Components Project (Ox, Commons) - Sony Product Data Delivery Engine / Hub & Client (Sparrow, Octopus) - Sony Content Delivery and Aggregation Services (Xula) - Sony Education: B.Sc. Marmara University, Computer Science Engineering, 1997 – 2002 M.Sc. Marmara University, Computer Science Engineering, 2002 – 2005

Slide 3

Slide 3 text

High Quality Software Development with Agile & Scrum @ March 2012 This presentation is based on The author's experience in:  Certified Scrum Master since 2009 (trained by Jim Coplien)  Played scrum master role for more than 1 year  Taking lead on development teams, including Scrum teams  Participated in Scrum teams since 2008 (for more than 50 sprints) Q&A session with Mitch Lacey on Oct 12th, 2010 CSM training with Jim Coplien on Jan 31st, 2009

Slide 4

Slide 4 text

High Quality Software Development with Agile & Scrum @ March 2012 Caution There is no one true method of software development Agile is not a religion There's no scientific way to prove that Agile is any better There is no silver bullet We are not resources, we are humans. Therefore we love doing our job by following human-centric methodologies, like Agile

Slide 5

Slide 5 text

High Quality Software Development with Agile & Scrum @ March 2012 Warning Be ready to change your culture Be ready for more communication with your teammates Be ready to observe your environment and improve Be ready to learn how big companies develop software Be ready for tons of new questions to ask The Boy Scouts have a rule: "Always leave the campground cleaner than you found it."

Slide 6

Slide 6 text

High Quality Software Development with Agile & Scrum @ March 2012 Key Concepts We Will Cover ● Module 1. Born to fail ● Why projects are failing ● Waterfall & traditional software development ● Module 2. Agile ● Module 3. Scrum ● Module 4. Writing high quality software with Agile ● XP ● How Google Write Software ● Module 5. Do's and dont's ● How Scrum might fail ● Myths and realities ● Module 6. How to kick off Scrum

Slide 7

Slide 7 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 1. Born to fail http://chan4chan.com/archive/87929/Windows_-_A_fatal_exception_0E_has_occurred

Slide 8

Slide 8 text

High Quality Software Development with Agile & Scrum @ March 2012 Projects are failing! Gardner Institute ● 74% failing ● 51% of it exceeds budget Oxford University (Saur & Cuthbertson, 2003) ● 16% successful ● 74% challenged ● 10% abandoned Standish Group If building engineers built buildings with the same care as software engineers build systems, the first woodpecker to come along would be the end of civilization as we know it. “Top 10 Reasons Why Systems Projects Fail”, Dr. Paul Dorsey Tata Consultancy 2007 ● 62% failed to meet their schedules ● 49% suffered from budget overruns ● 47% had higher maintenance costs ● 41% failed to deliver the expected business value and ROI ● 33% file to perform against expectations

Slide 9

Slide 9 text

High Quality Software Development with Agile & Scrum @ March 2012 Project cancelled Size of project Early On-Time Delayed Cancelled Sum 1 function point 14.68% 83.16% 1.92% 0.25% 100.00% 10 function points 11.08% 81.25% 5.67% 2.00% 100.00% 100 function points 6.06% 74.77% 11.83% 7.33% 100.00% 1,000 function points 1.24% 60.76% 17.67% 20.33% 100.00% 10,000 function points 0.14% 28.00% 23.83% 48.00% 100.00% 100,000 function points 0.00% 13.67% 21.33% 65.00% 100.00% Average 5.53% 56.94% 13.71% 23.82% 100.00% Table 1: Percentage of projects early, on-time, late, canceled (from Patterns of Software Systems Failure and Success, by Capers Jones)

Slide 10

Slide 10 text

High Quality Software Development with Agile & Scrum @ March 2012 Annual cost to US economy of poor quality software: $60B Equals to US millitary spending in Iraq and Afghanistan wars Typical industrial / commercial software development: 6-30 faults delivered / 1000 lines of software (1M lines: 6000-30,000 faults on delivery) Failing costs! http://www.huffingtonpost.com/2011/08/30/military-spending-waste_n_942723.html US NIST Report 7007.011, May 2002. Pfleeger& Hatton, IEEE Computer, pp33-42, February 1997.

Slide 11

Slide 11 text

High Quality Software Development with Agile & Scrum @ March 2012 The Current State of the Software Industry Ever higher complexity, continuous change, super fast markets Large Scale systems are now the norm Low qualified labour is not the answer for creating high-value products The software industry needs Technical Leaders, and these will not just pop up in an ad-hoc way Projects live and die because of Technology, People and Processes; universities typically only teach the first. Software projects are more than developing software. It has tens of steps, from getting requirements to give official support.

Slide 12

Slide 12 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Systems Projects Fail ● Lack of User Involvement ● Lack of Transparency ● Long or Unrealistic Time Scales ● Poor or No Requirements ● Bad Scope Management ● Poor Development Quality ● Poor Testing & Quality Assurance ● Inaduequate Development Methodology ● Poor Technical Knowledge and Experience 7th November 1940. Tacoma Narrows suspension bridge, in Puget Sound, Washington http://www.answers.com/topic/galloping-gertie-large-image#ixzz1q2uRmnLK

Slide 13

Slide 13 text

High Quality Software Development with Agile & Scrum @ March 2012 Why software projects are failing? How We Develop Software

Slide 14

Slide 14 text

High Quality Software Development with Agile & Scrum @ March 2012 The Horizon of Predictability

Slide 15

Slide 15 text

High Quality Software Development with Agile & Scrum @ March 2012 The Ghost of Uncertainty Uncertainty is part of every innovative and creative development process

Slide 16

Slide 16 text

High Quality Software Development with Agile & Scrum @ March 2012 Waterfall Aproach

Slide 17

Slide 17 text

High Quality Software Development with Agile & Scrum @ March 2012 Features of a Waterfall Model  A waterfall model is easy to follow.  It can be implemented for any size project.  Every stage has to be done separately at the right time so you cannot jump stages.  Documentation is produced at every stage of a waterfall model allowing people to understand what has been done.  Testing is done at every stage.

Slide 18

Slide 18 text

High Quality Software Development with Agile & Scrum @ March 2012 Assumptions of Waterfall Model  A waterfall model helps find problems earlier on which can cost a business less than if it was found later on.  Requirements will be set and these wouldn't be changed.  As everything is documented a new team member can easily understand what's to be done.  Implementers have to follow the design accurately

Slide 19

Slide 19 text

High Quality Software Development with Agile & Scrum @ March 2012 Realities of Waterfall Model  If requirements may change, the Waterfall model cannot work.  It is impossible to make one stage of the projects life cycle perfect.  Difficult to estimate time and cost for each stage of the development process.  Constant testing of the design is needed. http://www.vvork.com/?p=4872 DON'T DO IT

Slide 20

Slide 20 text

High Quality Software Development with Agile & Scrum @ March 2012 Original Paper of Waterfall Model MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS Dr. Winston W. Royce, 1970 The implementation is risky and invites failure

Slide 21

Slide 21 text

High Quality Software Development with Agile & Scrum @ March 2012 Original Adviced Waterfall Model In my experience, however, the simpler method has never worked on large software development efforts and the costs to recover far exceeded those required to finance the five-step process listed.

Slide 22

Slide 22 text

High Quality Software Development with Agile & Scrum @ March 2012 Assumptions Traditional ● Cusyomer knows what he wants ● Engineer knows how to build it ● Nothing changes along the way Traditional ● Customer knows what he wants ● Engineer knows how to build it ● Nothing changes along the way Agile ● Customer discovers what he wants ● Engineer discovers how to build it ● Things change along the way The Agile Paradigm emraces change, unpredictability and unforseen complexity as inescapable constants in all product development

Slide 23

Slide 23 text

High Quality Software Development with Agile & Scrum @ March 2012 Response to Unpredictability Change Tolerance

Slide 24

Slide 24 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 2. Agile

Slide 25

Slide 25 text

High Quality Software Development with Agile & Scrum @ March 2012 The Agile Manifesto Process and tools Process and tools Individuals and interactions Individuals and interactions over Following a plan Following a plan Responding to change Responding to change over Source: www.agilemanifesto.org Comprehensive documentation Comprehensive documentation Working software Working software over Contract negotiation Contract negotiation Customer collaboration Customer collaboration over

Slide 26

Slide 26 text

High Quality Software Development with Agile & Scrum @ March 2012 Agile Principles - I ● 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.

Slide 27

Slide 27 text

High Quality Software Development with Agile & Scrum @ March 2012 Agile Principles - II ● 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.

Slide 28

Slide 28 text

High Quality Software Development with Agile & Scrum @ March 2012 People Oriented Agile methods are people-oriented rather then process-oriented Declaration of interdependence Unleash creativity and innovation by recognizing that individuals are the ultimate source of value, and creating an environment where they can make a difference. http://pmdoi.org/ ©2005 David Anderson, Sanjiv Augustine, Christopher Avery, Alistair Cockburn, Mike Cohn, Doug DeCarlo, Donna Fitzgerald, Jim Highsmith, Ole Jepsen, Lowell Lindstrom, Todd Little, Kent McDonald, Pollyanna Pixton, Preston Smith and Robert Wysocki.

Slide 29

Slide 29 text

High Quality Software Development with Agile & Scrum @ March 2012 The Agile Practices Familiy ● Extreme Programming (XP) ● Crystal ● Dynamic Systems Development Method (DSDM) ● Test Driven Development (TDD) ● Feature Driven Development (FDD) ● Essential Unified Process ● Scrum ● Kanban ● Lean

Slide 30

Slide 30 text

High Quality Software Development with Agile & Scrum @ March 2012 Time-boxed Activities Task are broken down into small increments (2-4 weeks), in which the team works through a full development lifecycle ● Minimizes the overall project risk • Planning is easier with frequent releases • Allows project to adapt to changes quickly

Slide 31

Slide 31 text

High Quality Software Development with Agile & Scrum @ March 2012 Empowered Teams Agile Teams are small (7 ± 2), Cross-functional & Self-Organizing

Slide 32

Slide 32 text

High Quality Software Development with Agile & Scrum @ March 2012 Collaboration Agile Working Culture

Slide 33

Slide 33 text

High Quality Software Development with Agile & Scrum @ March 2012 Focus on End-User and Customer We tend to build the wrong things Source: Standish Group Study Report

Slide 34

Slide 34 text

High Quality Software Development with Agile & Scrum @ March 2012 Customer in The Loop Agile teams contain (or have direct access to) a customer representative in order to optimized ROI

Slide 35

Slide 35 text

High Quality Software Development with Agile & Scrum @ March 2012 Communication Temperature Increasing communication temperature is an important goal of the Agile approach

Slide 36

Slide 36 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Agile?

Slide 37

Slide 37 text

High Quality Software Development with Agile & Scrum @ March 2012 Agile Software Development Agile is an iterative and adaptive approach to software development, performed in a highly collaborative manner by self- organizing teams, with just enough ceremony that produces high quality software in a cost effective and timely manner, which meets the changing needs of its stakeholders.

Slide 38

Slide 38 text

High Quality Software Development with Agile & Scrum @ March 2012 Software Craftsmanship is an DISCIPLINE in software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over code quality. Software Craftsmanship http://parlezuml.com/softwarecraftsmanship/

Slide 39

Slide 39 text

High Quality Software Development with Agile & Scrum @ March 2012 http://manifesto.softwarecraftsmanship.org Software Craftsmanship Manifesto

Slide 40

Slide 40 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 3. Scrum

Slide 41

Slide 41 text

High Quality Software Development with Agile & Scrum @ March 2012 •Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest time. •It allows us to rapidly and repeatedly inspect actual working software (every two weeks to one month). •The business sets the priorities. Teams self-organize to determine the best way to deliver the highest priority features. •Every two weeks to a month anyone can see real working software and decide to release it as is or continue to enhance it for another sprint. Scrum in 100 words

Slide 42

Slide 42 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum origins • Jeff Sutherland • Initial scrums at Easel Corp in 1993 • IDX and 500+ people doing Scrum • Ken Schwaber • ADM • Scrum presented at OOPSLA 96 with Sutherland • Author of three books on Scrum • Mike Beedle • Scrum patterns in PLOPD4 • Ken Schwaber and Mike Cohn • Co-founded Scrum Alliance in 2002, initially within the Agile Alliance

Slide 43

Slide 43 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum has been used by: •Microsoft •Yahoo •Google •Electronic Arts •Lockheed Martin •Philips •Siemens •Nokia •IBM •Capital One •BBC •Intuit •Nielsen Media •First American Real Estate •BMC Software •Ipswitch •John Deere •Lexis Nexis •Sabre •Salesforce.com •Time Warner •Turner Broadcasting •Oce

Slide 44

Slide 44 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum has been used for: • Commercial software • In-house development • Contract development • Fixed-price projects • Financial applications • ISO 9001-certified applications • Embedded systems • 24x7 systems with 99.999% uptime requirements • the Joint Strike Fighter •Video game development •FDA-approved, life-critical systems •Satellite-control software •Websites •Handheld software •Mobile phones •Network switching applications •ISV applications •Some of the largest applications in use

Slide 45

Slide 45 text

High Quality Software Development with Agile & Scrum @ March 2012 Characteristics • Self-organizing teams • Product progresses in a series of month-long “sprints” • Requirements are captured as items in a list of “product backlog” • No specific engineering practices prescribed • Uses generative rules to create an agile environment for delivering projects • One of the “agile processes”

Slide 46

Slide 46 text

High Quality Software Development with Agile & Scrum @ March 2012 Project noise level Source: Strategic Management and Organizational Dynamics by Ralph Stacey in Agile Software Development with Scrum by Ken Schwaber and Mike Beedle.

Slide 47

Slide 47 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum in a Nutshell

Slide 48

Slide 48 text

High Quality Software Development with Agile & Scrum @ March 2012 Team Commitment What the team commits to, and what the product owner agrees to during sprint planning should be delivered!

Slide 49

Slide 49 text

High Quality Software Development with Agile & Scrum @ March 2012 Sequential vs. overlapping development Source: “The New New Product Development Game” by Takeuchi and Nonaka. Harvard Business Review, January 1986. Rather than doing all of one thing at a time... ...Scrum teams do a little of everything all the time Requirements Design Code Test

Slide 50

Slide 50 text

High Quality Software Development with Agile & Scrum @ March 2012 No changes during a sprint •Plan sprint durations around how long you can commit to keeping change out of the sprint Change

Slide 51

Slide 51 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum framework •Product owner •ScrumMaster •Team Roles •Sprint planning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies •Product backlog •Sprint backlog •Burndown charts Artifacts

Slide 52

Slide 52 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum framework •Sprint planning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies •Product backlog •Sprint backlog •Burndown charts Artifacts •Product owner •ScrumMaster •Team Roles

Slide 53

Slide 53 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum Roles Pig Roles Product Owner Team Scrum Master Chicken Roles Users Customer & Vendors Managers

Slide 54

Slide 54 text

High Quality Software Development with Agile & Scrum @ March 2012 Product owner • Define the features of the product • Decide on release date and content • Be responsible for the profitability of the product (ROI) • Prioritize features according to market value • Adjust features and priority every iteration, as needed • Accept or reject work results

Slide 55

Slide 55 text

High Quality Software Development with Agile & Scrum @ March 2012 The Scrum Master • Represents management to the project • Responsible for enacting Scrum values and practices • Removes impediments • Ensure that the team is fully functional and productive • Enable close cooperation across all roles and functions • Shield the team from external interferences

Slide 56

Slide 56 text

High Quality Software Development with Agile & Scrum @ March 2012 The Team • Typically 5-9 people • Cross-functional: • Programmers, testers, user experience designers, etc. • Members should be full-time • May be exceptions (e.g., database administrator) • Teams are self-organizing • Ideally, no titles but rarely a possibility • Membership should change only between sprints

Slide 57

Slide 57 text

High Quality Software Development with Agile & Scrum @ March 2012 •Product owner •ScrumMaster •Team Roles Scrum framework •Product backlog •Sprint backlog •Burndown charts Artifacts •Sprint planning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies

Slide 58

Slide 58 text

High Quality Software Development with Agile & Scrum @ March 2012 Sprint planning meeting Sprint prioritization • Analyze and evaluate product backlog • Select sprint goal Sprint planning • Decide how to achieve sprint goal (design) • Create sprint backlog (tasks) from product backlog items (user stories / features) • Estimate sprint backlog in hours Sprint goal Sprint goal Sprint backlog Sprint backlog Business conditions Business conditions Team capacity Team capacity Product backlog Product backlog Techno- logy Techno- logy Current product Current product Sprint Planning Meeting

Slide 59

Slide 59 text

High Quality Software Development with Agile & Scrum @ March 2012 What is a User Story? • Feature description from anyone on the team or any customer • Have "Conditions of Satisfaction" which can be tested in review • Have no/minimal dependency on other stories User Stories General Format: As a [user role] I want to [goal], so I can [reason or conditions of satisfaction] As a Product Owner, I want to understand Agile planning and estimation, so that I can produce an effective Product Backlog

Slide 60

Slide 60 text

High Quality Software Development with Agile & Scrum @ March 2012 Sprint Planning • Team selects items from the product backlog they can commit to completing • Sprint backlog is created • Tasks are identified and each is estimated (1-16 hours) • Collaboratively, not done alone by the ScrumMaster • High-level design is considered As a vacation planner, I want to see photos of the hotels. As a vacation planner, I want to see photos of the hotels. Code the middle tier (8 hours) Code the user interface (4) Write test fixtures (4) Code the foo class (6) Update performance tests (4)

Slide 61

Slide 61 text

High Quality Software Development with Agile & Scrum @ March 2012 The Daily Scrum •Parameters • Daily • 15-minutes • Stand-up •Not for problem solving • Whole world is invited • Only team members, ScrumMaster & product owner can talk •Helps avoid other unnecessary meetings

Slide 62

Slide 62 text

High Quality Software Development with Agile & Scrum @ March 2012 Everyone answers 3 questions •These are not status for the ScrumMaster • They are commitments in front of peers What did you do yesterday? What did you do yesterday? 1 1 What will you do today? What will you do today? 2 2 Is anything in your way? Is anything in your way? 3 3

Slide 63

Slide 63 text

High Quality Software Development with Agile & Scrum @ March 2012 The Sprint Review •Team presents what it accomplished during the sprint •Typically takes the form of a demo of new features or underlying architecture •Informal • 2-hour prep time rule • No slides •Whole team participates •Invite the world

Slide 64

Slide 64 text

High Quality Software Development with Agile & Scrum @ March 2012 Sprint Retrospective •Periodically take a look at what is and is not working •Typically 30 min-1 hour •Done after every sprint •Whole team participates • ScrumMaster • Product owner • Team • Possibly customers and others

Slide 65

Slide 65 text

High Quality Software Development with Agile & Scrum @ March 2012 Start / Stop / Continue •Whole team gathers and discusses what they’d like to: Start doing Start doing Stop doing Stop doing Continue doing Continue doing This is just one of many ways to do a sprint retrospective.

Slide 66

Slide 66 text

High Quality Software Development with Agile & Scrum @ March 2012 •Product owner •ScrumMaster •Team Roles Scrum framework •Sprint planning •Sprint review •Sprint retrospective •Daily scrum meeting Ceremonies •Product backlog •Sprint backlog •Burndown charts Artifacts

Slide 67

Slide 67 text

High Quality Software Development with Agile & Scrum @ March 2012 Product backlog •The requirements •A list of all desired work on the project •Ideally expressed such that each item has value to the users or customers of the product •Prioritized by the product owner •Reprioritized at the start of each sprint This is the product backlog This is the product backlog

Slide 68

Slide 68 text

High Quality Software Development with Agile & Scrum @ March 2012 Different Types of Stories Spike: •It is an experimental solution that cuts through all the "layers." •It is necessarily time-boxed. •It is always intended to be thrown away. Epic: •Large story •An item that can’t be committed to by the team •It is a container of stories

Slide 69

Slide 69 text

High Quality Software Development with Agile & Scrum @ March 2012 A Story Point is a relative measure of feature difficulty/complexity Story Points Story Points are a more accurate measure of project velocity and release schedule than using hours and days.

Slide 70

Slide 70 text

High Quality Software Development with Agile & Scrum @ March 2012 1. All the team members have a set of cards 2. Scrum Master reads description of the backlog Item 3. Everyone selects and simultaneously shows cards 4. If estimates vary significantly, high and low estimators briefly explain why they have estimated so 5. Repeat steps 3-4 until estimates stop converging 6. Decide estimate for backlog item 7. Move to next backlog item Planning Poker

Slide 71

Slide 71 text

High Quality Software Development with Agile & Scrum @ March 2012 Sample Product Backlog

Slide 72

Slide 72 text

High Quality Software Development with Agile & Scrum @ March 2012 Sample Product Backlog

Slide 73

Slide 73 text

High Quality Software Development with Agile & Scrum @ March 2012 Product Backlog Iceberg

Slide 74

Slide 74 text

High Quality Software Development with Agile & Scrum @ March 2012 Work Items on Prioritized Stack

Slide 75

Slide 75 text

High Quality Software Development with Agile & Scrum @ March 2012 Grooming Sessions I hate long meetings, why do you think we have such long meetings? What could we do better? Grooming meetings are a kind of small planning meetings that the team detail the stories and re-estimate. Most common schedule is weekly basis. ● Increases efficiency of the team by greatly reducing uncertainty. ● Better groomed stories are more accurately estimated, more accurately tested, and more accurately implemented ● Increases efficiency of the team due to the benefit of shared knowledge gained by the entire Scrum team being in the grooming. ● Allows the team to maintain a sustainable, higher pace. ● When done well, grooming greatly reduces the time required for a Sprint Planning meeting.

Slide 76

Slide 76 text

High Quality Software Development with Agile & Scrum @ March 2012 Definition of Done Definition of Done is a simple list of activities that add verifiable/demonstrable value to the product.

Slide 77

Slide 77 text

High Quality Software Development with Agile & Scrum @ March 2012 Definition of Done

Slide 78

Slide 78 text

High Quality Software Development with Agile & Scrum @ March 2012 Definition of Done

Slide 79

Slide 79 text

High Quality Software Development with Agile & Scrum @ March 2012 Estimation of Productive Time • Task of 8 hours doesn't mean completion in 1 day • Incorporate time for: meetings, phone-calls, e-mails, bug-fixing, other responsibilities, etc. • No contingency planning! The team should establish a working pace which can be sustained with normal working hours

Slide 80

Slide 80 text

High Quality Software Development with Agile & Scrum @ March 2012 A sprint backlog Tasks Tasks Code the user interface Code the middle tier Test the middle tier Write online help Write the helper class Mon Mon 8 16 8 12 8 Tues Tues 4 12 16 8 Wed Wed Thur Thur 4 11 8 4 Fri Fri 8 8 Add error logging 8 10 16 8 8

Slide 81

Slide 81 text

High Quality Software Development with Agile & Scrum @ March 2012 Sprint Burndown Chart Determination of Team Velocity

Slide 82

Slide 82 text

High Quality Software Development with Agile & Scrum @ March 2012 Sprint Burndown Chart

Slide 83

Slide 83 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum Task Board

Slide 84

Slide 84 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum Task Board

Slide 85

Slide 85 text

High Quality Software Development with Agile & Scrum @ March 2012 The sprint goal •A short statement of what the work will be focused on during the sprint Database Application Financial services Life Sciences Support features necessary for population genetics studies. Support more technical indicators than company ABC with real-time, streaming data. Make the application run on SQL Server in addition to Oracle.

Slide 86

Slide 86 text

High Quality Software Development with Agile & Scrum @ March 2012 Scalability •Typical individual team is 7 ± 2 people • Scalability comes from teams of teams •Factors in scaling • Type of application • Team size • Team dispersion • Project duration •Scrum has been used on multiple 500+ person projects

Slide 87

Slide 87 text

High Quality Software Development with Agile & Scrum @ March 2012 Scaling through the Scrum of scrums

Slide 88

Slide 88 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum of scrums of scrums

Slide 89

Slide 89 text

High Quality Software Development with Agile & Scrum @ March 2012 Scrum in Summary Scrum is not about: Good engineering practices Acknowledging the importance of people Forming cross-functional teams Obtaining high-bandwith communication Constantly inspecting and improving Delivering value Changing plans to take advantage of opportunities and priorities Scrum is about:

Slide 90

Slide 90 text

High Quality Software Development with Agile & Scrum @ March 2012 Possible Problems with Agile ● Cultural change ● Organizational support ● Stakeholder involvement ● Team size ● Transparency ● “No silver bullet”

Slide 91

Slide 91 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 4. Writing High Quality Software With Agile nmap run completed -- 1 IP address (1 host up) scanneds % sshnuke 10.2.2.2 -rootpw-"Z1ON0101" Connecting to 10.2.2.2:ssh ... successful. Attempting to exploit SSHv1 CRC32 ... successful. Reseting root password to "Z1ON0101". System open: Access Level (9) % ssh 10.2.2.2 -l root [email protected]'s password: RTF-CONTROL> disable grid nodes 21 - 48 Warning: Disabling nodes 21-48 will disconnect sector 11 (27 nodes) ARE YOU SURE ? (y/n) Grid Node 21 offline... Grid Node 22 offline... Grid Node 23 offline... Grid Node 24 offline... Grid Node 25 offline... Grid Node 26 offline... Grid Node 27 offline... Grid Node 28 offline... Grid Node 29 offline... Grid Node 30 offline... Grid Node 31 offline... Grid Node 32 offline... Grid Node 33 offline... Grid Node 34 offline... Grid Node 35 offline... Grid Node 36 offline... Grid Node 37 offline... Grid Node 38 offline...

Slide 92

Slide 92 text

High Quality Software Development with Agile & Scrum @ March 2012 Searching for High Quality ● Scrum does not guarantee high- quality for your project ● XP principles try to provide high-quality software with Agile principles

Slide 93

Slide 93 text

High Quality Software Development with Agile & Scrum @ March 2012 What is Extreme Programming? ● An agile development methodology ● Created by Kent Beck in the mid 1990’s ● A set of 12 key practices taken to their “extremes” ● A mindset for developers and customers ● A religion?

Slide 94

Slide 94 text

High Quality Software Development with Agile & Scrum @ March 2012 The XP Practices

Slide 95

Slide 95 text

High Quality Software Development with Agile & Scrum @ March 2012 1 - The Planning Game ● Planning for the upcoming iteration ● Uses stories provided by the customer ● Technical persons determine schedules, estimates, costs, etc ● A result of collaboration between the customer and the developers

Slide 96

Slide 96 text

High Quality Software Development with Agile & Scrum @ March 2012 The Planning Game – Advantages ● Reduction in time wasted on useless features ● Greater customer appreciation of the cost of a feature ● Less guesswork in planning

Slide 97

Slide 97 text

High Quality Software Development with Agile & Scrum @ March 2012 The Planning Game – Disadvantages ● Customer availability ● Is planning this often necessary?

Slide 98

Slide 98 text

High Quality Software Development with Agile & Scrum @ March 2012 2- Small Releases ● Small in terms of functionality ● Less functionality means releases happen more frequently ● Support the planning game

Slide 99

Slide 99 text

High Quality Software Development with Agile & Scrum @ March 2012 Small Releases – Advantages ● Frequent feedback ● Tracking ● Reduce chance of overall project slippage

Slide 100

Slide 100 text

High Quality Software Development with Agile & Scrum @ March 2012 Small Releases – Disadvantages ● Not easy for all projects ● Not needed for all projects ● Versioning issues

Slide 101

Slide 101 text

High Quality Software Development with Agile & Scrum @ March 2012 3 – Metaphor ● The oral architecture of the system ● A common set of terminology

Slide 102

Slide 102 text

High Quality Software Development with Agile & Scrum @ March 2012 Metaphor – Advantages ● Encourages a common set of terms for the system ● Reduction of buzz words and jargon ● A quick and easy way to explain the system

Slide 103

Slide 103 text

High Quality Software Development with Agile & Scrum @ March 2012 Metaphor – Disadvantages ● Often the metaphor is the system ● Another opportunity for miscommunication ● The system is often not well understood as a metaphor

Slide 104

Slide 104 text

High Quality Software Development with Agile & Scrum @ March 2012 4 – Simple Design ● K.I.S.S. ● Do as little as needed, nothing more

Slide 105

Slide 105 text

High Quality Software Development with Agile & Scrum @ March 2012 Simple Design – Advantages ● Time is not wasted adding superfluous functionality ● Easier to understand what is going on ● Refactoring and collective ownership is made possible ● Helps keeps programmers on track

Slide 106

Slide 106 text

High Quality Software Development with Agile & Scrum @ March 2012 Simple Design – Disadvantages ● What is “simple?” ● Simple isn’t always best

Slide 107

Slide 107 text

High Quality Software Development with Agile & Scrum @ March 2012 6 – Testing ● Unit testing ● Test-first design (TDD) ● All automated

Slide 108

Slide 108 text

High Quality Software Development with Agile & Scrum @ March 2012 Testing – Advantages ● Unit testing promote testing completeness ● Test-first gives developers a goal ● Automation gives a suite of regression test

Slide 109

Slide 109 text

High Quality Software Development with Agile & Scrum @ March 2012 Testing – Disadvantages ● Automated unit testing isn’t for everything ● Reliance on unit testing isn’t a good idea ● A test result is only as good as the test itself

Slide 110

Slide 110 text

High Quality Software Development with Agile & Scrum @ March 2012 6 – Refactoring ● Changing how the system does something but not what is done ● Improves the quality of the system in some way

Slide 111

Slide 111 text

High Quality Software Development with Agile & Scrum @ March 2012 Refactoring – Advantages ● Prompts developers to proactively improve the product as a whole ● Increases developer knowledge of the system

Slide 112

Slide 112 text

High Quality Software Development with Agile & Scrum @ March 2012 Refactoring – Disadvantages ● Not everyone is capable of refactoring ● Refactoring may not always be appropriate ● Would upfront design eliminate refactoring?

Slide 113

Slide 113 text

High Quality Software Development with Agile & Scrum @ March 2012 7 – Pair Programming ● Two Developers, One monitor, One Keyboard ● One “drives” and the other thinks ● Switch roles as needed

Slide 114

Slide 114 text

High Quality Software Development with Agile & Scrum @ March 2012 Pair Programming – Advantages ● Two heads are better than one ● Focus ● Two people are more likely to answer the following questions: ● Is this whole approach going to work? ● What are some test cases that may not work yet? ● Is there a way to simplify this?

Slide 115

Slide 115 text

High Quality Software Development with Agile & Scrum @ March 2012 Pair Programming – Disadvantages ● Many tasks really don’t require two programmers ● A hard sell to the customers ● Not for everyone http://www.cenqua.com/pairon/

Slide 116

Slide 116 text

High Quality Software Development with Agile & Scrum @ March 2012 8 – Collective Ownership ● The idea that all developers own all of the code ● Enables refactoring

Slide 117

Slide 117 text

High Quality Software Development with Agile & Scrum @ March 2012 Collective Ownership – Advantages ● Helps mitigate the loss of a team member leaving ● Promotes developers to take responsibility for the system as a whole rather then parts of the system

Slide 118

Slide 118 text

High Quality Software Development with Agile & Scrum @ March 2012 Collective Ownership - Disadvantages ● Loss of accountability ● Limitation to how much of a large system that an individual can practically “own”

Slide 119

Slide 119 text

High Quality Software Development with Agile & Scrum @ March 2012 9 – Continuous Integration ● New features and changes are worked into the system immediately ● Code is not worked on without being integrated for more than a day

Slide 120

Slide 120 text

High Quality Software Development with Agile & Scrum @ March 2012 Continuous Integration - Advantages ● Reduces to lengthy process ● Enables the Small Releases practice

Slide 121

Slide 121 text

High Quality Software Development with Agile & Scrum @ March 2012 Continuous Integration – Disadvantages ● The one day limit is not always practical ● Reduces the importance of a well-thought-out architecture

Slide 122

Slide 122 text

High Quality Software Development with Agile & Scrum @ March 2012 10 – 40-Hour Week ● The work week should be limited to 40 hours ● Regular overtime is a symptom of a problem and not a long term solution

Slide 123

Slide 123 text

High Quality Software Development with Agile & Scrum @ March 2012 40-Hour Week – Advantage ● Most developers lose effectiveness past 40- Hours ● Value is placed on the developers well-being ● Management is forced to find real solutions

Slide 124

Slide 124 text

High Quality Software Development with Agile & Scrum @ March 2012 40-Hour Week - Disadvantages ● The underlying principle is flawed ● 40-Hours is a magic number ● Some may like to work more than 40-Hours

Slide 125

Slide 125 text

High Quality Software Development with Agile & Scrum @ March 2012 11 – On-Site Customer ● Just like the title says! ● Acts to “steer” the project ● Gives quick and continuous feedback to the development team

Slide 126

Slide 126 text

High Quality Software Development with Agile & Scrum @ March 2012 On-Site Customer – Advantages ● Can give quick and knowledgeable answers to real development questions ● Makes sure that what is developed is what is needed ● Functionality is prioritized correctly

Slide 127

Slide 127 text

High Quality Software Development with Agile & Scrum @ March 2012 On-Site Customer – Disadvantages ● Difficult to get an On-Site Customer ● The On-Site customer that is given may not be fully knowledgeable about what the company ● May not have authority to make many decisions ● Loss of work to the customer’s company

Slide 128

Slide 128 text

High Quality Software Development with Agile & Scrum @ March 2012 12 – Coding Standards ● All code should look the same ● It should not possible to determine who coded what based on the code itself

Slide 129

Slide 129 text

High Quality Software Development with Agile & Scrum @ March 2012 Coding Standards – Advantages ● Reduces the amount of time developers spend reformatting other peoples’ code ● Reduces the need for internal commenting ● Call for clear, unambiguous code

Slide 130

Slide 130 text

High Quality Software Development with Agile & Scrum @ March 2012 Coding Standards – Disadvantages ● Degrading the quality of inline documentation

Slide 131

Slide 131 text

High Quality Software Development with Agile & Scrum @ March 2012 How Google Develops Software ● Single Code Base for Everything ● Distributed Version Control System ● Central Documentation Repository ● Bug Tracking System ● Maven/Gem Repository ● Coding Standarts and Guidelines ● Code Coverage Tools ● Pair Programing and Code Review Tools ● Release Notes & Release Management ● OS-IDE-Tool Free Coding ● Test Driven Development / Behavior Driven Development ● Testing in Multi-level (Unit, Integration, Functional, Acceptance, Manual) ● Continuous Integration Server ● Enterprise Architecture (Dev, Test & QA, Staging, Production)

Slide 132

Slide 132 text

High Quality Software Development with Agile & Scrum @ March 2012 How Google Develops Software ● Sprint Collaboration Tool as White Board ● Sprint Tracking Tool as Spreadsheet ● Product Backlog in Spreadsheet or a tool like Atlassian Jira-GreenHooper ● Meetings with Larry Page Rules ● Scrum of Scrums ● Brown Bag Sessions, tech taks, round-table sessions ● 20% Time ● New ideas, then brainstorming session 1) Every meeting must have one clear decision maker. If there's no decision maker -- or no decision to be made -- the meeting shouldn't happen. 2) No more than 10 people should attend. 3) Every person should give input, otherwise they shouldn't be there. 4) No decision should ever wait for a meeting. If a meeting absolutely has to happen before a decision should be made, then the meeting should be scheduled immediately.

Slide 133

Slide 133 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 5. Do's and Dont's

Slide 134

Slide 134 text

High Quality Software Development with Agile & Scrum @ March 2012 Can Scrum fail ? No ! Scrum is not a silver bullet ... and it surfaces existing problems Scrum never fails !!! It is a simple framework but hard to implement It’s a completely new way of thinking and mind-set shifting it is not just list of practice. If you “stand-up” it doesn’t mean you do Scrum ...

Slide 135

Slide 135 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Culture ● Providing answers instead of asking questions ● Management ● Force commitments ● Ask for not needed or invaluable status and measures ● No tolerance for failures ● Will go back to the old norms ● Loss of Ceremony Rhythm ● Scrum Ceremonies are taking too long

Slide 136

Slide 136 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Bad Scrum Master ● Driving the time and the tasks allocation, get decisions. ● Fails to make a prioritized impediment list ● Becomes the team administrator ● Do not keep the team in the “zone” ● No or bad retrospectives ● Wrong definition of done ● No velocity tracking

Slide 137

Slide 137 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Bad Product Owner ● Consistently unavailable ● Fail to get consensus ● Doesn’t have a vision, business plan and release roadmap ● Poorly defined stories (INVEST), not all work in the backlog ● On-going Changes in Sprint backlog ● Too much interruptions / PO bypassed ● No analysis or documentation

Slide 138

Slide 138 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Waterfall within sprint ● Better to have 70% of stories 100% done then the opposite. ● Entire team own the story ● Testers are not part of the Team ● Developers assume QA will test ● Integration postponed to the end ● Technical Debt ● More defects appear at the end ● Last iterations produce less new functionality ● Re-factor and re-design cost too much and take too long

Slide 139

Slide 139 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Not Acting Like a self managed team ● Fixed Roles, No knowledge leveraging ● Prima donna /Dictator within the team ● Depend on external expertise ● Visibility for the managers not for the team ● Personal goals rather than team goal ● Talking Chickens ● Tasks are assigned ● Not helping and listening each other ● NO FUN :(

Slide 140

Slide 140 text

High Quality Software Development with Agile & Scrum @ March 2012 Why Scrum Implementation Might Fail ? ● Team exhausted, there are no calm periods, no place for innovation ● " ... the team shadows the individual. Good senior employees, feels that they can less contribute and lead, ...[due to] the “team thing” and the low granularity of the tasks, leaving small flexibility to personal innovation and creativity“

Slide 141

Slide 141 text

High Quality Software Development with Agile & Scrum @ March 2012 Does Scrum fit BIG organization ? The following statements are sometimes heard: ● "Oh yes, Scrum is good for small teams but I don't see it working for bigger organizations” ● "Only experts and above average developers can do it." ● "It should evolve bottom-up" (i.e., one "crazy" team implements Scrum and generates a "buzz" that pushes the rest of the organization to follow). ● "There is no visibility above the team's level as there are no project plans". ● "Teams are self-managed so team leaders and managers lose their role." ● "Agile is not good for complex systems with integrations and dependencies." ● "Our customers will never go along with fluid estimations" ● And so on....

Slide 142

Slide 142 text

High Quality Software Development with Agile & Scrum @ March 2012 Yes, it fits! ● Scrum surfaces the inherent problems and wastes ● Scrum reduces the bureaucracy and org. complexity ● Break the organizational silos ● Reduce politics – move the power to the teams ● Scrum allows better leveling of knowledge ● Reduces dependencies on specific expertise, ● Raises employees satisfaction

Slide 143

Slide 143 text

High Quality Software Development with Agile & Scrum @ March 2012 Yes, it fits! ● Scrum provides much better visibility ● Managers have more time to ● Look ahead and think ● Understand customer needs and ROI ● Handle impediments ● Raises employees satisfaction The bigger the organization, the higher ROI

Slide 144

Slide 144 text

High Quality Software Development with Agile & Scrum @ March 2012 Module 6. Kickstart

Slide 145

Slide 145 text

High Quality Software Development with Agile & Scrum @ March 2012 The Shock Therapy ● "A set of Good Practices, but no choice" ● Team Recipe ● Management Recipe ● Organization Recipe

Slide 146

Slide 146 text

High Quality Software Development with Agile & Scrum @ March 2012 Team Recipe ● Scrum training session for everyone ● Sprint 1 week long ● Definition of Done: ● Feature Complete ● Code Complete ● No known defects ● Approved by the Product Owner ● Production Ready ● Continuous Integration ● Story Points ● Physical Task Board ● All-in-one Sprint planning meeting. ● No Multi-tasking, work in priority order. ● Three successful Sprints consecutively ● Good business reason to change the rule

Slide 147

Slide 147 text

High Quality Software Development with Agile & Scrum @ March 2012 Management Recipe ● Hands off during 3 iterations ● Attend: ● Some Daily Scrums - be quiet ● All Sprint Reviews ● Start to work on waste - now! ● Management by walking, asking and listening ● Make the first step easy for the team ● One successful team ● Removed impediments and studied results ● Change in perception at "ground level" ● A good agile reason to change the rule

Slide 148

Slide 148 text

High Quality Software Development with Agile & Scrum @ March 2012 Organization Recipe ● Difficult - How to speak to a "culture"? ● Some steps: ● Transparency ● Pull ● A micro-revolution per day ● Some new roles

Slide 149

Slide 149 text

High Quality Software Development with Agile & Scrum @ March 2012 The Scrum Sensei ● Experienced ScrumMaster ● Enforces rules/recipes ● Bad ScrumMaster as in "good cop - bad cop" ● Compassion! ● Leaves when self-organization works

Slide 150

Slide 150 text

High Quality Software Development with Agile & Scrum @ March 2012 Special Thanks! Presentation by: Mike Cohn [email protected] www.mountaingoatsoftware.com (720) 890-6110 Presentation by: Mike Cohn [email protected] www.mountaingoatsoftware.com (720) 890-6110

Slide 151

Slide 151 text

High Quality Software Development with Agile & Scrum @ March 2012 Special Thanks! Scrum Shock Therapy Björn Granvik, CTO, Jayway Why Scrum Projects Might Fail? Ronen Bar-Nahor (Ph.D) Top 10 Reasons Why Systems Projects Fail Dr. Paul Dorsey, Dulcian, Inc.

Slide 152

Slide 152 text

High Quality Software Development with Agile & Scrum @ March 2012 Any Questions