$30 off During Our Annual Pro Sale. View Details »

High Quality Software Development with Agile and Scrum

High Quality Software Development with Agile and Scrum

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

Lemi Orhan Ergin

March 28, 2012
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Programming

Transcript

  1. 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

    View Slide

  2. 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

    View Slide

  3. 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

    View Slide

  4. 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

    View Slide

  5. 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."

    View Slide

  6. 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

    View Slide

  7. 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

    View Slide

  8. 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

    View Slide

  9. 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)

    View Slide

  10. 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.

    View Slide

  11. 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.

    View Slide

  12. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 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.

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

  21. 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.

    View Slide

  22. 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

    View Slide

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

    View Slide

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

    View Slide

  25. 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

    View Slide

  26. 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.

    View Slide

  27. 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.

    View Slide

  28. 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.

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

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

    View Slide

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

    View Slide

  33. 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

    View Slide

  34. 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

    View Slide

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

    View Slide

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

    View Slide

  37. 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.

    View Slide

  38. 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/

    View Slide

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

    View Slide

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

    View Slide

  41. 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

    View Slide

  42. 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

    View Slide

  43. 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

    View Slide

  44. 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

    View Slide

  45. 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”

    View Slide

  46. 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.

    View Slide

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

    View Slide

  48. 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!

    View Slide

  49. 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

    View Slide

  50. 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

    View Slide

  51. 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

    View Slide

  52. 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

    View Slide

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

    View Slide

  54. 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

    View Slide

  55. 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

    View Slide

  56. 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

    View Slide

  57. 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

    View Slide

  58. 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

    View Slide

  59. 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

    View Slide

  60. 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)

    View Slide

  61. 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

    View Slide

  62. 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

    View Slide

  63. 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

    View Slide

  64. 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

    View Slide

  65. 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.

    View Slide

  66. 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

    View Slide

  67. 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

    View Slide

  68. 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

    View Slide

  69. 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.

    View Slide

  70. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  75. 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.

    View Slide

  76. 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.

    View Slide

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

    View Slide

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

    View Slide

  79. 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

    View Slide

  80. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  85. 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.

    View Slide

  86. 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

    View Slide

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

    View Slide

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

    View Slide

  89. 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:

    View Slide

  90. 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”

    View Slide

  91. 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...

    View Slide

  92. 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

    View Slide

  93. 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?

    View Slide

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

    View Slide

  95. 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

    View Slide

  96. 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

    View Slide

  97. High Quality Software Development with Agile & Scrum @ March 2012
    The Planning Game – Disadvantages

    Customer availability

    Is planning this often necessary?

    View Slide

  98. 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

    View Slide

  99. High Quality Software Development with Agile & Scrum @ March 2012
    Small Releases – Advantages

    Frequent feedback

    Tracking

    Reduce chance of overall project slippage

    View Slide

  100. High Quality Software Development with Agile & Scrum @ March 2012
    Small Releases – Disadvantages

    Not easy for all projects

    Not needed for all projects

    Versioning issues

    View Slide

  101. High Quality Software Development with Agile & Scrum @ March 2012
    3 – Metaphor

    The oral architecture of the system

    A common set of terminology

    View Slide

  102. 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

    View Slide

  103. 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

    View Slide

  104. High Quality Software Development with Agile & Scrum @ March 2012
    4 – Simple Design

    K.I.S.S.

    Do as little as needed, nothing more

    View Slide

  105. 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

    View Slide

  106. High Quality Software Development with Agile & Scrum @ March 2012
    Simple Design – Disadvantages

    What is “simple?”

    Simple isn’t always best

    View Slide

  107. High Quality Software Development with Agile & Scrum @ March 2012
    6 – Testing

    Unit testing

    Test-first design (TDD)

    All automated

    View Slide

  108. 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

    View Slide

  109. 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

    View Slide

  110. 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

    View Slide

  111. 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

    View Slide

  112. 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?

    View Slide

  113. 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

    View Slide

  114. 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?

    View Slide

  115. 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/

    View Slide

  116. High Quality Software Development with Agile & Scrum @ March 2012
    8 – Collective Ownership

    The idea that all developers own all of the
    code

    Enables refactoring

    View Slide

  117. 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

    View Slide

  118. 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”

    View Slide

  119. 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

    View Slide

  120. High Quality Software Development with Agile & Scrum @ March 2012
    Continuous Integration - Advantages

    Reduces to lengthy process

    Enables the Small Releases practice

    View Slide

  121. 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

    View Slide

  122. 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

    View Slide

  123. 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

    View Slide

  124. 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

    View Slide

  125. 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

    View Slide

  126. 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

    View Slide

  127. 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

    View Slide

  128. 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

    View Slide

  129. 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

    View Slide

  130. High Quality Software Development with Agile & Scrum @ March 2012
    Coding Standards – Disadvantages

    Degrading the quality of inline documentation

    View Slide

  131. 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)

    View Slide

  132. 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.

    View Slide

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

    View Slide

  134. 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 ...

    View Slide

  135. 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

    View Slide

  136. 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

    View Slide

  137. 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

    View Slide

  138. 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

    View Slide

  139. 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 :(

    View Slide

  140. 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“

    View Slide

  141. 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....

    View Slide

  142. 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

    View Slide

  143. 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

    View Slide

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

    View Slide

  145. 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

    View Slide

  146. 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

    View Slide

  147. 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

    View Slide

  148. 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

    View Slide

  149. 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

    View Slide

  150. 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

    View Slide

  151. 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.

    View Slide

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

    View Slide