Agile Lean Scrum

download Agile Lean Scrum

of 35

Transcript of Agile Lean Scrum

  • 7/31/2019 Agile Lean Scrum

    1/35

    Agile-Lean-Scrum

    04 Jan 2009 @ 16:00

  • 7/31/2019 Agile Lean Scrum

    2/35

    Agenda

    Agile

    Lean

    Scrum

  • 7/31/2019 Agile Lean Scrum

    3/35

    Agile - Definitions

    Agile is an iterative and incremental (evolutionary) approach to softwar

    development which is performed in a highly collaborative manner byself-organising 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 [ Scott W, Ambler ]

    Early delivery of business value. That involves early and regular

    delivery of working software, a focus on team communications, andclose interaction with the users [ Alistair Cockburn ]

  • 7/31/2019 Agile Lean Scrum

    4/35

    Agile Manifesto

    4 Values :

    Individuals and interactions over processes and tools

    Working software over comprehensive documentation

    Customer collaboration over contract negotiation

    Responding to change over following a plan[ Short iterations. Lots of small milestones. ]

    [ Self Organizing Team over Control & Command Team. ]

    [ Customer involvement allows us to tune the system to the latest kno

    business value. ]

    [ The primary goal of software development is to create software, not

    documents. Produce no document unless its need is immediate andsignificant. ]

  • 7/31/2019 Agile Lean Scrum

    5/35

    Agile Manifesto

    12 Principles :

    Our highest priority is to satisfy the customer through early andcontinuous 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 time-scale

    Business people and developers must work together daily throughout

    the project.

  • 7/31/2019 Agile Lean Scrum

    6/35

    Agile Manifesto

    Build projects around motivated individuals. Give them the environmen

    and support they need, and trust them to get the job done.The most efficient and effective method of conveying information to and

    within a development team is face-to-face conversation.

    Working software is the primary measure of progress.

    Agile processes promote sustainable development. The sponsors,developers, and users should be able to maintain a constant pace

    indefinitely.

    Continuous attention to technical excellence and good design enhance

    agility.

  • 7/31/2019 Agile Lean Scrum

    7/35

    Agile Manifesto

    Simplicity--the art of maximizing the amount of work not done--is

    essential.The best architectures, requirements, and designs emerge from self-

    organising teams.

    At regular intervals, the team reflects on how to become more effective

    then tunes and adjusts its behaviour accordingly.

  • 7/31/2019 Agile Lean Scrum

    8/35

    Agile

    Key characteristics :

    Adaptive responsive to change in needs & requirements viacontinuous feedback and reflective retrospection.

    Goal-driven focus on producing executable-results (working

    functionality) in order of highest business value.

    Iterative / feedback-driven short development cycles, frequentreleases, regular feedback.

    Lean simple design, streamlined processes, elimination of

    redundant information, minimal intermediate artifacts.

    Emergent behaviour highly collaborative self-organising teams inclose interaction with stakeholders.

    Quality - TDD, CI, and continuous re-factoring.

  • 7/31/2019 Agile Lean Scrum

    9/35

    Agile

    Agile software development is an umbrella term for several software

    development methods :

    Lean Software Development ( LSD )

    Scrum

    XP

  • 7/31/2019 Agile Lean Scrum

    10/35

    Lean

    "Lean" fundamentally refers an approach in the manufacturing world th

    was originally developed by Toyota in the 1950's.

    Variations :

    Lean Manufacturing from Toyota (from Taiichi Ohno of Toyota) TPS

    (Toyota Production System)

    Lean Thinking (from Womack and Jones work)

    Lean Software Development (from Mary and Tom Poppendieck)

    Lean Product Development System (from Toyota, as described by

    Michael Kennedy)

  • 7/31/2019 Agile Lean Scrum

    11/35

    Lean

    7 LSD Principles :

    Eliminate Waste

    Build Quality In

    Create Knowledge

    Defer CommitmentDeliver Fast

    Respect People

    Optimize the Whole

  • 7/31/2019 Agile Lean Scrum

    12/35

    Principle #1 : Eliminate Waste

    anything that does not add customer value

    any delay that keeps customers from getting value when they want it

    untested code, undocumented code, undeployed code

    unused features, lost knowledge ( relearning )making the wrong thing or making the thing wrong

    Lean

  • 7/31/2019 Agile Lean Scrum

    13/35

    Principle #2 : Build Quality In

    The point of lean is not to eliminate defects, it is to not have themappear in the first place ( avoiding creating defects in the first

    place )

    Test-and-fix cycles are an indicator of a poor process.

    Testing is to prevent defects, not to find them !

    [ When a defect is found, you stop-the-line, find its cause, and fix it

    immediately. ]

    Lean

  • 7/31/2019 Agile Lean Scrum

    14/35

    Lean

    5S ( for Java ) :

    Sort (Seiri): Reduce the size of the code base. Throw away all

    unneeded items immediately :

    remove dead code, unused imports, variables, methods, classes

    refactor redundant code

    Systematise (Seiton): Organise the projects and packages. Have a

    place for everything and everything in its place :

    resolve package dependency cycles

    minimize dependencies

  • 7/31/2019 Agile Lean Scrum

    15/35

    Lean

    Shine (Seiso): Clean up. Problems are more visible when everything is

    neat and clean :

    resolve unit test failures and errors ( passed == 100%)

    improve unit test coverage ( > 80%) and unit test performance

    check AllTests performance

    resolve checkstyle, PMD, and javadoc warnings

    Standardize (Seiketsu): Once you get to a clean state, keep it that way

    Reduce complexity over time to improve ease of maintenance.

    Sustain (Shitsuke): Use and follow standard procedures.

  • 7/31/2019 Agile Lean Scrum

    16/35

    Principle #3 : Create Knowledge

    It's all about continuous learning and sharing information.

    The knowledge about the process, obstacles and product are gathered

    and shared by the whole team.

    Few key recommendations :

    release a small subset of key features early for review and evaluation

    perform daily builds and provide rapid feedback from on-going testing

    use a modular architecture that enables features to be added more

    easily

    Lean

  • 7/31/2019 Agile Lean Scrum

    17/35

    Principle #4 : Defer Commitment

    Focus on what customers need to accomplish at that moment in order allow easier rework and reduce wasted effort.

    Don't make any decision if you don't have all the information, keep you

    options open.

    Support the business effectively through flexible architectures that arechange tolerant.

    Design for change ( i.e. Design Patterns )

    Provide an approach to design that :

    handle variations

    can change when get more knowledge or new requirement

    Lean

  • 7/31/2019 Agile Lean Scrum

    18/35

    Principle #5 : Deliver Fast

    how to deliver software that our customers don't have time to changetheir minds.

    Lean

  • 7/31/2019 Agile Lean Scrum

    19/35

    Principle #6 : Respect People

    The team decides what the work is and appreciate their work.

    In a lean culture, management supports workers in whatever way is

    necessary. Support != Dictate

    Lean

  • 7/31/2019 Agile Lean Scrum

    20/35

    Principle #7 : Optimize the Whole

    maximizing the value delivered to the customer not merelymaximizing any one (or even all) of the steps in the process.

    For ex : QA needs to work with the development team to improve the

    development process ( move up to the front of the development cycl

    ). The result of not doing this is often a lack of clarity of what is to be

    built as well as uncertainty as to the quality of what was built.

    Lean

  • 7/31/2019 Agile Lean Scrum

    21/35

    Scrum framework

    Scrum

    Product owner

    ScrumMaster

    Team

    Roles

    Sprint planning

    Daily stand-up meeting

    Sprint review

    Sprint retrospective

    Ceremonies

    Product backlogSprint backlog

    Burndown chart

    Artifacts

  • 7/31/2019 Agile Lean Scrum

    22/35

    Product Owner :

    someone who has the final authority representing the customer's interein backlog prioritisation and requirements

    someone from a Marketing role or a key user in internal development,

    prioritise the Product Backlog

    gathering requirementsprioritise PBI

    decide the release date & content

    accept or reject work results

    Scrum - Roles

  • 7/31/2019 Agile Lean Scrum

    23/35

    ScrumMaster :

    a facilitator for the Team and POresponsible for performing Scrum values & practices

    remove all obstacles to success

    ensure that the team is fully functional & productive

    enable close cooperation across all roles & functions

    shepherding the team, shield the team from external interferences

    Scrum - Roles

    S R l

  • 7/31/2019 Agile Lean Scrum

    24/35

    Team :

    self-organising, but not self-directinghas the right to do everything within the boundaries of the project

    guidelines to reach the iteration goal

    demo work result to the PO

    have the responsibility to deliver what they committed to

    Scrum - Roles

    S C i

  • 7/31/2019 Agile Lean Scrum

    25/35

    Daily stand-up meeting :

    is a status meeting not a report meeting

    the team is reporting to each other, not to the Product Owner, Manager

    or ScrumMaster.

    to provide a coordination mechanism for everyone on the project ( whe

    everyone is )

    for each team member to make commitments in front of his/her peers

    track progress

    identify impediments

    Scrum - Ceremonies

    S E ti ti

  • 7/31/2019 Agile Lean Scrum

    26/35

    Include all engineering tasks :

    design

    coding ( Java code, GUI, model, etc. )

    testing ( unit, functional, regression, etc. )

    refactoring

    peer review

    technical documentation (?)

    Scrum - Estimating

    S R t ti

  • 7/31/2019 Agile Lean Scrum

    27/35

    This is the time to inspect & adapt the process, methods, and teamwor

    What went right ? What went wrong ?What could be improved ?

    What happened during this Sprint ? What did we learn ?

    What did you value most about your contribution for this Sprint ?

    Scrum - Retrospective

    Scrum Retrospective using

  • 7/31/2019 Agile Lean Scrum

    28/35

    Developed by David Cooperrider and colleagues at Case Western

    Reserve University in the 1980s.

    The cooperative search for the best in people, their organisations, and

    the world around them

    Appreciations

    Complaints with recommendations

    Hopes & wishes iro process

    Scrum Retrospective usingAppreciative Inquiry

    QA & Testing

  • 7/31/2019 Agile Lean Scrum

    29/35

    In Agile Testing :

    involves testing from the customer perspective as early as possible,testing early and often as code becomes available and stable

    enough from module/unit level testing.

    work with the customer to define acceptance test

    coding and testing are part of one process.

    write detailed tests for a story as soon as coding begins.

    Agile testers are proactive. They dont sit and wait for work to come to

    us.

    code fairly free of bugs by the time its checked in.

    QA & Testing

    QA & Testing

  • 7/31/2019 Agile Lean Scrum

    30/35

    The job of tests, and the people that develop and runs tests, is to

    prevent defects, not to find them. A quality assurance organization

    should champion processes that build quality into the code from thestart rather than test quality in later. This is not to say that verification

    is unnecessary. Final verification is a good idea. It's just that finding

    defects should be the exception, not the rule, during verification. If

    verification routinely triggers test-and-fix cycles, then the

    development process is defective. [ Mary and Tom Poppendieck ]

    Finding defects / bugs violates :

    Eliminate Waste

    Build Quality In

    Optimise the Whole

    QA & Testing

    Defect Prevention Techniques

  • 7/31/2019 Agile Lean Scrum

    31/35

    Prior to coding :

    design considerationCoding :

    use meaningful assertion ( sanity check )

    write readable code

    check & verify the integrity of all incoming parameters

    consider all possible error cases

    peer reviews

    Testing

    Defect Prevention Techniques

    Simple Design

  • 7/31/2019 Agile Lean Scrum

    32/35

    We are not fortune-teller and cannot foresee all the market changes.

    Don't try to solve big problems in one go ( BDUF )

    It is not a design that takes the least time or cut & paste. This is a bad

    code.

    Think about tomorrow, but design, test and code for todays need.

    The design should :

    meet the current requirements, easily maintain, code clarity, and

    extensible

    doesnt have a huge impact when changing it later

    requires continuous improvement through refactoring & incrementaldesign & architecture.

    use the Design Pattern [GoF] and OO Design & Patterns

    Simple Design

    Collective Code Ownership

  • 7/31/2019 Agile Lean Scrum

    33/35

    Allows not expects everyone to fix the problems (duplication,

    unclear names, poorly designed code, etc) they find, it doesn't matte

    who wrote it. It's yourcode.

    With self-organising team, refactoring, and continuous integration, this

    will lead to a high quality code.

    Collective Code Ownership

    Guidelines

  • 7/31/2019 Agile Lean Scrum

    34/35

    Code Complete :

    Defensive Programming [8]Software Quality [20]

    Refactoring [24]

    Self-Documenting Code [32]

    Clean Code :

    Smells & Heuristics [17]

    Guidelines

  • 7/31/2019 Agile Lean Scrum

    35/35

    End