Iteration 0
About Speaker
                     http://kensipe.blogspot.com/
                     http://del.icio.us/kensipe
                     twitter: @kensipe
                     kensipe@gmail.com

     Developer: Embedded, C++, Java, Groovy, Grails, C#, F#
     JavaOne 2009 Rock Star, NFJS
     Microsoft MCP
     Sun Certified Java 2 Architect
     Master of Scrums
     Agile Coach
     Instructor: VisiBroker CORBA
                 Rational Rose, OOAD
Agenda

         Agile Intro Edition
         Agile Micro Edition
           – Inside an Iteration
         Agile Macro Edition
           – Leading up to Iteration 0
         Iteration 0
Development Processes



                    Waterfall




                                4
Development Processes




                Iterative



                            4
Value of Iterative




                     5
Value of Iterative

Continuous focus
  – Improvement
  – Quality
  – Priority
  – Adding Business Value
  – Ability to Estimate
  – Team / Team Ability




                            6
Value of Iterative

Continuous focus
  – Improvement
  – Quality
  – Priority
  – Adding Business Value
  – Ability to Estimate
  – Team / Team Ability




                            6
Value of Iterative

      Develops trust with the Business!




                                     7
What Agile is NOT

Evolutionary
No Documentation
No Architecture
Cowboy Development




                      8
What Agile is NOT

Evolutionary
No Documentation
No Architecture
Cowboy Development




                      8
Agile Micro View




                   9
What is an Iteration?

                    Standup Meetings




  Opening Meeting                      Closing Meeting




                                                 10
Does Size Matter?




                    11
Opening Meeting

Who comes?
 – Developers
 – DBA
 – User / BA
 – Architects
 – QA




                  12
Opening Meeting

Suggest 2 Separate Opening Meetings
  – Objective of the first meeting:
    •   Agree on Acceptance Criteria
    •   Agree on priority
  – Objective of the second meeting:
    •   Break out and assignment of all tasks




                                                13
Closing Meeting

What was accepted by the User?
What is the velocity?
What architecturally significant has changed?
What is working?
What didn’t go well?
 – What do we do about it?




                                      14
Value of the Closing Meeting

Quality Check
User Feedback
Estimate Check
Team Performance Check



                          Velocity?
                          Bug Level?




                                 15
Stand up!

Pig Rules! Chickens can listen.


What did you do yesterday?
What will you do today?
Are there any impediments in your way?




                                    16
Agile Macro View




                   17
Starting Agile Projects

Starting is the Hardest Part
  – Often is a change
  – Less Experience




   Desire is the starting point of all achievement, not a hope, not a wish, but a keen
   pulsating desire which transcends everything.
   -- Napoleon Hill
Agile at a Macro Level

Missing Details
 – Great Information on Running Agile
 – Less Information on:
     •   Starting Agile
     •   Pre-IT0
     •   IT0
Agile Full Life Cycle
Pre-IT0 Stage 1




 Project Inception
 Stake Holder Level
   – Business Opportunity / Concerns
   – Often not exposed to all developers
Pre-IT0 Stage 2

Collection of Stories
Estimating
  – ROI
  – Project Justified



Build up of Team / Resources
Iteration Sizing
Initial List of Risks
Release Plan
Building a Team

             Co-Ownership
             Prepared to Steal Tasks
             Pairing Capable
             Expected Velocity?
               – Adjust Story Alignment and
                 Release Plan
Prepare for Team Phases
Forming
  – “polite”… team forms, No one is offended
  – Excitement / Optimism
Storming
  – Honeymoon is over
  – Resisting Task, Disunity
Norming
  – Team is starting to work together
  – Constructive Criticism
Performing
  – High performance team
  – Self Directed
Iteration 0

Creation of the Machine!
Environment Setup
  – Continuous Integration (CI)
  – IDE
  – Communication
Project Alignment
  – To other concerns outside the core team
Release Plan
Planning for Success

               Working with Users
                – Stories
                    •   Acceptance Criteria!!!!
                 – Priorities
               Project Alignments
                 – DBA / Database
                 – QA
                 – Enterprise Architecture
                 – Management
Release Plan

 Internal Releases Every Iteration
 Planned QA Releases
 Planned External Releases
 Initial Breakdown of Stories
   – Iteration Based on Priority
Do we need all stories to start?

2 Story Development Approaches
  – Major of the stories upfront
     •   With the understanding that you will likely discover
         more
  – Some stories upfront to prime
     •   With the intent that you’ll have a trailing analyst


