Agile is as Agile Does

Post on 28-Jan-2015

119 views 3 download

Tags:

description

Lately that the terms Agile and Lean have been thrown around casually with little disregard for what they truly mean and how they can be applied correctly. Join us in this session for a lively, interactive discussion about what it means to be lean and agile and how we can incorporate the principles and practices from each of these industry movements to help us build world class software.

Transcript of Agile is as Agile Does

Agile is as Agile Does Clint EdmonsonEvangelist, Microsoft

Got process?

Businesses live or die bytheir repeatable processes.

Defined vs. Empirical Processes

How would you code an algorithm to keep this room at a constant temperature for the entire day? (What variables would you consider?)

• Defined processes try to predict the future• Empirical processes adapt to the future

– Frequent inspection – Just in time planning

Lean

Eliminate waste

• Poor requirements• Unnecessary functionality, code, documentation• Delays in the development process• Slow or poor internal communication• Bureaucracy

Empower the team to recognize and eliminate it!

Amplify learning

• Accept that software development is a continuous learning process

• Iterate to learn and adapt

Fail early and fail often!

Decide as late as possible

• Change happens• Don’t fight it• Accept it and adapt to it

Each iteration should still have an explicit planning phase.

Deliver value as fast as possible

• Embrace continuous deployment• Keep iterations short, short, short!

Relish feedback and evolve with the next iteration

Empower the team

• Avoid command and control management style• Avoid rigidly defined roles• Team should have direct access to the customer• Team is responsible for “done done”

Give them responsibility and accountability and they will take ownership.

Build integrity in

• Build in integrity checks – unit tests become regression tests

• Refactor aggressively to retain emergent architectural integrity

There should be NO code you’re afraid to touch.

See the whole

• Understand the whole domain and problem space

• Segregate along functional boundaries instead of cross cutting technical concerns

• Cultivate high value communication

Provide the team with a higher purpose to work towards

Agile

What is Agile?

Agile

Scrum XPFDD Others

TDD

BDD

CI

Burn-down Refactor

StandUps

ProductBacklog

SprintBacklog

Domain Model

Feature Team

Pairwise Programming

Agile is a movement…

represented by a set of methodologies…

comprised of a set a best practices.

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

• Individuals and interactions over processes and tools• Working software over comprehensive documentation• Customer collaboration over contract negotiation• Responding to change over following a plan

Agile principles

1. Customer satisfaction by rapid delivery of useful software

2. Welcome changing requirements, even late in development

3. Working software is delivered frequently (weeks rather than months)

4. Working software is the principal measure of progress

5. Sustainable development pace

6. Close, daily co-operation between business people and developers

Agile principles

7. Face-to-face conversation is the best form of communication (co-location)

8. Projects are built around motivated individuals, who should be trusted

9. Continuous attention to technical excellence and good design

10. Simplicity

11. Self-organizing teams

12. Regular adaptation to changing circumstances

Agile Practices(by priority)

Business Value

• Customer representation on team• Evocative vision document• User stories• Use cases• Prioritized backlog• Feature teams

Time to market

• Iterative development• Continuous integration• Release often

Quality to market

• Test driven requirements• Test driven development (Red, Green, Refactor)• Done Done state• Pair programming

Flexibility

• Emergent/evolutionary architecture and design• Refactoring (Green code only)• Self-organizing teams

Visibility

• Information radiators • Project backlog• Daily stand-up meetings• Customer demos

Cost reduction

• Cross-functional teams• Co-located teams• Simple design (YAGNI)

Product lifetime

• Collective code ownership• Coding standards• Automated functional testing• Retrospectives• Sustainable pace

Supporting practices

• Training• Coaching & mentoring• Workshops• Reading circle• Planning poker• 2 pizza teams• Engaging the community

Success factors

• Freedom to change• Energized team• Communication with customer• Collaboration• Attention to quality• Incrementalism• Automation• Continuous improvement

Anti-patterns

• No definitive process• Guestimating & estiquotes• Huge cases• Technical debt• Egos• Scrummerfall• Scrumdamentalism• Large, complex, high risk projects

Agile Adoption

a “Agile Development: Mainstream Adoption Has Changed Agility – Jan 2010”, Forrester

“Agile processes have not only gained increasing adoption levels; they have also rapidly joined the mainstream of development approaches.”

Agile Modeling

Feature Drive Development (FDD)

Lean

Waterfall

Test Driven Development (TDD)

Extreme Programming (XP)

Iterative

Scrum

17.4%

18.3%

26.1%

32.8%

38.2%

38.2%

46.9%

83.8%

What Methodologies are You Using? b

Agile Adoption

a “Make Agile Lean – Dec 2008”, Forresterb “Microsoft ALM Consulting Day – Mar 2009”, Forrester presentation; c “State of Agile Development – July 2008”, Version One

“In the past five years, Forrester has seen a growing interest in the adoption of Agile processes. This interest is slowly changing to adoption. In 2008, even shops that weren’t moving immediately to Agile processes began to take baby steps in that direction.” a

Coding Standards

Refactoring

Automated Builds

Continuous Integration

Unit Testing

Digital Taskboard

Retrospectives

Burndown

Release Planning

Daily Standup

Iteration Planning

57%

59%

62%

65%

77%

35%

59%

60%

72%

75%

86%

Agile Practices Survey c

20082007

Scrum

SCRUM

• Simple and lightweight framework for lean and agile practices

• Time-boxed events to control chaos• Simple, straight forward roles for accountability• Transparent artifacts• Empirical inspection and adaptation to reach

goals• Simple rules that facilitate complex emergent

behavior

Events• Sprint

– Iterative development period not to exceed one month

• Sprint planning meeting– 8 hours– Prioritize product backlog and select items for the sprint backlog

• Daily stand up meeting– 15 minutes, – What was accomplished since last meeting?– What are you doing today?– Do you have any impediments?

• Sprint Review meeting– 4 hours– Review what was completed and not completed during spring– Demo the completed work with stakeholders

• Sprint retrospective– 3 hours– What went well?– What could be improved?

Roles

• Product owner• Team• Scrum master

Artifacts

• Product backlog• Spring backlog• Burn down chart

References

Agile in a Flash – Langr and Ottinger

Agile Adoption Patterns - Elssamadisy

Succeeding with Agile – Cohn

Agile Project Management with Scrum – Schwaber

The Agile Sumurai – Rasmusson

User Stories Applied – Cohn

Clint Edmonson

http://www.notsotrivial.net

clinted@microsoft

@clinted