Date post: | 28-Jan-2015 |
Category: |
Technology |
Upload: | clint-edmonson |
View: | 120 times |
Download: | 3 times |
Agile is as Agile Does Clint EdmonsonEvangelist, Microsoft
Got process?
Businesses live or die bytheir repeatable processes.
Capability Maturity Model Index
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