34
Running Agile on a non-agile Environment Nuno Caneco - 2017/01/12

Running agile on a non-agile environment

Embed Size (px)

Citation preview

Page 1: Running agile on a non-agile environment

Running Agile on a non-agile Environment

Nuno Caneco - 2017/01/12

Page 2: Running agile on a non-agile environment

BioNuno Caneco

Software Engineer for 13+ years

Scrum Practitioner since 2008

Scrum Master since 2009

Leading Software Projects since 2006

Page 3: Running agile on a non-agile environment

Motivation

Share the experience from executing a project using Agile under a Waterfall contract

Page 4: Running agile on a non-agile environment

How it startedFixed scope

Fixed delivery date(based on high level estimations)

Waterfall-based Project Management

Page 5: Running agile on a non-agile environment

Project Management FoundationsSchedule

Scope Budget

Quality

ResourcesRisk

Contract

Managed by Contractor (PM)

Page 6: Running agile on a non-agile environment

Agile & Contracts

Schedule

Scope Budget

Quality

ResourcesRisk

Fixed Contract:

Fixed Budget

Fixed Scope

Fixed Schedule

Waterfall Project Management

The Agile way:

Flexible Scope

Flexible Schedule

Flexible Budget

Page 7: Running agile on a non-agile environment

Internal Agile - The OpportunityUsing Agile would hopefully:

Improve the flexibility within the Team

Improve resource and time

management

Steady and frequent checkpoints

Small and frequent victories

Page 8: Running agile on a non-agile environment

Façades

SupplierCustomer

Sponsor

PM

Sponsor

PM / PO ScrumMaster

TTTeam

Waterfall AgileWaterfall & Agile

Page 9: Running agile on a non-agile environment

Combining Waterfall with Agile

Requirements

Design

Implementation

Verification

Waterfall Façade Agile Façade Activities

● Close high level specs with Customer● Epic Backlog● Initial Product Backlog

● Refine Product Backlog● Initial Mockups● Sprint 0 - project structure and first lines of code

● Sprints● Backlog Grooming● Internal QA & Demos

● Acceptance tests with customer● Bug fixes

Page 10: Running agile on a non-agile environment

RequirementsPhase

Page 11: Running agile on a non-agile environment

Preparing the Backlogs

Functional Specification● Modules

○ Features

User Acceptance Tests● High level UAT

(not that much detailed at this point)

Waterfall Façade Agile Façade

Epic Backlog

Product Backlog

Modules mapped to Epics

Features mapped to User Stories

UAT mapped to Acceptance Criteria

Page 12: Running agile on a non-agile environment

Epic Backlog PrioritizingPrioritize on Epics based on the following criteria:

1.Dependency to other Epics/Stories

Foundational epics go first

Epics that are dependencies to other epics go first

2.Risk & Impact

High risk + High Impact Epics are likely to go first

"Bread and butter" epics are likely to go last

Page 13: Running agile on a non-agile environment

At the End of Requirements PhaseThe Team had:

A Functional Specification approved by the customer

A high level UAT document approved by the customerand

A detailed and prioritized Epic Backlog

T-Shirt size estimation

A Product Backlog with:Detailed functional description

High level Acceptance Criteria

No User Story estimation

Page 14: Running agile on a non-agile environment

Implementation Phase

Page 15: Running agile on a non-agile environment

InvariantsSetup the Team

Front-end Engineers ; Back-end Engineers ; Lead Architect

2-week Sprints

Starting on Monday ; Ending on Friday (by agreement with the Team)

Recurring appointments on the agenda:

Sprint Planning

Daily meetings

Sprint Demo

Sprint Retrospective

Page 16: Running agile on a non-agile environment

Sprint Loop

Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 Day 9 Day 10

Sprint Planning[Team + SM]

Backlog Grooming (Mid/long term)[SM + PO ; Team(optional)]

Mock-ups & User Store detail grooming [PO + SM]

