How To Avoid Fragile Agile - Presentation Transcript
How to Avoid Fragile Agile Mike MacDonagh Flexibility In Context
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
The Agile Manifesto - 2001
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
That is, while there is value in the items on
the right, we value the items on the left more.
Source: http://agilemanifesto.org/ Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan How to Avoid Fragile Agile
Business Agility vs. Agile Development
Business Agility
Reduced time to value / reduced TCO
Reacting quickly to change
Agile Development
Using practices that align with the philosophy of the Agile Manifesto
How to Avoid Fragile Agile
Agile Teams, Agile Projects or Agile Processes It’s all about people, it’s people who build software not processes! Team Project Way of Working undertakes the shapes and follows the applies the How to Avoid Fragile Agile
Lot’s of methods claim to be agile
Some of the well-known agile software development methods:
Agile Modeling
Agile Unified Process
Agile Data Method
DSDM
Essential Unified Process
Extreme Programming
Feature Driven Development
Scrum
As summarized in Wikipedia – Agile Software Development page – 9 March 2009 Historically, “agile” is low-ceremony, people-communication-intensive, light process.
Iterative and incremental
Delivery working product often
High-bandwidth communications
Co-Located Teams
Light / low ceremony
no heavy documents
no long status meetings
Empower and trust the team
Collaborative and self organizing
Test-driven
Empirical and objective
Shared Characteristics How to Avoid Fragile Agile
But nobody uses them out of the box
Some of the well-known agile software development methods:
Agile Modeling
Agile Unified Process
Agile Data Method
DSDM
Essential Unified Process
Extreme Programming
Feature Driven Development
Scrum
Agile Teams build Agile Ways-of-Working from Agile Practices
We’ll use:
Sprints, Product Backlog and self-organizing teams from Scrum
Use cases, components, and the risk-driven lifecycle from EssUP
Some agile modeling techniques
Pair programming and test-first development from XP
Our local reporting and governance practices
… .
How to Avoid Fragile Agile
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
Changing a way of working is difficult The best agile teams balance the needs of the individual, the team and the organization I need to get things done Senior Manager Practitioner There must be predictability, visibility and consistency How to Avoid Fragile Agile
Resourcing
All competencies required to build working software need to be in the team
Agile teams stay together
How to Avoid Fragile Agile Architect Analyst Developer Developer Tester Tester Working, Tested Software
Geographical Distribution
High bandwidth communication is difficult
Culture/Language issues
Timezones
Separation
Holistic Communication
Use all channels of communication
Face to face meetings
Video Conference
Instant Messaging
RSS feeds
Twitter/Yammer
Email
Effective teams need to work together
How to Avoid Fragile Agile
Scalability: Agility alone is not always enough
Agile home ground:
Low criticality
Senior developers
Requirements change very often
Small number of developers
Culture that thrives on chaos
Plan-driven home ground:
High criticality
Junior developers
Requirements don't change too often
Large number of developers
Culture that demands order
What about those large, distributed, or safety critical projects? Low - Innovation High - Application Team Individual Control Focus The Artist The Event The Engineer The Production Line How to Avoid Fragile Agile
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Using Agile practices effectively
Agile Governance Framework
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
The characteristics of an agile practice description
Lightweight – focus on the essentials
Adaptable – can be tuned on the fly
Extensible – can grow as needed
Iterative – can be applied in short time-boxes
Ensure quality – verification and testing are built in
Focus on working software – help with the team’s main task
Focused – capture one aspect of software development
Pragmatic – provide useful advice
Play well with other practices
Starting with the essentials makes the practice easy to learn and adopt. How to Avoid Fragile Agile
There are different kinds of practice Iterative Essentials Scrum Essentials Use-Case Essentials User Stories Architecture Essentials Component Essentials Test-Driven Develop’t QA Essentials Process Essentials PSP Agile Modeling Team Essentials Unified Process Lifecycle Scrum-of -Scrums Use-Cases for Service Def’n Model- Driven Arch Comp’s for Re-Use Practice Harvesting Org Process Imp Essential UML Distributed Team Virtual Team Comp’s for .Net … … … … Technical practices Social and other cross-cutting practices Measurem’t Essentials How to Avoid Fragile Agile Peer Practice Extension Practice Key:
Processes are just collections of practices Peer Practice Extension Practice Key: Iterative Essentials Scrum Essentials Use-Case Essentials User Stories Architecture Essentials Component Essentials Test-Driven Develop’t QA Essentials Process Essentials PSP Agile Modeling Team Essentials Unified Process Lifecycle Scrum-of -Scrums Use-Cases for Service Def’n Model- Driven Arch Comp’s for Re-Use Practice Harvesting Org Process Imp Essential UML Distributed Team Virtual Team Comp’s for .Net Measurem’t Essentials … … … … Social and other cross-cutting practices Technical practices How to Avoid Fragile Agile Agile Process Descriptions will change and evolve over time
A Practice addresses a particular concern
A Practice provides a set of activities and work products to give specific value to particular stakeholders.
Promotes Agility with the RIGHT level of formality
A small set of guidance to meet a specific need.
Minimal information and documentation – just enough
Presented with cards and guidelines.
We have a set of practices that you can use as a starting point
What is a practice? How to Avoid Fragile Agile Iterative
Scaling Practice Formality
Deal with things in a way that is appropriate given the risk
1 2 3 4 5 6 Project Requirements Thermostat How to Avoid Fragile Agile Small Project New scope area Business stakeholders still unclear on desired capability Tiny, one-person project Change to an existing system Stakeholders clear on what they want Huge new endeavour New scope area Nobody really knows what they want £m’s at stake Simple ‘post-it’ list Simple feature list with outline Use Case Model Vision, Full Use-Case Model
Practices enable projects to run the way they need to But how can we manage these projects if they all have different processes? Way of Working = A subset of the practices in the practice library How to Avoid Fragile Agile Use Case Component Architecture Iterative Project A Declarative Requirements Waterfall Architecture Project B Architecture Iterative User Story Project C
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Using Agile practices effectively
Agile Governance Framework
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
Practice Architecture is Important The kernel ensures common understanding across teams in a minimal way How to Avoid Fragile Agile Project A Project B Project C
The kernel provides…. … a map of the territory How to Avoid Fragile Agile Understand the Need Ensure Stakeholder Satisfaction Accept the System Specify the System Shape the System Implement Software Test the System Release the System Establish Project Steer Project Support Team Conclude Project
The kernel provides…. … an understanding of the skills needed How to Avoid Fragile Agile Developer Project Lead Customer Representative Analyst Tester
Opportunity Backlog Project Specified System Implemented System Executable System Way of Working Team The kernel provides…. … and a list of things to progress. How to Avoid Fragile Agile
Defining a lifecycle milestones using the kernel Specified System Opportunity Problem Understood Viability Established Problem Addressed Benefit Accrued Value Established Opportunity Identified Executable System Assembled Functionality Validated Ready to Deploy Accepted Approach Validated Operational Key Essential Recommended Project Underway Risks Under Control Development Complete Responsibilities Handed Over Milestones Agreed Closed Conceived Stable Correct Testable Shared Fulfilled Implemented System Approach Selected Interfaces Stable Integrated Production Quality Release Available Approach Confirmed Released Backlog Set Up Change Under Control Quality Criteria Satisfied Sufficient Work Completed Driving Work Outstanding Items Handed Over Way of Working Team Mission Defined Focused Collaborating Formed Disbanded Gaps Analyzed Essentials In Place Embedded Options Explored Handed Over Unified Process Lifecycle = Inception Phase How to Avoid Fragile Agile up up
Defining a lifecycle milestones using the kernel Specified System Opportunity Problem Understood Viability Established Problem Addressed Benefit Accrued Value Established Opportunity Identified Executable System Assembled Functionality Validated Ready to Deploy Accepted Approach Validated Operational Key Essential Recommended Project Underway Risks Under Control Development Complete Responsibilities Handed Over Milestones Agreed Closed Conceived Stable Correct Testable Shared Fulfilled Implemented System Approach Selected Interfaces Stable Integrated Production Quality Release Available Approach Confirmed Released Backlog Set Up Change Under Control Sufficient Work Completed Driving Work Outstanding Items Handed Over Way of Working Team Mission Defined Focused Collaborating Formed Disbanded Gaps Analyzed Essentials In Place Embedded Options Explored Handed Over Quality Criteria Satisfied Unified Process Lifecycle = Elaboration Phase How to Avoid Fragile Agile up up
Defining a lifecycle milestones using the kernel Specified System Opportunity Problem Understood Viability Established Problem Addressed Benefit Accrued Value Established Opportunity Identified Executable System Assembled Functionality Validated Ready to Deploy Accepted Approach Validated Operational Key Essential Recommended Project Underway Risks Under Control Development Complete Responsibilities Handed Over Milestones Agreed Closed Conceived Stable Correct Testable Shared Fulfilled Implemented System Approach Selected Interfaces Stable Integrated Production Quality Release Available Approach Confirmed Released Backlog Set Up Change Under Control Quality Criteria Satisfied Sufficient Work Completed Driving Work Outstanding Items Handed Over Way of Working Team Mission Defined Focused Collaborating Formed Disbanded Gaps Analyzed Essentials In Place Embedded Options Explored Handed Over Unified Process Lifecycle = Construction Phase How to Avoid Fragile Agile up up
Defining a lifecycle milestones using the kernel Specified System Opportunity Problem Understood Viability Established Problem Addressed Benefit Accrued Value Established Opportunity Identified Executable System Assembled Functionality Validated Ready to Deploy Accepted Approach Validated Operational Key Essential Recommended Project Underway Risks Under Control Development Complete Responsibilities Handed Over Milestones Agreed Closed Conceived Stable Correct Testable Shared Fulfilled Implemented System Approach Selected Interfaces Stable Integrated Production Quality Release Available Approach Confirmed Released Backlog Set Up Change Under Control Sufficient Work Completed Driving Work Outstanding Items Handed Over Way of Working Team Mission Defined Focused Collaborating Formed Disbanded Gaps Analyzed Essentials In Place Embedded Options Explored Handed Over Quality Criteria Satisfied Unified Process Lifecycle = Transition Phase How to Avoid Fragile Agile up up
Kernel and Governance The kernel capturing the essence of software development. How to Avoid Fragile Agile Opportunity Backlog Project Specified System Implemented System Executable System Way of Working Team Target State Actual State
The kernel brings all the practices together How to Avoid Fragile Agile Practice Each practice contains practice-specifics to add to the kernel. The kernel defines a very small “empty process” Kernel Practices “slot” into the common kernel. Way of Working
What’s your kernel?
Add some practices to create your minimal process
Add practices into the kernel to create different starter packs or mandate specific practices. How to Avoid Fragile Agile up up
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
Agile Pre-Requisites: Cross-Functional Teams “ One-stop shop” for working software Customer Architect Analyst Developer Developer Tester Tester Working, Tested Software How to Avoid Fragile Agile
Agile Pre-Requisites: Team Platform
Configuration Management
Automated daily builds
Restore previous builds
Automated Quality Assurance
Unit testing
Regression Testing
Test Coverage
Defect Tracking
Task Tracking
Communication
Collaboration
How to Avoid Fragile Agile
Agenda
What is Agility?
What can make Agile fragile?
Flexibility in Context
Agile pre-requisites
Smart Disciplined Agility
How to Avoid Fragile Agile
Summary: Getting the wheel’s turning
Get the right team
Cross-Functional Team
Agile Team Working
Using the right technical practices
From Iterative Planning to Development Sprints
From Use-cases to Scenario-Driven Development
Test-Driven Development
On the right development platform
Continuous Integration
Automated Testing
Governed Effectively
A common kernel
How to Avoid Fragile Agile
Smart, Disciplined Agility!
• Agility – A rapid step-change in speed and responsiveness
• Disciplined – Without loss of reliability, quality or sustainability
• Smart – Putting the right amount of effort into the right things
0 comments
Post a comment