Module 1. Born to fail
- Why projects are failing
- Waterfall & traditional software development
Module 2. Agile
Module 3. Scrum
Module 4. Writing high quality software with Agile
- XP
- How Google Write Software
Module 5. Do's and dont's
- How Scrum might fail
- Myths and realities
Module 6. How to kick off Scrum
High Quality Software Development with Agile and Scrum
1. HIGH QUALITY SOFTWARE
DEVELOPMENT
WITH AGILE & SCRUM
W I T H P RA C T I C A L
TIPS AND TRICKS
LEMİ ORHAN ERGİN
SENIOR SOFTWARE ENGINEER
GITTIGIDIYOR / EBAY
High Quality Software Development with Agile & Scrum @ March 2012
2. About the author
Lemi Orhan Ergin
Senior Software Engineer
GittiGidiyor / eBay
Projects involved:
E-Commence Site For Mould Industry (e-Tool) - BYM
Legacy Product Information Management System (SPICE) - Sony
Brand-New Product Information Management System (SPIDER) - Sony
Mebs Taburu Yönetim Sistemi (MEBSİS) - Turkish Air Forces
Marketing sites for all European Countries (ODW) - Sony
Web Experience Project / Common Toolbar Project (WEP) - Sony
Core Backend Services & Components Project (Ox, Commons) - Sony
Product Data Delivery Engine / Hub & Client (Sparrow, Octopus) - Sony
Content Delivery and Aggregation Services (Xula) - Sony
Education:
B.Sc. Marmara University, Computer Science Engineering, 1997 – 2002
M.Sc. Marmara University, Computer Science Engineering, 2002 – 2005
High Quality Software Development with Agile & Scrum @ March 2012
3. This presentation is based on
The author's experience in:
Certified Scrum Master since 2009 (trained by Jim Coplien)
Played scrum master role for more than 1 year
Taking lead on development teams, including Scrum teams
Participated in Scrum teams since 2008 (for more than 50 sprints)
Q&A session with Mitch Lacey on Oct 12th, 2010 CSM training with Jim Coplien on Jan 31st, 2009
High Quality Software Development with Agile & Scrum @ March 2012
4. Caution
There is no one true method
of software development
Agile is not a religion
There's no scientific way to
prove that Agile is any better
There is no silver bullet
We are not resources, we are humans.
Therefore we love doing our job by following human-centric
methodologies, like Agile
High Quality Software Development with Agile & Scrum @ March 2012
5. Warning
Be ready to change your culture
Be ready for more communication with
your teammates
Be ready to observe your environment and
improve
Be ready to learn how big companies
develop software
Be ready for tons of new questions to ask
The Boy Scouts have a rule: "Always leave the
campground cleaner than you found it."
High Quality Software Development with Agile & Scrum @ March 2012
6. Key Concepts We Will Cover
● Module 1. Born to fail
● Why projects are failing
● Waterfall & traditional software development
● Module 2. Agile
● Module 3. Scrum
● Module 4. Writing high quality software with Agile
● XP
● How Google Write Software
● Module 5. Do's and dont's
● How Scrum might fail
● Myths and realities
● Module 6. How to kick off Scrum
High Quality Software Development with Agile & Scrum @ March 2012
7. Module 1. Born to fail
http://chan4chan.com/archive/87929/Windows_-_A_fatal_exception_0E_has_occurred
High Quality Software Development with Agile & Scrum @ March 2012
8. Projects are failing!
Gardner Institute Tata Consultancy 2007
● 74% failing ● 62% failed to meet their schedules
● 51% of it exceeds budget ● 49% suffered from budget overruns
Oxford University (Saur & Cuthbertson, 2003) ● 47% had higher maintenance costs
● 16% successful ● 41% failed to deliver the expected
business value and ROI
● 74% challenged
● 33% file to perform against expectations
● 10% abandoned
Standish Group
If building engineers built buildings with the same care as software
engineers build systems, the first woodpecker to come along would
be the end of civilization as we know it.
“Top 10 Reasons Why Systems Projects Fail”, Dr. Paul Dorsey
High Quality Software Development with Agile & Scrum @ March 2012
9. Project cancelled
Size of project Early On-Time Delayed Cancelled Sum
1 function point 14.68% 83.16% 1.92% 0.25% 100.00%
10 function points 11.08% 81.25% 5.67% 2.00% 100.00%
100 function points 6.06% 74.77% 11.83% 7.33% 100.00%
1,000 function points 1.24% 60.76% 17.67% 20.33% 100.00%
10,000 function points 0.14% 28.00% 23.83% 48.00% 100.00%
100,000 function points 0.00% 13.67% 21.33% 65.00% 100.00%
Average 5.53% 56.94% 13.71% 23.82% 100.00%
Table 1: Percentage of projects early, on-time, late, canceled
(from Patterns of Software Systems Failure and Success, by Capers Jones)
High Quality Software Development with Agile & Scrum @ March 2012
10. Failing costs!
Annual cost to US economy of poor quality software: $60B
US NIST Report 7007.011, May 2002.
Equals to US millitary spending in Iraq and Afghanistan wars
http://www.huffingtonpost.com/2011/08/30/military-spending-waste_n_942723.html
Typical industrial / commercial software development:
6-30 faults delivered / 1000 lines of software
(1M lines: 6000-30,000 faults on delivery)
Pfleeger& Hatton, IEEE Computer, pp33-42, February 1997.
High Quality Software Development with Agile & Scrum @ March 2012
11. The Current State of the Software Industry
Ever higher complexity, continuous change, super fast markets
Large Scale systems are now the norm
Low qualified labour is not the answer for creating high-value
products
The software industry needs Technical Leaders, and these will
not just pop up in an ad-hoc way
Projects live and die because of Technology, People and
Processes; universities typically only teach the first.
Software projects are more than developing software. It has tens
of steps, from getting requirements to give official support.
High Quality Software Development with Agile & Scrum @ March 2012
12. Why Systems Projects Fail
7th November 1940. Tacoma Narrows suspension bridge, in Puget Sound, Washington
http://www.answers.com/topic/galloping-gertie-large-image#ixzz1q2uRmnLK
●
Lack of User Involvement
●
Lack of Transparency
●
Long or Unrealistic Time Scales
●
Poor or No Requirements
●
Bad Scope Management
●
Poor Development Quality
●
Poor Testing & Quality Assurance
●
Inaduequate Development Methodology
●
Poor Technical Knowledge and Experience
High Quality Software Development with Agile & Scrum @ March 2012
13. How We Develop Software
Why software projects are failing?
High Quality Software Development with Agile & Scrum @ March 2012
14. The Horizon of Predictability
High Quality Software Development with Agile & Scrum @ March 2012
15. The Ghost of Uncertainty
Uncertainty is part of every innovative and
creative development process
High Quality Software Development with Agile & Scrum @ March 2012
17. Features of a Waterfall Model
A waterfall model is easy to follow.
It can be implemented for any size project.
Every stage has to be done separately at the
right time so you cannot jump stages.
Documentation is produced at every stage of a
waterfall model allowing people to understand
what has been done.
Testing is done at every stage.
High Quality Software Development with Agile & Scrum @ March 2012
18. Assumptions of Waterfall Model
A waterfall model helps find problems earlier on
which can cost a business less than if it was
found later on.
Requirements will be set and these wouldn't be
changed.
As everything is documented a new team
member can easily understand what's to be
done.
Implementers have to follow the design
accurately
High Quality Software Development with Agile & Scrum @ March 2012
19. Realities of Waterfall Model
If requirements may change, the Waterfall
model cannot work.
It is impossible to make one stage of the
projects life cycle perfect.
Difficult to estimate time and cost for each
stage of the development process.
Constant testing of the design is needed.
DON'T
DO
IT
http://www.vvork.com/?p=4872
High Quality Software Development with Agile & Scrum @ March 2012
20. Original Paper of Waterfall Model
MANAGING THE DEVELOPMENT OF
LARGE SOFTWARE SYSTEMS
Dr. Winston W. Royce, 1970
The implementation is risky and invites failure
High Quality Software Development with Agile & Scrum @ March 2012
21. Original Adviced Waterfall Model
In my experience, however, the simpler method has never worked on large software development
efforts and the costs to recover far exceeded those required to finance the five-step process listed.
High Quality Software Development with Agile & Scrum @ March 2012
22. Assumptions
Traditional Agile
Traditional
●
Cusyomer knows what he wants
●
Customer knows what he wants ●
Customer discovers what he wants
●
Engineer knows how to build it
●
Engineer knows how to build it ●
Engineer discovers how to build it
●
Nothing changes along the way
●
Nothing changes along the way ●
Things change along the way
The Agile Paradigm emraces
change, unpredictability and
unforseen complexity as
inescapable constants in all
product development
High Quality Software Development with Agile & Scrum @ March 2012
24. Module 2. Agile
High Quality Software Development with Agile & Scrum @ March 2012
25. The Agile Manifesto
Individuals and
Individuals and over Process and tools
Process and tools
interactions
interactions
Comprehensive
Comprehensive
Working software
Working software over
documentation
documentation
Customer
Customer over Contract negotiation
Contract negotiation
collaboration
collaboration
Responding to change
Responding to change over Following a plan
Following a plan
Source: www.agilemanifesto.org
High Quality Software Development with Agile & Scrum @ March 2012
26. Agile Principles - I
● Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software
● Welcome changing requirements, even late in development. Agile
processes harness change for the customer's competitive advantage.
● Deliver working software frequently, from a couple of weeks to a
couple of months, with a preference to the shorter timescale.
● Business people and developers must work together daily
throughout the project.
● Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job done.
● The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.
High Quality Software Development with Agile & Scrum @ March 2012
27. Agile Principles - II
● Working software is the primary measure of progress.
● Agile processes promote sustainable development. The
sponsors, developers, and users should be able to maintain a
constant pace indefinitely.
● Continuous attention to technical excellence and good
design enhances agility.
● Simplicity -the art of maximizing the amount of work not done-
is essential.
● The best architectures, requirements, and designs emerge from
self-organizing teams.
● At regular intervals, the team reflects on how to become
more effective, then tunes and adjusts its behavior accordingly.
High Quality Software Development with Agile & Scrum @ March 2012
29. The Agile Practices Familiy
● Extreme Programming (XP)
● Crystal
● Dynamic Systems Development Method (DSDM)
● Test Driven Development (TDD)
● Feature Driven Development (FDD)
● Essential Unified Process
● Scrum
● Kanban
● Lean
High Quality Software Development with Agile & Scrum @ March 2012
30. Time-boxed Activities
Task are broken down into small
increments (2-4 weeks),
in which the team works through
a full development lifecycle
●
Minimizes the overall project risk
• Planning is easier with frequent releases
• Allows project to adapt to changes quickly
High Quality Software Development with Agile & Scrum @ March 2012
31. Empowered Teams
Agile Teams are small (7 ± 2),
Cross-functional & Self-Organizing
High Quality Software Development with Agile & Scrum @ March 2012
32. Collaboration
Agile Working Culture
High Quality Software Development with Agile & Scrum @ March 2012
33. Focus on End-User and Customer
We tend to build the wrong things
Source: Standish Group Study Report
High Quality Software Development with Agile & Scrum @ March 2012
34. Customer in The Loop
Agile teams contain (or have direct access to) a
customer representative in order to optimized ROI
High Quality Software Development with Agile & Scrum @ March 2012
37. Agile Software Development
Agile is an iterative and adaptive approach to
software development,
performed in a highly collaborative manner by self-
organizing teams,
with just enough ceremony that produces high
quality software in a cost effective and timely
manner,
which meets the changing needs of its
stakeholders.
High Quality Software Development with Agile & Scrum @ March 2012
38. Software Craftsmanship
Software Craftsmanship is an DISCIPLINE in software
development that emphasizes the coding skills of the
software developers themselves. It is a response by
software developers to the perceived ills of the mainstream
software industry, including the prioritization of financial
concerns over code quality.
High Quality Software Development with Agile & Scrum @ March 2012
http://parlezuml.com/softwarecraftsmanship/
39. Software Craftsmanship Manifesto
http://manifesto.softwarecraftsmanship.org
High Quality Software Development with Agile & Scrum @ March 2012
40. Module 3. Scrum
High Quality Software Development with Agile & Scrum @ March 2012
41. Scrum in 100 words
•Scrum is an agile process that allows us to focus on
delivering the highest business value in the shortest
time.
•It allows us to rapidly and repeatedly inspect actual
working software (every two weeks to one month).
•The business sets the priorities. Teams self-organize
to determine the best way to deliver the highest
priority features.
•Every two weeks to a month anyone can see real
working software and decide to release it as is or
continue to enhance it for another sprint .
High Quality Software Development with Agile & Scrum @ March 2012
42. Scrum origins
• Jeff Sutherland
• Initial scrums at Easel Corp in 1993
• IDX and 500+ people doing Scrum
• Ken Schwaber
• ADM
• Scrum presented at OOPSLA 96 with Sutherland
• Author of three books on Scrum
• Mike Beedle
• Scrum patterns in PLOPD4
• Ken Schwaber and Mike Cohn
• Co-founded Scrum Alliance in 2002,
initially within the Agile Alliance
High Quality Software Development with Agile & Scrum @ March 2012
43. Scrum has been used by:
•Microsoft •Intuit
•Yahoo •Nielsen Media
•Google •First American Real Estate
•Electronic Arts •BMC Software
•Lockheed Martin •Ipswitch
•Philips •John Deere
•Siemens •Lexis Nexis
•Nokia •Sabre
•IBM •Salesforce.com
•Capital One •Time Warner
•BBC •Turner Broadcasting
•Oce
High Quality Software Development with Agile & Scrum @ March 2012
44. Scrum has been used for:
• Commercial software •Video game development
• In-house development •FDA-approved, life-critical
systems
• Contract development
• Fixed-price projects •Satellite-control software
• Financial applications •Websites
• ISO 9001-certified •Handheld software
applications •Mobile phones
• Embedded systems •Network switching applications
• 24x7 systems with
99.999% uptime
•ISV applications
requirements •Some of the largest
applications in use
• the Joint Strike Fighter
High Quality Software Development with Agile & Scrum @ March 2012
45. Characteristics
• Self-organizing teams
• Product progresses in a series of month-long “sprints”
• Requirements are captured as items in a list of
“product backlog”
• No specific engineering practices prescribed
• Uses generative rules to create an agile environment
for delivering projects
• One of the “agile processes”
High Quality Software Development with Agile & Scrum @ March 2012
46. Project noise level
Source: Strategic Management and Organizational Dynamics by Ralph Stacey in Agile Software
Development with Scrum by Ken Schwaber and Mike Beedle.
High Quality Software Development with Agile & Scrum @ March 2012
47. Scrum in a Nutshell
High Quality Software Development with Agile & Scrum @ March 2012
48. Team Commitment
What the team commits to,
and what the product owner
agrees to during sprint planning
should be delivered!
High Quality Software Development with Agile & Scrum @ March 2012
49. Sequential vs. overlapping development
Requirements Design Code Test
Rather than doing all of one
thing at a time...
...Scrum teams do a little of
everything all the time
Source: “The New New Product Development Game” by Takeuchi and Nonaka. Harvard Business Review,
January 1986.
High Quality Software Development with Agile & Scrum @ March 2012
50. No changes during a sprint
Change
• Plan sprint durations around how long you
can commit to keeping change out of the
sprint
High Quality Software Development with Agile & Scrum @ March 2012
51. Scrum framework
Roles
•Product owner
•ScrumMaster
•Team
Ceremonies
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Artifacts
•Product backlog
•Sprint backlog
•Burndown charts
High Quality Software Development with Agile & Scrum @ March 2012
52. Scrum framework
Roles
•Product owner
•ScrumMaster
•Team
Ceremonies
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Artifacts
•Product backlog
•Sprint backlog
•Burndown charts
High Quality Software Development with Agile & Scrum @ March 2012
53. Scrum Roles
Pig Roles Chicken Roles
Product Owner Users
Team Customer & Vendors
Scrum Master Managers
High Quality Software Development with Agile & Scrum @ March 2012
54. Product owner
• Define the features of the product
• Decide on release date and content
• Be responsible for the profitability of the product (ROI)
• Prioritize features according to market value
• Adjust features and priority every iteration, as needed
• Accept or reject work results
High Quality Software Development with Agile & Scrum @ March 2012
55. The Scrum Master
• Represents management to the
project
• Responsible for enacting Scrum
values and practices
• Removes impediments
• Ensure that the team is fully
functional and productive
• Enable close cooperation across all
roles and functions
• Shield the team from external
interferences
High Quality Software Development with Agile & Scrum @ March 2012
56. The Team
• Typically 5-9 people
• Cross-functional:
• Programmers, testers, user
experience designers, etc.
• Members should be full-time
• May be exceptions (e.g.,
database administrator)
• Teams are self-organizing
• Ideally, no titles but rarely a
possibility
• Membership should change
only between sprints
High Quality Software Development with Agile & Scrum @ March 2012
57. Scrum framework
Roles
•Product owner
•ScrumMaster
•Team
Ceremonies
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Artifacts
•Product backlog
•Sprint backlog
•Burndown charts
High Quality Software Development with Agile & Scrum @ March 2012
58. Sprint Planning Meeting
Team
Sprint planning meeting
Team
capacity
capacity
Sprint prioritization
Product
Product
• Analyze and evaluate product Sprint
Sprint
backlog goal
backlog
backlog
• Select sprint goal
goal
Business
Business
conditions Sprint planning
conditions
• Decide how to achieve sprint goal
(design)
Current
Current • Create sprint backlog (tasks) from Sprint
Sprint
product
product product backlog items (user stories / backlog
backlog
features)
Techno-
• Estimate sprint backlog in hours
Techno-
logy
logy
High Quality Software Development with Agile & Scrum @ March 2012
59. User Stories
What is a User Story?
• Feature description from anyone on the team or any customer
• Have "Conditions of Satisfaction" which can be tested in review
• Have no/minimal dependency on other stories
General Format:
As a [user role] I want to [goal], so I can [reason or conditions
of satisfaction]
As a Product Owner, I want to understand Agile planning and
estimation, so that I can produce an effective Product Backlog
High Quality Software Development with Agile & Scrum @ March 2012
60. Sprint Planning
• Team selects items from the product backlog they can
commit to completing
• Sprint backlog is created
• Tasks are identified and each is estimated (1-16 hours)
• Collaboratively, not done alone by the ScrumMaster
• High-level design is considered
As a vacation
As a vacation Code the middle tier (8 hours)
planner, I want to
planner, I want to Code the user interface (4)
see photos of the
see photos of the
Write test fixtures (4)
Code the foo class (6)
hotels.
hotels. Update performance tests (4)
High Quality Software Development with Agile & Scrum @ March 2012
61. The Daily Scrum
• Parameters
• Daily
• 15-minutes
• Stand-up
• Not for problem solving
• Whole world is invited
• Only team members, ScrumMaster & product owner can
talk
• Helps avoid other unnecessary meetings
High Quality Software Development with Agile & Scrum @ March 2012
62. Everyone answers 3 questions
1
What did you do yesterday?
What did you do yesterday?
2
What will you do today?
What will you do today?
3
Is anything in your way?
Is anything in your way?
• These are not status for the ScrumMaster
• They are commitments in front of peers
High Quality Software Development with Agile & Scrum @ March 2012
63. The Sprint Review
• Team presents what it accomplished during the
sprint
• Typically or underlying architecture of new
features
takes the form of a demo
• Informal
• 2-hour prep time rule
• No slides
• Whole team participates
• Invite the world
High Quality Software Development with Agile & Scrum @ March 2012
64. Sprint Retrospective
• Periodically take a look at what is and is not
working
• Typically 30 min-1 hour
• Done after every sprint
• Whole team participates
• ScrumMaster
• Product owner
• Team
• Possibly customers and others
High Quality Software Development with Agile & Scrum @ March 2012
65. Start / Stop / Continue
• Whole team gathers and discusses what they’d
like to:
Start doing
Start doing
Stop doing
Stop doing
This is just one
of many ways to Continue doing
Continue doing
do a sprint
retrospective.
High Quality Software Development with Agile & Scrum @ March 2012
66. Scrum framework
Roles
•Product owner
•ScrumMaster
•Team
Ceremonies
•Sprint planning
•Sprint review
•Sprint retrospective
•Daily scrum meeting
Artifacts
•Product backlog
•Sprint backlog
•Burndown charts
High Quality Software Development with Agile & Scrum @ March 2012
67. Product backlog
•The requirements
•the project desired work on
A list of all
•each item has value to the
Ideally expressed such that
users or customers of the
product
This is the product
This is the product
•owner by the product
Prioritized
backlog
backlog
•each sprint at the start of
Reprioritized
High Quality Software Development with Agile & Scrum @ March 2012
68. Different Types of Stories
Spike:
•the "layers."
It is an experimental solution that cuts through all
•It is necessarily time-boxed.
•It is always intended to be thrown away.
Epic:
•Large story
•An item that can’t be committed to by the team
•It is a container of stories
High Quality Software Development with Agile & Scrum @ March 2012
69. Story Points
A Story Point is a relative
measure of feature
difficulty/complexity
Story Points are a more accurate
measure of project velocity and
release schedule than using hours
and days.
High Quality Software Development with Agile & Scrum @ March 2012
70. Planning Poker
1. All the team members have a set of cards
2. Scrum Master reads description of the backlog Item
3. Everyone selects and simultaneously shows cards
4. If estimates vary significantly, high and low estimators briefly
explain why they have estimated so
5. Repeat steps 3-4 until estimates stop converging
6. Decide estimate for backlog item
7. Move to next backlog item
High Quality Software Development with Agile & Scrum @ March 2012
74. Work Items on Prioritized Stack
High Quality Software Development with Agile & Scrum @ March 2012
75. Grooming Sessions
I hate long meetings, why do you think we
have such long meetings? What could we
do better?
Grooming meetings are a kind of small planning meetings
that the team detail the stories and re-estimate. Most
common schedule is weekly basis.
●
Increases efficiency of the team by greatly reducing uncertainty.
●
Better groomed stories are more accurately estimated, more accurately
tested, and more accurately implemented
●
Increases efficiency of the team due to the benefit of shared knowledge
gained by the entire Scrum team being in the grooming.
●
Allows the team to maintain a sustainable, higher pace.
●
When done well, grooming greatly reduces the time required for a Sprint
Planning meeting.
High Quality Software Development with Agile & Scrum @ March 2012
76. Definition of Done
Definition of Done is a simple list of activities that add
verifiable/demonstrable value to the product.
High Quality Software Development with Agile & Scrum @ March 2012
79. Estimation of Productive Time
• Task of 8 hours doesn't mean completion in 1 day
• Incorporate time for: meetings, phone-calls, e-mails,
bug-fixing, other responsibilities, etc.
• No contingency planning!
The team should establish a working
pace which can be sustained with
normal working hours
High Quality Software Development with Agile & Scrum @ March 2012
80. A sprint backlog
Tasks
Tasks Mon Tues Wed Thur Fri
Mon Tues Wed Thur Fri
Code the user interface 8 4 8
Code the middle tier 16 12 10 4
Test the middle tier 8 16 16 11 8
Write online help 12
Write the helper class 8 8 8 8 8
Add error logging 8 4
High Quality Software Development with Agile & Scrum @ March 2012
81. Sprint Burndown Chart
Determination of Team Velocity
High Quality Software Development with Agile & Scrum @ March 2012
85. The sprint goal
• A short statement of what the work will be
focused on during the sprint
Life Sciences
Support features necessary
Database Application for population genetics studies.
Make the application run on SQL
Server in addition to Oracle.
Financial services
Support more technical indicators
than company ABC with real-time,
streaming data.
High Quality Software Development with Agile & Scrum @ March 2012
86. Scalability
• Typical individual team is 7 ± 2 people
• Scalability comes from teams of teams
• Factors in scaling
• Type of application
• Team size
• Team dispersion
• Project duration
• Scrum has been used on multiple 500+ person
projects
High Quality Software Development with Agile & Scrum @ March 2012
87. Scaling through the Scrum of scrums
High Quality Software Development with Agile & Scrum @ March 2012
88. Scrum of scrums of scrums
High Quality Software Development with Agile & Scrum @ March 2012
89. Scrum in Summary
Scrum is not about:
Good engineering practices
Scrum is about:
Acknowledging the importance of people
Forming cross-functional teams
Obtaining high-bandwith communication
Constantly inspecting and improving
Delivering value
Changing plans to take advantage of
opportunities and priorities
High Quality Software Development with Agile & Scrum @ March 2012
90. Possible Problems with Agile
● Cultural change
● Organizational support
● Stakeholder involvement
● Team size
● Transparency
● “No silver bullet”
High Quality Software Development with Agile & Scrum @ March 2012
92. Searching for High Quality
● Scrum does not
guarantee high-
quality for your
project
● XP principles try to
provide high-quality
software with Agile
principles
High Quality Software Development with Agile & Scrum @ March 2012
93. What is Extreme Programming?
●
An agile development methodology
●
Created by Kent Beck in the mid 1990’s
●
A set of 12 key practices taken to their
“extremes”
●
A mindset for developers and customers
●
A religion?
High Quality Software Development with Agile & Scrum @ March 2012
95. 1 - The Planning Game
●
Planning for the upcoming iteration
●
Uses stories provided by the customer
●
Technical persons determine schedules,
estimates, costs, etc
●
A result of collaboration between the customer
and the developers
High Quality Software Development with Agile & Scrum @ March 2012
96. The Planning Game – Advantages
●
Reduction in time wasted on useless features
●
Greater customer appreciation of the cost of a
feature
●
Less guesswork in planning
High Quality Software Development with Agile & Scrum @ March 2012
97. The Planning Game – Disadvantages
●
Customer availability
●
Is planning this often necessary?
High Quality Software Development with Agile & Scrum @ March 2012
98. 2- Small Releases
●
Small in terms of functionality
●
Less functionality means releases happen
more frequently
●
Support the planning game
High Quality Software Development with Agile & Scrum @ March 2012
99. Small Releases – Advantages
●
Frequent feedback
●
Tracking
●
Reduce chance of overall project slippage
High Quality Software Development with Agile & Scrum @ March 2012
100. Small Releases – Disadvantages
●
Not easy for all projects
●
Not needed for all projects
●
Versioning issues
High Quality Software Development with Agile & Scrum @ March 2012
101. 3 – Metaphor
●
The oral architecture of the system
●
A common set of terminology
High Quality Software Development with Agile & Scrum @ March 2012
102. Metaphor – Advantages
●
Encourages a common set of terms for the
system
●
Reduction of buzz words and jargon
●
A quick and easy way to explain the system
High Quality Software Development with Agile & Scrum @ March 2012
103. Metaphor – Disadvantages
●
Often the metaphor is the system
●
Another opportunity for miscommunication
●
The system is often not well understood as a
metaphor
High Quality Software Development with Agile & Scrum @ March 2012
104. 4 – Simple Design
●
K.I.S.S.
●
Do as little as needed, nothing more
High Quality Software Development with Agile & Scrum @ March 2012
105. Simple Design – Advantages
●
Time is not wasted adding superfluous
functionality
●
Easier to understand what is going on
●
Refactoring and collective ownership is made
possible
●
Helps keeps programmers on track
High Quality Software Development with Agile & Scrum @ March 2012
106. Simple Design – Disadvantages
●
What is “simple?”
●
Simple isn’t always best
High Quality Software Development with Agile & Scrum @ March 2012
107. 6 – Testing
●
Unit testing
●
Test-first design (TDD)
●
All automated
High Quality Software Development with Agile & Scrum @ March 2012
108. Testing – Advantages
●
Unit testing promote testing completeness
●
Test-first gives developers a goal
●
Automation gives a suite of regression test
High Quality Software Development with Agile & Scrum @ March 2012
109. Testing – Disadvantages
●
Automated unit testing isn’t for everything
●
Reliance on unit testing isn’t a good idea
●
A test result is only as good as the test itself
High Quality Software Development with Agile & Scrum @ March 2012
110. 6 – Refactoring
●
Changing how the system does something but
not what is done
●
Improves the quality of the system in some
way
High Quality Software Development with Agile & Scrum @ March 2012
111. Refactoring – Advantages
●
Prompts developers to proactively improve the
product as a whole
●
Increases developer knowledge of the system
High Quality Software Development with Agile & Scrum @ March 2012
112. Refactoring – Disadvantages
●
Not everyone is capable of refactoring
●
Refactoring may not always be appropriate
●
Would upfront design eliminate refactoring?
High Quality Software Development with Agile & Scrum @ March 2012
113. 7 – Pair Programming
●
Two Developers, One monitor, One Keyboard
●
One “drives” and the other thinks
●
Switch roles as needed
High Quality Software Development with Agile & Scrum @ March 2012
114. Pair Programming – Advantages
●
Two heads are better than one
●
Focus
●
Two people are more likely to answer the
following questions:
●
Is this whole approach going to work?
●
What are some test cases that may not work yet?
●
Is there a way to simplify this?
High Quality Software Development with Agile & Scrum @ March 2012
115. Pair Programming – Disadvantages
●
Many tasks really don’t require two
programmers
●
A hard sell to the customers
●
Not for everyone
http://www.cenqua.com/pairon/
High Quality Software Development with Agile & Scrum @ March 2012
116. 8 – Collective Ownership
●
The idea that all developers own all of the
code
●
Enables refactoring
High Quality Software Development with Agile & Scrum @ March 2012
117. Collective Ownership – Advantages
●
Helps mitigate the loss of a team member
leaving
●
Promotes developers to take responsibility for
the system as a whole rather then parts of the
system
High Quality Software Development with Agile & Scrum @ March 2012
118. Collective Ownership - Disadvantages
●
Loss of accountability
●
Limitation to how much of a large system that
an individual can practically “own”
High Quality Software Development with Agile & Scrum @ March 2012
119. 9 – Continuous Integration
●
New features and changes are worked into the
system immediately
●
Code is not worked on without being
integrated for more than a day
High Quality Software Development with Agile & Scrum @ March 2012
120. Continuous Integration - Advantages
●
Reduces to lengthy process
●
Enables the Small Releases practice
High Quality Software Development with Agile & Scrum @ March 2012
121. Continuous Integration – Disadvantages
●
The one day limit is not always practical
●
Reduces the importance of a well-thought-out
architecture
High Quality Software Development with Agile & Scrum @ March 2012
122. 10 – 40-Hour Week
●
The work week should be limited to 40 hours
●
Regular overtime is a symptom of a problem
and not a long term solution
High Quality Software Development with Agile & Scrum @ March 2012
123. 40-Hour Week – Advantage
●
Most developers lose effectiveness past 40-
Hours
●
Value is placed on the developers well-being
●
Management is forced to find real solutions
High Quality Software Development with Agile & Scrum @ March 2012
124. 40-Hour Week - Disadvantages
●
The underlying principle is flawed
●
40-Hours is a magic number
●
Some may like to work more than 40-Hours
High Quality Software Development with Agile & Scrum @ March 2012
125. 11 – On-Site Customer
●
Just like the title says!
●
Acts to “steer” the project
●
Gives quick and continuous feedback to the
development team
High Quality Software Development with Agile & Scrum @ March 2012
126. On-Site Customer – Advantages
●
Can give quick and knowledgeable answers to
real development questions
●
Makes sure that what is developed is what is
needed
●
Functionality is prioritized correctly
High Quality Software Development with Agile & Scrum @ March 2012
127. On-Site Customer – Disadvantages
●
Difficult to get an On-Site Customer
●
The On-Site customer that is given may not be
fully knowledgeable about what the company
●
May not have authority to make many
decisions
●
Loss of work to the customer’s company
High Quality Software Development with Agile & Scrum @ March 2012
128. 12 – Coding Standards
●
All code should look the same
●
It should not possible to determine who coded
what based on the code itself
High Quality Software Development with Agile & Scrum @ March 2012
129. Coding Standards – Advantages
●
Reduces the amount of time developers spend
reformatting other peoples’ code
●
Reduces the need for internal commenting
●
Call for clear, unambiguous code
High Quality Software Development with Agile & Scrum @ March 2012
130. Coding Standards – Disadvantages
●
Degrading the quality of inline documentation
High Quality Software Development with Agile & Scrum @ March 2012
131. How Google Develops Software
● Single Code Base for Everything
● Distributed Version Control System
● Central Documentation Repository
● Bug Tracking System
● Maven/Gem Repository
● Coding Standarts and Guidelines
● Code Coverage Tools
● Pair Programing and Code Review Tools
● Release Notes & Release Management
● OS-IDE-Tool Free Coding
● Test Driven Development / Behavior Driven Development
● Testing in Multi-level (Unit, Integration, Functional, Acceptance, Manual)
● Continuous Integration Server
● Enterprise Architecture (Dev, Test & QA, Staging, Production)
High Quality Software Development with Agile & Scrum @ March 2012
132. How Google Develops Software
● Sprint Collaboration Tool as White Board
● Sprint Tracking Tool as Spreadsheet
● Product Backlog in Spreadsheet or a tool like Atlassian Jira-GreenHooper
● Meetings with Larry Page Rules
1) Every meeting must have one clear decision maker. If there's no decision
maker -- or no decision to be made -- the meeting shouldn't happen.
2) No more than 10 people should attend.
3) Every person should give input, otherwise they shouldn't be there.
4) No decision should ever wait for a meeting. If a meeting absolutely has to
happen before a decision should be made, then the meeting should be scheduled
immediately.
● Scrum of Scrums
● Brown Bag Sessions, tech taks, round-table sessions
● 20% Time
● New ideas, then brainstorming session
High Quality Software Development with Agile & Scrum @ March 2012
133. Module 5. Do's and Dont's
High Quality Software Development with Agile & Scrum @ March 2012
134. Can Scrum fail ? No !
Scrum is not a silver bullet ... and it surfaces existing problems
Scrum never fails !!! It is a simple framework but hard to
implement
It’s a completely new way of thinking and mind-set shifting it is
not just list of practice.
If you “stand-up” it doesn’t mean you do Scrum ...
High Quality Software Development with Agile & Scrum @ March 2012
135. Why Scrum Implementation Might Fail ?
● Culture
● Providing answers instead of asking questions
● Management
● Force commitments
● Ask for not needed or invaluable status and
measures
● No tolerance for failures
● Will go back to the old norms
● Loss of Ceremony Rhythm
● Scrum Ceremonies are taking too long
High Quality Software Development with Agile & Scrum @ March 2012
136. Why Scrum Implementation Might Fail ?
● Bad Scrum Master
● Driving the time and the tasks allocation, get
decisions.
● Fails to make a prioritized impediment list
● Becomes the team administrator
● Do not keep the team in the “zone”
● No or bad retrospectives
● Wrong definition of done
● No velocity tracking
High Quality Software Development with Agile & Scrum @ March 2012
137. Why Scrum Implementation Might Fail ?
● Bad Product Owner
● Consistently unavailable
● Fail to get consensus
● Doesn’t have a vision, business plan and release
roadmap
● Poorly defined stories (INVEST), not all work in the
backlog
● On-going Changes in Sprint backlog
● Too much interruptions / PO bypassed
● No analysis or documentation
High Quality Software Development with Agile & Scrum @ March 2012
138. Why Scrum Implementation Might Fail ?
● Waterfall within sprint
● Better to have 70% of stories 100% done then the
opposite.
● Entire team own the story
● Testers are not part of the Team
● Developers assume QA will test
● Integration postponed to the end
● Technical Debt
● More defects appear at the end
● Last iterations produce less new functionality
● Re-factor and re-design cost too much and take
too long
High Quality Software Development with Agile & Scrum @ March 2012
139. Why Scrum Implementation Might Fail ?
● Not Acting Like a self managed team
● Fixed Roles, No knowledge leveraging
● Prima donna /Dictator within the team
● Depend on external expertise
● Visibility for the managers not for the team
● Personal goals rather than team goal
● Talking Chickens
● Tasks are assigned
● Not helping and listening each other
● NO FUN :(
High Quality Software Development with Agile & Scrum @ March 2012
140. Why Scrum Implementation Might Fail ?
● Team exhausted, there are no calm periods,
no place for innovation
● " ... the team shadows the individual. Good senior
employees, feels that they can less contribute and
lead, ...[due to] the “team thing” and the low
granularity of the tasks, leaving small flexibility to
personal innovation and creativity“
High Quality Software Development with Agile & Scrum @ March 2012
141. Does Scrum fit BIG organization ?
The following statements are sometimes heard:
● "Oh yes, Scrum is good for small teams but I don't see it working
for bigger organizations”
● "Only experts and above average developers can do it."
● "It should evolve bottom-up" (i.e., one "crazy" team implements
Scrum and generates a "buzz" that pushes the rest of the
organization to follow).
● "There is no visibility above the team's level as there are no project
plans".
● "Teams are self-managed so team leaders and managers lose their
role."
● "Agile is not good for complex systems with integrations and
dependencies."
● "Our customers will never go along with fluid estimations"
● And so on....
High Quality Software Development with Agile & Scrum @ March 2012
142. Yes, it fits!
● Scrum surfaces the inherent problems and
wastes
● Scrum reduces the bureaucracy and org.
complexity
● Break the organizational silos
● Reduce politics – move the power to the teams
● Scrum allows better leveling of knowledge
● Reduces dependencies on specific expertise,
● Raises employees satisfaction
High Quality Software Development with Agile & Scrum @ March 2012
143. Yes, it fits!
● Scrum provides much better visibility
● Managers have more time to
● Look ahead and think
● Understand customer needs and ROI
● Handle impediments
● Raises employees satisfaction
The bigger the organization, the higher ROI
High Quality Software Development with Agile & Scrum @ March 2012
145. The Shock Therapy
● "A set of Good Practices, but no choice"
● Team Recipe
● Management Recipe
● Organization Recipe
High Quality Software Development with Agile & Scrum @ March 2012
146. Team Recipe
●
Scrum training session for
everyone ●
Story Points
●
Sprint 1 week long
●
Physical Task Board
●
All-in-one Sprint planning
●
Definition of Done: meeting.
●
Feature Complete
●
No Multi-tasking, work in
priority order.
●
Code Complete ●
Three successful Sprints
●
No known defects consecutively
●
Approved by the Product ●
Good business reason to
Owner change the rule
●
Production Ready
●
Continuous Integration
High Quality Software Development with Agile & Scrum @ March 2012
147. Management Recipe
●
Hands off during 3 iterations
●
Attend:
●
Some Daily Scrums - be quiet
●
All Sprint Reviews
●
Start to work on waste - now!
●
Management by walking, asking and listening
●
Make the first step easy for the team
●
One successful team
●
Removed impediments and studied results
●
Change in perception at "ground level"
●
A good agile reason to change the rule
High Quality Software Development with Agile & Scrum @ March 2012
148. Organization Recipe
●
Difficult - How to speak to a "culture"?
●
Some steps:
●
Transparency
●
Pull
●
A micro-revolution per day
●
Some new roles
High Quality Software Development with Agile & Scrum @ March 2012
149. The Scrum Sensei
●
Experienced ScrumMaster
●
Enforces rules/recipes
●
Bad ScrumMaster as in "good cop - bad cop"
●
Compassion!
●
Leaves when self-organization works
High Quality Software Development with Agile & Scrum @ March 2012
150. Special Thanks!
Presentation by: Mike Cohn
Presentation by: Mike Cohn
mike@mountaingoatsoftware.com
mike@mountaingoatsoftware.com
www.mountaingoatsoftware.com
www.mountaingoatsoftware.com
(720) 890-6110
(720) 890-6110
High Quality Software Development with Agile & Scrum @ March 2012
151. Special Thanks!
Scrum Shock Therapy
Björn Granvik, CTO, Jayway
Why Scrum Projects Might Fail?
Ronen Bar-Nahor (Ph.D)
Top 10 Reasons Why Systems Projects Fail
Dr. Paul Dorsey, Dulcian, Inc.
High Quality Software Development with Agile & Scrum @ March 2012