Either Approach needs an Analyst, BA or PM
  – To work with feeding the stories into the next
    iteration
Alignment With QA Option 1
        BA IT 2
   Story Refinement

      Dev IT 1
       Code               BA IT 3
                     Story Refinement
       QA IT 1
                         Dev IT 2           BA IT 4
      Test Plan
                          Code         Story Refinement

   Iteration 1           QA IT 2
                        Test Plan
                                           Dev IT 3
                                            Code
                                                              BA IT 5
                                                         Story Refinement
                         QA IT 1           QA IT 3           Dev IT 4
                      Execution Plan      Test Plan           Code
                                           QA IT 2           QA IT 4
                     Iteration 2        Execution Plan      Test Plan
                                          QA IT 1            QA IT 3
                                         Regression       Execution Plan

                                       Iteration 3         QA IT 1 & 2
                                                           Regression



                                                         Iteration 4
Alignment with QA Option 2

   Dev IT 1
    Code
                 Dev IT 2
                  Code

 Iteration 1                   Dev IT 3
                                Code

               Iteration 2                  Dev IT 4
                                             Code
                             Iteration 3
                                                          QA IT 1
                                                         Test Plan

                                                                     Dev IT 5
                                           Iteration 4                Code


 Alignment to:
    – DBA
    – Enterprise Architects
Iteration 0
What would stop you from doing a 1 week iteration?




                                            32
Purpose of Automation

Predictability
Frequent repeatable feedback
Shorter iterations possible




                                33
Iteration 0

Version Control
IDE Setup
IT0 Spikes
Build System
Continuous Integration
Report Mechanism
Core Infrastructure
Xplanner / JIRA / Wiki
Initial Design Strategies
Multiple Domains
Version Control

Establish Project Layout
Questions
  – Head / Branch
  – Versioning Strategy?
    •   (3.0.2) Major, Minor, Patch
  – What to do with Spikes?

Version Control Admin / Reports
  – Automate as much as possible
  – Cvsblame!
  – cvscop
IDE Setup

Project Structure
Setup cvsignore or svnignore files
  – What isn’t shared in the project?
Plugins
  – App Server of Choice
  – Subclipse
  – PMD
  – SpringIDE
Libraries
  – Core
     •   Spring, Logging
IT0 Spikes

Using a new tool?
  – FIT
  – Selenium
  – jsUnit
Testing Something that is difficult to test?
  – 3rd Party Machine
  – External Connection
Build System
Back to Project Structure
Ant / Maven / Buildr / Gradle
  – Must
     •   Be automated
     •   Version
     •   Platform and desktop agnostic
     •   Setup and run tests
     •   Incorporate code coverage
           – Cobertura
     •   Setup Projects for Team
     •   Provide release builds with documentation
  – Nice
     •   Promotion capabilities
     •   Flexibility to select IDE
Continuous Integration

Connect Build System into CI
  – BuildForge
  – CruiseControl
  – Hudson

Setup up Lava Lamps
  – http://pragmaticautomation.com/cgi-bin/
    pragauto.cgi/Monitor/Devices/
    BubbleBubbleBuildsInTrouble.rdoc
Email Setup
Must Build, Test and provide reports
Reports

Code Quality
  – Compilation
  – Unit Test
  – Code Coverage
  – Static Analysis
Burn Down Reports
XPlanner / JIRA

Setup Story Repository
Setup IT0 and IT1 and a Future Stories IT
Setup Wiki / Forum
Initial Design Strategies

Standards
General Use of Annotations
General Upfront patterns (if it make sense)
 – MVC
 – Presentation Model
 – Logging all in Aspects



         Don’t Spend too much time here!
         It will evolve.
Multiple Domains

Setup Dev Box
Understand other domains
  – Prod, QA
Automate the promotion path if possible
  – How to handle SQL DDL?
Automate Everything

New Person Added
  – Setup in Xplanner, subversion and cruise control
Release a new patch
  – Version Controlled Version stamps
Unit tests for Integration Tests
  – DBUnit or ???
  – In Memory DB
IT0 Opening / Closing

Run IT0 like any other Iteration… It is the
 first!
   – Opening Meeting
      •   Take all these Stories and Tasks
           – Break them down
           – Estimate them
      •   Define the Acceptance Criteria
      •   The User is you!
   – Closing Meeting
      •   What’s the velocity?
      •   Are there any stories to continue?