Backlog Grooming (Sprint n+1)[Team + SM + PO]

Sprint Demo[Team + SM + PO + PM]

Sprint Retrospective[Team + SM]

Sprint n

Page 17: Running agile on a non-agile environment

Sprint Planning

Product Backlog Sprint BacklogStories are split into Tasks

Each Task:

Gets estimated in hours(Estimation > 12h → Split the task)

Is pre-assigned to a Team Member

Tax Tasks:

Backlog Grooming

Daily meetings

Sprint Demos

(...)

● Story ID● Description● Estimation [Story Points]● Mock ups

● Task ID● Story ID● Task Type● Description● Assignee● Estimation [h]● Time tracking

Page 18: Running agile on a non-agile environment

Definition of DoneExamples:

Code on Source Control must compile and run by hitting F5

Tests must be implemented and passing

Database project must be updated

Page 19: Running agile on a non-agile environment

And, then by Sprint #4...

We need a working BETA version in 1 month!

Page 20: Running agile on a non-agile environment

Time to Adapt!Identify the user stories that become critical for the BETA

Enter Kanban mode for 2 sprints to:a. Finish the features

b. Install the system @ PROD

Sprint #1 Sprint #2 Sprint #3 Sprint #4 Sprint #5 Sprint #6 Sprint #7 Sprint #8 (...)

Scrum Scrum Scrum Scrum Scrum Kanban Kanban Scrum (...)

Page 21: Running agile on a non-agile environment

BETA went well

Page 22: Running agile on a non-agile environment

QA & Testing

Page 23: Running agile on a non-agile environment

Adding a QA to the TeamAt some point, we decided to bring in a QA into the team:

Iterate towards the final UAT document

Test the outcome of Previous Sprint according to UAT document

Report bugs

Page 24: Running agile on a non-agile environment

QA loop

Sprint n

QA: Test fixed bugs

QA: Run UAT tests on new storiesTeam: Fix issues reported by QA (within saved capacity)

QA: Iterate on UAT document

The QA Loop was integrated with the Team Loop

Page 25: Running agile on a non-agile environment

It was nice

The bugs were found and fixed sooner!

Page 26: Running agile on a non-agile environment

Show me some numbers!

Page 27: Running agile on a non-agile environment

Some numbers

17x 2-week Sprints

5 software engineers (backend and frontend)

1 QA (non-permanent)

~210.000 lines of code

From which 37.000 are tests (~12%)

4 software applications + 1 common library

Page 28: Running agile on a non-agile environment

Velocity, capacity and time

Page 29: Running agile on a non-agile environment

Lessons learned

Page 30: Running agile on a non-agile environment

ProsGuided and steady workflow

Regular sense of completion at the end of each Sprint

Quickly respond to change

Pre-align epics to Sprints

Waterfall Status Reports became really easy

Just use the data from Sprint Demos

Deallocations and inefficiencies become visible

Improved the Team buy-in on the Project

Page 31: Running agile on a non-agile environment

ConsA bit of Management overhead

Map Scrum <--> Waterfall

Higher allocation of QA Team MembersEarly allocation to the Project

Page 32: Running agile on a non-agile environment

Lessons LearnedIt's easier to run Internal Scrum if the Management buys the strategy

And our Management did support this strategy

Using Kanban for stability Sprints

Improved the flexibility to fix issues and implement quick-but-needed features

If properly aligned, the Waterfall artifacts can be mapped to/from Agile artifacts with minimal effort

Technical Specification → Epic Backlog and Product Backlog

Sprint Demos & Sprint Backlog → Status Reports

Acceptance Criteria → User Acceptance Test

Page 33: Running agile on a non-agile environment

But most importantAlways remember that the customer did NOT buy Agile

Keep the

Façade Keep the fixed scope and time to the customer

Allow some internal

flexibility

Page 34: Running agile on a non-agile environment

Thank you