Benefits of Iteration 0

feedback on teams ability to estimate
team velocity
focus on automating everything
remove the human factors




                                     46
ITX

The Machine Is Ready
Code at will!
Summary

          Start The Project Well
          IT 0 Establishes
            – Working Environment
            – Communication Channels
            – Initial Expectations
Questions


             Please Fill Out
              Surveys




            kensipe@gmail.com

            twitter: @kensipe

Agile - Iteration 0 CodeMash 2010

  • 1.
  • 2.
    About Speaker http://kensipe.blogspot.com/ http://del.icio.us/kensipe twitter: @kensipe kensipe@gmail.com Developer: Embedded, C++, Java, Groovy, Grails, C#, F# JavaOne 2009 Rock Star, NFJS Microsoft MCP Sun Certified Java 2 Architect Master of Scrums Agile Coach Instructor: VisiBroker CORBA Rational Rose, OOAD
  • 3.
    Agenda Agile Intro Edition Agile Micro Edition – Inside an Iteration Agile Macro Edition – Leading up to Iteration 0 Iteration 0
  • 4.
  • 5.
  • 6.
  • 7.
    Value of Iterative Continuousfocus – Improvement – Quality – Priority – Adding Business Value – Ability to Estimate – Team / Team Ability 6
  • 8.
    Value of Iterative Continuousfocus – Improvement – Quality – Priority – Adding Business Value – Ability to Estimate – Team / Team Ability 6
  • 9.
    Value of Iterative Develops trust with the Business! 7
  • 10.
    What Agile isNOT Evolutionary No Documentation No Architecture Cowboy Development 8
  • 11.
    What Agile isNOT Evolutionary No Documentation No Architecture Cowboy Development 8
  • 12.
  • 13.
    What is anIteration? Standup Meetings Opening Meeting Closing Meeting 10
  • 14.
  • 15.
    Opening Meeting Who comes? – Developers – DBA – User / BA – Architects – QA 12
  • 16.
    Opening Meeting Suggest 2Separate Opening Meetings – Objective of the first meeting: • Agree on Acceptance Criteria • Agree on priority – Objective of the second meeting: • Break out and assignment of all tasks 13
  • 17.
    Closing Meeting What wasaccepted by the User? What is the velocity? What architecturally significant has changed? What is working? What didn’t go well? – What do we do about it? 14
  • 18.
    Value of theClosing Meeting Quality Check User Feedback Estimate Check Team Performance Check Velocity? Bug Level? 15
  • 19.
    Stand up! Pig Rules!Chickens can listen. What did you do yesterday? What will you do today? Are there any impediments in your way? 16
  • 20.
  • 21.
    Starting Agile Projects Startingis the Hardest Part – Often is a change – Less Experience Desire is the starting point of all achievement, not a hope, not a wish, but a keen pulsating desire which transcends everything. -- Napoleon Hill
  • 22.
    Agile at aMacro Level Missing Details – Great Information on Running Agile – Less Information on: • Starting Agile • Pre-IT0 • IT0
  • 23.
  • 24.
    Pre-IT0 Stage 1 Project Inception Stake Holder Level – Business Opportunity / Concerns – Often not exposed to all developers
  • 25.
    Pre-IT0 Stage 2 Collectionof Stories Estimating – ROI – Project Justified Build up of Team / Resources Iteration Sizing Initial List of Risks Release Plan
  • 26.
    Building a Team Co-Ownership Prepared to Steal Tasks Pairing Capable Expected Velocity? – Adjust Story Alignment and Release Plan
  • 27.
    Prepare for TeamPhases Forming – “polite”… team forms, No one is offended – Excitement / Optimism Storming – Honeymoon is over – Resisting Task, Disunity Norming – Team is starting to work together – Constructive Criticism Performing – High performance team – Self Directed
  • 28.
    Iteration 0 Creation ofthe Machine! Environment Setup – Continuous Integration (CI) – IDE – Communication Project Alignment – To other concerns outside the core team Release Plan
  • 29.
    Planning for Success Working with Users – Stories • Acceptance Criteria!!!! – Priorities Project Alignments – DBA / Database – QA – Enterprise Architecture – Management
  • 30.
    Release Plan InternalReleases Every Iteration Planned QA Releases Planned External Releases Initial Breakdown of Stories – Iteration Based on Priority
  • 31.
    Do we needall stories to start? 2 Story Development Approaches – Major of the stories upfront • With the understanding that you will likely discover more – Some stories upfront to prime • With the intent that you’ll have a trailing analyst Either Approach needs an Analyst, BA or PM – To work with feeding the stories into the next iteration
  • 32.
    Alignment With QAOption 1 BA IT 2 Story Refinement Dev IT 1 Code BA IT 3 Story Refinement QA IT 1 Dev IT 2 BA IT 4 Test Plan Code Story Refinement Iteration 1 QA IT 2 Test Plan Dev IT 3 Code BA IT 5 Story Refinement QA IT 1 QA IT 3 Dev IT 4 Execution Plan Test Plan Code QA IT 2 QA IT 4 Iteration 2 Execution Plan Test Plan QA IT 1 QA IT 3 Regression Execution Plan Iteration 3 QA IT 1 & 2 Regression Iteration 4
  • 33.
    Alignment with QAOption 2 Dev IT 1 Code Dev IT 2 Code Iteration 1 Dev IT 3 Code Iteration 2 Dev IT 4 Code Iteration 3 QA IT 1 Test Plan Dev IT 5 Iteration 4 Code Alignment to: – DBA – Enterprise Architects
  • 34.
  • 35.
    What would stopyou from doing a 1 week iteration? 32
  • 36.
    Purpose of Automation Predictability Frequentrepeatable feedback Shorter iterations possible 33
  • 37.
    Iteration 0 Version Control IDESetup IT0 Spikes Build System Continuous Integration Report Mechanism Core Infrastructure Xplanner / JIRA / Wiki Initial Design Strategies Multiple Domains
  • 38.
    Version Control Establish ProjectLayout Questions – Head / Branch – Versioning Strategy? • (3.0.2) Major, Minor, Patch – What to do with Spikes? Version Control Admin / Reports – Automate as much as possible – Cvsblame! – cvscop
  • 39.
    IDE Setup Project Structure Setupcvsignore or svnignore files – What isn’t shared in the project? Plugins – App Server of Choice – Subclipse – PMD – SpringIDE Libraries – Core • Spring, Logging
  • 40.
    IT0 Spikes Using anew tool? – FIT – Selenium – jsUnit Testing Something that is difficult to test? – 3rd Party Machine – External Connection
  • 41.
    Build System Back toProject Structure Ant / Maven / Buildr / Gradle – Must • Be automated • Version • Platform and desktop agnostic • Setup and run tests • Incorporate code coverage – Cobertura • Setup Projects for Team • Provide release builds with documentation – Nice • Promotion capabilities • Flexibility to select IDE
  • 42.
    Continuous Integration Connect BuildSystem into CI – BuildForge – CruiseControl – Hudson Setup up Lava Lamps – http://pragmaticautomation.com/cgi-bin/ pragauto.cgi/Monitor/Devices/ BubbleBubbleBuildsInTrouble.rdoc Email Setup Must Build, Test and provide reports
  • 43.
    Reports Code Quality – Compilation – Unit Test – Code Coverage – Static Analysis Burn Down Reports
  • 44.
    XPlanner / JIRA SetupStory Repository Setup IT0 and IT1 and a Future Stories IT Setup Wiki / Forum
  • 45.
    Initial Design Strategies Standards GeneralUse of Annotations General Upfront patterns (if it make sense) – MVC – Presentation Model – Logging all in Aspects Don’t Spend too much time here! It will evolve.
  • 46.
    Multiple Domains Setup DevBox Understand other domains – Prod, QA Automate the promotion path if possible – How to handle SQL DDL?
  • 47.
    Automate Everything New PersonAdded – Setup in Xplanner, subversion and cruise control Release a new patch – Version Controlled Version stamps Unit tests for Integration Tests – DBUnit or ??? – In Memory DB
  • 48.
    IT0 Opening /Closing Run IT0 like any other Iteration… It is the first! – Opening Meeting • Take all these Stories and Tasks – Break them down – Estimate them • Define the Acceptance Criteria • The User is you! – Closing Meeting • What’s the velocity? • Are there any stories to continue?
  • 49.
    Benefits of Iteration0 feedback on teams ability to estimate team velocity focus on automating everything remove the human factors 46
  • 50.
    ITX The Machine IsReady Code at will!
  • 51.
    Summary Start The Project Well IT 0 Establishes – Working Environment – Communication Channels – Initial Expectations
  • 52.
    Questions  Please Fill Out Surveys kensipe@gmail.com twitter: @kensipe