This book is an edited and organized compilation of over 100 postings to message boards and a few other texts. The
primary source is ScrumDevelopment in Yahoo Groups.
Although the term Agile can cover a wide range, I have always been most interested in people, team productivity,
and project management. The subjects selected for this book and these particular answers and comments were
useful to me in learning about Agile and teaching others about Agile.
-- Editor
ii
iii
iv
Section One:
The History of Agile Software Development
On this fertile ground, the Japanese Scrum paper provided a name, a metaphor, and a proof point for product
development, the Coplien paper on the Borland Quattro Product kicked the team into daily meetings, and daily
meetings combined with time boxing and reality based input (real software that works) started the process working.
The team kicked into a hyperproductive state (only after daily meeting started), and Scrum was born.
Jeff Sutherland1
People who create methods without ever having worked with or even examined a really well-operating Scrum or XP
project can't possibly know what they would if they had. I think their conclusions and recommendations would be
quite different.
Agile Without Skills
Software development is an intricate and difficult art. Yet as an industry we send people into the fray terribly poorly
equipped. Even developers with degrees in the subject are not well prepared in terms of what is really needed today.
More significant is the fact that many again I'd say most software developers have no significant training in the
subject at all. They're self-taught refugees from some other realm, who have entered programming because it
interested them, or because there were no jobs available for semanticists or whatever they studied in college.
To do the necessary engineering practices mentioned above, Agile teams require an especially wide range of skills,
and the team needs to be really good at them. I would include human relations skills, requirements skills, design
skills, programming of course, how about real Object Oriented programming, almost no one knows how to do that,
relational database skills, and more. Add in customer-facing testing, unit testing, test-driven development, and
refactoring. Add in some skills in setting up builds, and doing code management.
The list is endless, and if we're going to be Agile, we can't have some bottleneck person who is our only refactorer:
we all need to be good enough at most of these things. But there's no focus on these kinds of skills. Scrum, to name
names, scarcely even admits that these skills exist, much less matter.
Now sometimes, Scrum proponents claim "all those things have always been part of Scrum". It's true that all those
things have always been part of //successful Scrum projects//, because they have to be. Authors of other Agile
methods say similar things: we don't mention all these foundational things, they are taken for granted. But so few
people have them, how can we take them for granted? Technical skills are often not part of Agile culture ... and they
need to be.
Summary
Ken and others like to say that Scrum is "common sense". In my experience, it isn't. Jeff likes to point to Scrum
teams that are "hyper-productive". In my experience, most aren't. The reasons have to do with the passing on of
knowledge, and in some cases, the active denial that knowledge is necessary, and the active addition of things that
are only sometimes needed.
The Agile marketplace is filling up with people, mostly of good will, trying to do a good job, who, nonetheless, have
an n-th hand partial picture of what it's all about. Of course, in the end, all of us only have a partial picture of what
it's all about, YT included. And yet, it seems to me that things are getting watered down. Maybe that's inevitable.
Ron Jeffries2
2
From: Ron Jeffries ronjeffries@acm.org; Sent: Thursday, August 3, 2006 at 4:10 AM
Re: Agile 2.0 (2nd Attempt)
From: Mike Dwyer mike.dwyer1@comcast.net; Sent: Thursday, January 13, 2005, at 10:35 PM
Subject: Lessons Learned Forward
4
From: Tobias Mayer tobyanon@yahoo.com; Sent: Tuesday, December 14, 2005 at 5:45 PM
Subject: Scrum vs. "Traditional Spiral Development"
5
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Tuesday, December 14, 2005 at 7:24 PM
6
From: Tobias Mayer tobyanon@yahoo.com; Sent: Wednesday, December 15, 2004 at 7:23 AM
From: Angelo Schneider angelo.schneider@oomentor.de; Sent: Wednesday, December 15, 2004 at 5:39 PM
10
________________________________________________________________________
Dear Sirs,
I guess it is important to remember that PMBOK also doesn't dictate what should be done.
As Agile, it is not a prescription. It is a Guide to a set of good practices.
The manager should carry an analysis for each project of what of these practices and in what degree it should be
applied. And it doesn't matter in what industry.
Peter Mello, PMP12
11
12
11
From: Victor Szalvay victor@danubetech.com; Sent: Tuesday, February 15, 2005 at 4:26 PM
Subject: Re: Scrum + Unified Process = ?
14
http://groups.yahoo.com/group/Scrumdevelopment/message/779
15
http://groups.yahoo.com/group/Scrumdevelopment/message/783
16
http://groups.yahoo.com/group/Scrumdevelopment/message/787
12
Alan Shalloway:17 "You can take a committed dev group (most are) and have them do RUP/Scrum in a way that an
upper management that doesn't want to hear about Agile will accept. [...] here's a chapter discussing this I've just
put on our public wiki (Dan Rawsthorne and I are writing a book on effective software development and this is a
likely chapter). See:
http://www.netobjectivesbooks.com/N_O_BookFeedback_Wiki/owbase/ow.asp?DontTryToSellXP"
Marco Abis:18 "will try to explain why I think so (after years of effective RUP implementations!): RUP is
fundamentally a very, very big framework [...] I will not spend time to write why managers like RUP but not Scrum
[...] makes me think that what managers want is something that isn't really useful to deliver the right project and
often is the first impediment to the project success."
Adriano Comai:19 "Sometimes it's difficult to tell these organizations, who made huge investments into RUP: throw
it off, there are more effective approaches out there, try them instead. In such cases, I believe, it is better to suggest
an improvement using Agile practices in the context of the existing process."
Marco Abis:20 "I experienced a lot of clients (of mine, of course) professing they were implementing an "Agile
version" of RUP but when I analyzed their work I found they were just cutting off some documents feeling "more
lightweight". I definitely think this is one of the main issues: a lot of people believe Agile means just less docs, they
try to cut off some of their docs and then affirm Agile is nothing more than this. As stated by Jim [Highsmith]: they
are missing fundamental understanding of the unpredictability of project activities. [...] For those who haven't read
it I suggest 'Agile Revolution'21 by Mike Beedle.
Marco referred to http://www.crystalmethodologies.org/cgi/wiki?AgileVsSelfAdapting, from which I quote Jim
Highsmith: "So self-adapting, by itself isn't Agile." and Alistair Cockburn: "criticisms of RUP [...] Doing the change
case is very laborious. Just heard of an airline company that wants to use RUP, so they spent 6 months creating a
RUP-for-them. Now every project has to spend 2 months turning that into a RUP-for-the-project. Problem is when
the project is only 6 months long, this is too long."
Another Highsmith quote on that page: "But lightweight is only one aspect of Agile, the other two are collaborative
values and principles and a fundamental understanding of the unpredictability of project activities (although
outcomes can be achieved). Agile is much more than lighter documentation and fewer processes. Rational is trying
to have it both ways still telling corporate managers what they want to hear in terms of predictability, control,
productivity, etc. while at the same time touting that they are 'Agile' also."
17
http://groups.yahoo.com/group/Scrumdevelopment/message/788
http://groups.yahoo.com/group/Scrumdevelopment/message/800
19
http://groups.yahoo.com/group/Scrumdevelopment/message/803
20
http://groups.yahoo.com/group/Scrumdevelopment/message/804
21
http://c2.com/cgi/wiki?AgileRevolution
18
13
14
swimming from 2 days to 3); or if I have a busy work week ahead, I'll cut back my time budget, and make some
calls about tradeoffs.
One of the things I've found is that for this approach to be successful, unbudgeted time must still be preserved. In
other words, the time you allocate to personal Scrum must be only a fraction of the free time you have available.
Happiness depends in part on being able to decide on the spur of the moment to do nothing, or do something
completely silly and unproductive, and do it without any guilt at all.
One of the areas where the approach falls flat is "non-standard" weeks for example, going on vacation, or having
guests visiting, or other situations where budgeting time in this way is undesirable or difficult to do.
Overall, this approach has had a positive effect on my life, and the experience has been similar to that of teams I've
worked with in adopting Scrum: greater sense of clarity of direction, repeated satisfaction of accomplishment,
greater confidence in setting personal goals, and a greater sense of contentment and peace around living up to one's
responsibilities and opportunities.
I'd love to hear about others' experiences with other Scrum or Agile-based life management techniques.22
________________________________________________________________________
Pete,
Thanks for this. It's a really well described account, and an excellent example of the power of Scrum as a simple
means to effect change. I enjoyed reading it.
I have been using Scrum-like practices to organize my daily workload since becoming a consultant. I can get in a
total mess with all the things I have to think about on a daily basis so I now keep a backlog of everything (work and
personal) that I know needs to be done. At the end of each day I review what I have accomplished, re-prioritize the
backlog, and commit to a new chunk of items for the next day. Note that this is only to deal with day-to-day "stuff",
and not, as you describe, for self-improvement although the result is certainly an improvement on my quality of
life and peace of mind. The inspection/adaptation element comes naturally as part of the review and re-prioritization
process, and I have not (yet) found the need to put aside special times for that.
Scrum is such a simple framework, and its principles can be applied in many different contexts. What I find
interesting is that the resistance to Scrum in organizations is often based on a perception that it is a highly unnatural
way of working. People fear it because it is so different from what they are used to in the work environment.
When I work with organizations I like to guide them towards finding examples of how they actually use many of the
Scrum principles in their daily life already, e.g. making lists, prioritizing important things over non-important ones,
trusting that their husband/wife/kids will make good on their commitments, task-sharing on chores, regular family
meetings, etc. This frees the mind to see that Scrum is actually a very natural way of thinking and operating.
There was an amusing thread on this list about two years ago regarding the use of Scrum to organize family life.
Here is the kick-off post, from Michael Vizdos:
http://groups.yahoo.com/group/Scrumdevelopment/message/3401
Tobias23
22
15
Section Two:
Team Space and On-Site vs. Offshore
16
2.1 Bull Pens / Co-location / Open Space (Quiet Working Conditions vs. Common Room)
At Danube, we have a large Bull Pen that houses all team members without barriers. We've definitely seen the
positive effects like spontaneous collaboration and assistance. But I've also noticed people getting distracted and
even annoyed by the enthusiastic discussions of teammates or neighboring teams. We've elected to keep our Bull
Pen because the value added outweighs the minor interruptions, but I wonder what others have concluded.24
________________________________________________________________________
My experience with the disturbance phenomenon has been that different people have different thresholds for
when and how much they need quiet time to solve problems. It is helpful if team members are sensitive to and
respect these individual differences in their teammates.
One technique I have seen work well to indicate someone who needs to concentrate at a given time is the use of
headphones. This says: please don't disturb me, I am concentrating. It also helps block out the noise of distracting
comments and activity from others. For those who find music itself distracting, there is really no reason you have to
play music (no one will know), the visual cue alone may be sufficient.25
________________________________________________________________________
On the one hand I see great value in the common room approach to a team working together I know that the
synergy of a group happens in part because of personal interaction. So I find great value in a process that recognizes
this trait.
However I am finding it difficult to balance this with the concept that knowledge workers need quiet working
conditions to be productive. I think this is common sense. One needs to get into the flow and distractions will
knock you out of flow.26
________________________________________________________________________
For both me and the teams I've coached, the difference is not quiet as such, but whether the noise is related to the
project. On-topic discussions don't seem to interrupt flow in the same way that off-topic ones do. The last team I
was on developed enough of a conviction about this that we would kick the CEO out of the project room if he
started to shoot the breeze with the product manager.
My current favorite trick when I need to have a potentially distracting discussion but don't have alternate space
available is to go for a walking meeting. Three people's about the maximum for this, but it's a good way to have a
chat, reduce stress, and get a little exercise27.
________________________________________________________________________
Having worked in both traditional and open workspaces, I much prefer the latter, and find music a good alternative
to walls.
But note: without walls, it can be very important to help people reduce peripheral *visual* distractions I think that,
if you can, each person (or pair) should have one direction they can turn and not see anyone else (while seated).
This can be done with half-high partitions or filing cabinets, etc. (As soon as you stand up, you see everyone again,
and you can still hear everything). This is more important to some than others, but it's important to be sensitive to
this. As a visual person, this kind of "visual noise" is MUCH more disruptive to me than sound it can totally
wreck my concentration. I guess if you're using XP's "caves and common" then this would apply only in the
"caves". But we used this to achieve a totally "open" feeling workspace while allowing concentration, worked really
well. But it requires a little more available desk real estate to keep it "open" otherwise you are back in cubicle land.
(This was a SteelCase solution, in case anyone is wondering).28
________________________________________________________________________
24
From: Victor Szalvay victor@danubetech.com; Sent: Saturday, September 18, 2004 at 4:31 PM
Michael K. Spayd, COGILITY, LLC
26
From: David A Koontz dakoontz@yahoo.com; Sent: Thursday December 16, 2004 at 11:23 AM
27
From: William Pietri <william@s...>; Sent: Friday December 17, 2004 at 3:22 AM
28
From: "Deb" <deborah@h...>; Sent: Friday December 17, 2004 at 8:41 AM
25
17
My take is, as always, keep a balance, between isolation and constant communication with the group.
Prolonged time in isolation, i.e. with no "real contact" with people, generally pulls people apart. On the other hand,
too much interaction in the Bull Pen can be distracting.
We have had as many as 10 people in the room at any one time, with 1 or 2 people over time, "listening to music" on
and off, but when it is time for everyone to get involved, we ask people to re-join the group. Also, on personal calls
to cell phones or longish "interesting but not-work-related" conversations, most people leave the Bull Pen.
On the other hand, if there is a spontaneous collaboration conceived, we typically have it done at the Bull Pen, with
the option to go to a couple of little conference rooms close by. These rooms have conference phones that are also
used to call remote developers or customers.29
________________________________________________________________________
[Reference to interesting article on a team development room. ED.]
http://www.hello.nl/articles/Asoftwareengineersoffice.html
It alternates people so when looking directly ahead there isn't anyone in front of you.30
29
30
From: Mike Beedle beedlem@e-architects.com; Sent: Friday December 17, 2004 at 6:01 PM
From: todd <todd@p...> Sent: Friday December 17, 2004 at 8:59 AM
18
31
19
34
On Behalf Of Kristan Vingrys; Sent: Monday, May 23, 2005 at 8:31 AM
Subject: Offshoring with Scrum
20
Sorry this email all over the place; I am typing on train :) please email further questions, and yell at me in CAPS if I
miss the point of the post.
Good luck
Scott Worley35
35
From: Scott Worley worleys@project-inspiration.com; Sent: Monday, May 23, 2005 at 11:23 AM
21
Section Three:
Teamwork and Hierarchy
22
36
From: Grant grantj@review.com; Sent: Tuesday, September 28, 2004 at 3:20 PM
Subject: Role of Application Architect on Scrum Teams
37
From: Steven Gordon sagordon@asu.edu; Sent: Tuesday, September 28, 2004 at 3:53 PM
38
From: "JASchiel" james.schiel@siemens.com; Sent: Wednesday, September 29, 2004 at 01:27 AM
23
For us the best way of producing recyclable components and consistent architecture is to have lots of open
communication across the various teams.
We have the "designated architects" meet at least once a week to describe in general what the teams are working on.
This gives us a chance to coordinate dependencies, recognize problems another team has already solved, offer
suggestions, recognize common "design themes", make "core" architectural decisions, etc. It is also common for us
to call in the other team Architects for a half-hour discussion or so whenever we're considering a significant
architectural change. We have no controlling authority, but the best solutions turn into the "standards" because the
solution is carried back to each team in the architects' heads.
Another thing that has helped us is to hold frequent "brown-bag" lunches where the entire development staff is
invited and someone will "show and tell" about some bit of code. This gives the whole staff some idea of what else
has been done on other projects that can be reused, copied, extended or otherwise leveraged.
Another suggestion from Ken Schwaber's book, if this works for you, is to create an "architecture" Scrum team
made up of your very best developers. They would do a Sprint or two to establish the core shared pieces and
standard architecture. Everyone on that architecture team will gain a large amount of tacit knowledge about the
standard architecture. Then split up the members of that team into the other teams doing the regular day-to-day
work. This should promote lots of inter-team communication when issues about the standard architecture come up.
This has been my experience. I hope the information is useful to you.39
39
From: Mike Schenk mike_schenk@yahoo.com; Sent: Wednesday, September 29, 2004 at 04:48 AM
24
40
25
41
26
27
to be efficient enough to juggle several teams, but I think it's possible. The teams would also have to schedule their
planning, review, and daily Scrum meetings in a way to allow the ScrumMaster to attend all of them.42
________________________________________________________________________
It really depends on the personality of the ScrumMaster. I think it works best when the ScrumMaster has few or no
specific deliverables within a Sprint. If the ScrumMaster does, it is usually best that they not be "critical path" type
tasks. That is, I don't want the ScrumMaster taking the hardest or longest to complete tasks and then spending a lot
of time on removing impediments (which comes first).
--Mike Cohn43
Author of User Stories Applied for Agile Software Development
________________________________________________________________________
There is no reason that the ScrumMaster could or couldn't be a member of the team. If the ScrumMaster is a team
member, then he needs to very carefully separate out the two functions and avoid being "in charge" of the team.44
________________________________________________________________________
My 2 cents about a ScrumMaster taking on Teamwork:
I've acted as a developer and a SM on the same team on various occasions. It appeared as if it "worked," but over
the last few years, after learning very much about the role of a SM, I have come to regret those occasions, as I have
realized:
-That any time I spent doing any "Team" activities (acting as a Team member/developing/etc) was time NOT spent
creating an environment of success for the team or doing other important SM activities (championing process to
questioning stakeholders, other coaching, etc. etc.)
-That any work I did to "help" the team may have been a missed opportunity to learn and solve problems on its own
(e.g., sure I was able to automate some builds and deployments more quickly or help knock out some stories, but
wouldn't the team have benefited from the learning?)
-That any work I did may have detracted (though perhaps only slightly) from the Team's ability to accurately
determine what it was capable of implementing in a particular Iteration
I now consciously try as hard as possible to not do any development or other "Team" work- even if I have a
competency in an area that the team doesn't- in this case I'll advise or recommend or guide team members if needed.
Unless the organization I am working with is completely evolved and embodies our principles throughout (haven't
been there yet), and all is happy and at peace (dogs and cats playing together etc.), there is likely something that
likely can be done by the SM to improve things that would be a better effort than signing up for Team tasks.
DeMarco's wonderful book "Slack" has another view of taking on work as a manager also that I believe is
consistent.
George45
42
28
29
30
If your situation is not ideal, then adding an "analyst", and/or pipelining the analysis and development work may be
an appropriate solution.
Jennitta46
________________________________________________________________________
How is the knowledge acquired/generated by the team that analyzed requirements in Sprint A to be communicated
to the team that implements those requirements in Sprint B?
If that knowledge is to be communication is via heavy documentation then the approach is not in the spirit of XP or
Scrum, and much of the agility one gains by doing XP or Scrum will be lost. Much of the knowledge gained by
team A will have to be relearned/reinvented by team B, and given the different skill sets, team A is likely to want to
disown what team B produces.
The idea behind these methodologies is for one group of people to learn, implement, and get feedback in a short
time frame on a few requirements. Spreading the learning for the same requirements across multiple groups of
people destroys what makes the methodologies Agile and effective.
If the requirements are too complex for a group of developers to figure out and implement in one Iteration, then
reduce the number of requirements per Iteration and/or add a few BAs and SMEs to the team. A separate team of
BAs and SMEs will only muddle things.
Steven Gordon47
http://sf.asu.edu/
________________________________________________________________________
A customer story is a very short paragraph (not even as detailed as an "essential use case") identifying a requirement
or feature. The customer prioritizes these short stories. The team only digs into the details of a story when its
priority causes it to be scheduled for the current Sprint/Iteration. The people who will be implementing that story
have an extended discussion with the customer at that time to come to an understanding of its details. (Discussing
the details before implementation time is pointless, because the details are likely to change in light of the customer's
experience with what as been implemented so far, as well as all the factors that cause changes in requirements and
how they are understood).
There is absolutely no problem with BAs and/or SMEs participating in that conversation with the customer. There
is a big problem with the BAs and/or SMEs having that conversation INSTEAD of the developers, and then
providing a written specification of some sort to the developers based on that conversation.
The in-between case of having the BA have the conversation with the developer instead of the customer is not
optimal, but can work when there is no better alternative. But, that conversation is still a 2-way dialogue about what
the requirement really means, not the BA dictating to the developers what to implement. It should not take a full
Iteration of work by a team of BAs to support being able to have such a conversation with the developers.48
________________________________________________________________________
Scrum is pretty adamant that you start the Sprint "with nothing" and you end it with a potentially shippable product
increment. This means you start with a tiny bit of understanding about what a product backlog item means and you
end with shippable software.
Regardless of your environment that should be considered the ideal. But, we can't always achieve the ideal. I've
occasionally had teams that need to do some analysis "a Sprint ahead" of the team. This is OK as long as you
remind yourself often that:
46
31
a) You are deviating from the ideal, you've selected to do something that works but it would be better if you could
get closer to the ideal
b) You try to minimize the amount you do ahead and how far ahead you do it.
(All the same with "behind" as appropriate)
Whatever the analysts feel the need to produce upfront should be kept as lightweight as possible. We want to view
their work as inventory and it could be wasted inventory if the feature isn't prioritized into the Sprint.
I can't think of any real circumstance in which I would have significant testing occurring AFTER a Sprint. I've had
some teams where we do things like usability testing (bringing users into a usability lab for observation) every 3rd
Sprint or so but it's still done in a Sprint. It's just not something needed every Sprint though. I'd push back hard on
testers wanting to work behind. Usually when they are doing that they are trying to optimize the test process at the
expense of the overall process. Imagine a sandwich store with 13 order-takers and 1 sandwich maker. Order-taking
will be optimized Never a wait to place your order" will be in the ads. But imagine the wait for the sandwich to
be made. You want a process that is optimized across the range of activities. This means that some processes will
look inefficient. It's very "inefficient" (when measured locally) to write tests first but it can help optimize the entire
process.
--Mike Cohn49
Author of User Stories Applied for Agile Software Development
________________________________________________________________________
Much of the information can often be conveyed during a Sprint planning meeting. If there's more to be conveyed
(there almost always will be on some stories) then the relevant programmers, testers, etc. all talk to the customer. If
there's that much talking going on (e.g., this is a complicated requirement) the customer hopefully starts to write
down an example (see www.exampler.com) or a test demonstrating how the system should behave. The best
becomes the most powerful way of capturing the communication for later use.
--Mike Cohn50
49
50
32
51
33
The Product Owner is a chicken. Sorry Hubert, but I have to disagree with you here. Yes, the Product Owner is
committed to the outcome of the work, but he's not a part of the work. Within the Scrum structure, the Product
Owner has a single role: To maintain the Product Backlog and to prioritize the PB items. Remember that the team is
jointly responsible for completing the Sprint Backlog. The Sprint Backlog isn't carved up into a bunch of individual
commitments for each team member, so every team member is expected to become involved in any aspect of the
Sprint backlog that requires attention when necessary. Your most senior programmer may spend three days stuffing
envelopes if that is what is needed, and if the team decides that is the best use of his time.
I divide the Scrum world into two kinds of people: Team Members and Resources. A team member is someone
described above, who is fully committed to all of the objectives in the Sprint backlog and who will work in any
capacity required (providing that he has the skills) by the team to achieve those objectives. A resource is someone
who is available to a specific task, or whose skills are highly specific or whose available time for the project is
extremely limited. The team decides how best to use that resource, and the resource usually wouldn't attend a
Scrum as a pig. What usually happens here is that a team member becomes responsible for watching over the
resource, and reporting that person's progress and issues to the team in the daily Scrum. If you have someone who is
part-time on the project, the decision over whether or not they are a team member depends on how much time you
have them for. If you have enough of their time for them to attend the Sprint Planning meeting and all of the Daily
Scrums, then they're probably going to work best as a team member. If you only have them for 1 day a week, then
they'd probably best utilized as a resource.
Dave Barrett55
________________________________________________________________________
I disagree. Pigs are those who have commitments, or whose bacon is on the line, during a Sprint. That applies to
the Product Owner who is responsible for specifying (and writing if possible) tests that indicate if each backlog item
meets her expectations. While the team can self-organize and influence the amount of effort needed by the product
owner to do this, the product owner must do some of it as no one can express the product owner's acceptance criteria
except the product owner.
--Mike Cohn56
________________________________________________________________________
I believe having a Product Owner as a pig is ideal. If this is not an ideal situation because of circumstance, the
ScrumMaster takes some of the burden of Product Owner. This can happen when the Product Owner cannot be
involved as much as we would like and delegates much of the role to others. At this point, the Product Owner
becomes a chicken. This causes for a lot more work from the team, which is why it is better when the Product
Owner is a pig.
As a pig, the best of all is when the Product Owner is part of the Daily Scrum!
Brent57
________________________________________________________________________
The "chickens and pigs rule", is about who talks at the Daily Scrum... not who is committed to success of the
project, or who has "skin in the game".
Chickens are only involved in the process they provide the eggs in the "eggs and bacon" breakfast. For example,
there could be a system administrator there to know what new users to add, or a configuration management guy, or a
DBA, or a senior VP (wanting to know where things are), etc.
55
34
Pigs are committed to deliver the (software) through and typically have something to show for in the "Daily Build"
(even if they are documents), and therefore are typically developers (in the larger sense more than programming)
they provide the bacon in the "eggs and bacon" breakfast.
This rule goes into effect so that people only "involved" with the project take over the Daily Scrums. For example,
the CIO, the VPs, or the Directors don't take over the meeting and start thanking people, telling them how great they
are, or start threatening with contract fines, or panicking, etc.
This is why the "Product Owner" does not typically talk at the Daily Scrum; therefore, most Product Owners are
chickens at the Daily Scrums. And yes of course he is committed to the project and he has "skin in the game" but
that's not how we use the "chickens and pigs rule".
On the other hand, there might be business people working on a day-to-day basis as part of the team (or with the
team), that are responsible for delivering the solution those people are of course pigs.... but they are typically not
the Product Owners (although it is possible they might be involved at that level), they are simply "On-Site
Customer".58
________________________________________________________________________
Well, you're the expert. But now I'm confused. AFAIK "On-Site Customer" isn't a Scrum term. I thought that the
Product Owner was the one who defines the Sprint Goal, in its general form and its detailed form. Yet they aren't
present with the team?
Ron Jeffries59
________________________________________________________________________
Ron,
You are right, in Scrum we don't have an "On-Site Customer", we simply have a "Customer" ;-)
The Product Owner helps define the Sprint Goal and content, but of course the team determines how much can be
done and how to deliver it.
It is ideal that the Product Owner is available all the time during the Daily Scrums and during the day, but that is
typically not possible, nor is it required in Scrum; instead, most of the time we have a committed Customer
representative that helps the team, full-time or part-time, in testing the deliverables and understanding the
requirements.
The absolute "worst case scenario" is when neither the Product Owner nor a Customer representative are available
during the Sprint. Then all the interaction with them happens at the Sprint Planning and Sprint Review meetings.
- Mike60
________________________________________________________________________
Given that the Product Owner is establishing acceptance criteria for the product backlog items, the product owner is
undoubtedly a pig (that is, "is committed") and should most definitely talk in the meeting. If that were not the case
it would lead to a pathology such as having the product owner telling a tester prior to the meeting "speak up if these
acceptance criteria are not being met or if others are" and then having a tester become the mouthpiece of the product
owner. If I were a Product Owner and the team told me "you can't talk during our meetings" I would find a new
team-that day. Agile (and Scrum) teams should value communication-in all its forms and in all ways that help.
Telling the CEO he can't come interrupt a meeting with his questions is a good idea; telling the product owner the
same is wrong.
58
From: Mike Beedle beedlem@e-architects.com; Sent: Monday, January 10, 2005 at 1:22:30 PM
From: Ron Jeffries ronjeffries@Xprogramming.com
60
From: Mike Beedle beedlem@e-architects.com
59
35
I might have been able to believe the "product owner is a chicken" argument in the old days before Scrum teams
started seeing the value of acceptance-test-driven development. However, many Scrum teams have been shifting in
that direction and having Product Owners come into a Sprint with known, high-level conditions of satisfaction
(COS) identified for each or many product backlog items selected for the Sprint. During the Sprint the product
owner (in collaboration with others, esp. testers) refines and automates those high-level COS into more specific
ones. These become the actual tests. This means the Product Owner has deliverables. The Product Owner has
always been committed. The Product Owner speaks in the Daily Scrum. That simple change of mindset eliminates
this entire class of problems.
--Mike61
________________________________________________________________________
Yes, fully agree with Mike AS LONG AS the product owner has committed with the team to what will be
demonstrated at the Sprint Review. Without the commitment, the Product Owner remains a highly interested but not
committed chicken,
Ken62
61
62
36
63
37
Product Owner is the person with the most information about the items on the backlog. It is usually not possible and
not sensible to document/communicate all the functionality of the backlog items in great detail during the Sprint
Planning Meeting from the Product Owner to the Team.
Therefore most common way of interaction in our organization between the Product Owner and the team is when
the Team/Team Members ask for more information about a certain feature that is being implemented during the
Sprint. I think it is a vital part of Agile methodologies (including Scrum). I agree with you that the initiator should
be the Team, not the Product Owner. The Team knows (at least they should!) when they do not have enough
information about the specific details of a backlog item.
Regards,
Jukka66
66
38
67
39
69
40
Of course, as we are gathering more and more assertions, the product owner won't look on every detail. We
accomplish this through frameworks that put all tests and other checks together and display them on a common
dashboard. Check out CruiseControl for that kind of stuff.
HTH
Andreas Schliep72
Software Factory
WEB.DE AG
72
41
73
From: Paul Hodgetts phodgetts@Agilelogic.com; Sent: Friday, March 18, 2005 at 6:11 PM
42
74
43
These three measurements can all be improved by an empowered team (regardless of its internal reporting structure).
If the performance of individuals in the team is measured by these team-level metrics, then individuals will work to
maximize them. And True Goodness will result.
:-)
Mishkin.75
________________________________________________________________________
Great points Mishkin. Team-based performance evaluation based on the metrics Mary proposes will go far towards
"True Goodness," as you say. Individual performance rewards are almost always sub-optimal. Finding a way to
move the individual's performance feedback towards team-based metric, say 60/40 split, team versus individual, is a
good place to start.
Jim76
75
76
From: Mishkin Berteig mishkin-Agile@berteig.com; Sent: Thursday, January 13, 2005 at 11:41 AM
From: Jim York jim.york@ccpace.com
44
Section Four:
Development Practices
45
77
From: Scott Berkun scottberkun2002@yahoo.com; Sent: Wednesday, November 10, 2004 at 3:54 PM
Subject: Re: Observation for Best Practices...
78
From: Chris Pehura chris@pehura.com; Sent: Wednesday, November 10, 2004 at 5:21 PM
46
47
79
From: Shimmings, Ian ian.shimmings@conchango.com; Sent: Monday, September 13, 2004 at 3:25 PM
Subject: RE: Re: Intermediate Result Presentation
80
From: Mike Dwyer mike.dwyer1@comcast.net
81
From: Shimmings, Ian ian.shimmings@conchango.com
48
Which team will get better feedback as to the true state of their system? ;-)
I'm curious, what realizations did the team have that made them move towards faster build cycles? Were there
specific incidents, or what motivated them to take it to that level?
Regards,
Paul82
CEO, Principal Consultant: Agile Logic http://www.Agilelogic.com/
82
49
83
50
84
51
85
From: Simon Baker simonbaker@think-box.co.uk; Sent: Tuesday, November 16, 2004 at 4:38 PM
Subject: The Sprint Goal
52
86
From: Bud Cookson bud@ridgelinesoftware.biz; Sent: Wednesday, June 21, 2006 at 2:13 PM
53
54
87
From: Jay R. Gindin jayg@blarg.net; Sent: Monday, December 06, 2004 at 11:29 PM
Subject: Sprint Calendars
88
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Tuesday, December 7, 2004 at 7:28 PM
89
From: Victor Szalvay victor@danubetech.com; Sent: Tuesday, December 7, 2004 at 3:08 PM
90
From: "Deb" deborah@hartmann.net; Sent: Tuesday, December 7, 2004 at 11:02 PM
55
4.10 Estimates
If we have a meeting like "HR Meeting on Harassment" we don't include that as a task. If it's something like
"Schedule a meeting about the xyz design" that we write up (as a task card, for us) we do put a number on that and
do write it as a task, mostly so we don't forget about it. The interesting thing about meetings is that they add
predictability to your burndown. For example, if 5 of us need to meet about the xyz design for (we think) 2 hours.
We put 10 hours on that task card. Meeting estimates are much more accurate than coding estimates, for example.
So, we'll meet for 1:45 or 2:10 and that's pretty close to the 10 hours total we planned. Next day we'll have burneddown 10 hours for that meeting. There's nothing wrong with this except it's something to be aware of. For example,
my current team starts each 2-week Sprint with around 250 hours of work planned. If a lot of that is meetings (it
shouldn't be) that 250 might be fairly easily completed. If none of it is meetings, it might be hard to finish all the
planned work.
In general, any time I know something new about a task, I update the card. So, in your example below if I have a
"code the xyz" task that I think is 5 hours but then discover I need a big meeting. I'll keep the "code the xyz" task
card (possibly increasing or decreasing its estimate) but may add a new card saying, "xyz design meeting, 6 hours"
(6 = 2 hours * 3 developers). If it's "a couple of hours" I don't bother changing the card. By the way, all these cards
are hanging on our wall so we can all see them and update them continuously. I can provide a photo if it would
help.91
91
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Monday, September 27, 2004 at 2:33 PM
Subject: RE: Seeking Some Experienced Advice
56
92
From: Lizard <muddlizard@g...>; Sent: Friday, December 17, 2004 at 7:54 PM
Subject: Newbie Q About Testing Time Estimates
93
From Mike Cohn mike@mountaingoatsoftware.com; Sent: Saturday, December 18, 2004 at 6:06 PM
94
From: Lisa Crispin <lisa.crispin@a...>; Sent: Tuesday, December 21, 2004 at 4:47 PM
57
58
________________________________________________________________________
Well, it supports my standard theory that smaller stories are better, down to a day or two anyway. I'm not sure about
the time-box idea, but I suspect that if a person worked by taking a multi-day story and slicing it into mini /stories/
rather than little /tasks/, and implemented it punching through most or all of the software layers, it would work
better.
So if in two (or more) time boxes, my focus was on story completion rather than database reorganization, I think a
team would get at the root causes that your short estimates are getting at indirectly.
________________________________________________________________________
For me, the distinction between size estimates and duration estimates is crucial. Much trouble ensues when size
estimates are expressed in time units. This is why I believe Mike Cohn is correct to favor Relative Sizing Points (or
bananas, or gummi bears) over Ideal Days. Both are estimates of size, but the second implies a duration and chronic
confusion will follow.
Remember that the size of an item is unchanging. My most frequent analogy (which I stole) is that of cutting grass.
The size of the job is expressed in acres, say 2 acres. The length of time it will take to mow this amount of grass is a
duration estimate, which is dependent on many things (equipment, number of people, weather, etc.). The size of the
job, 2 acres, never changes.
So, backlog items are given size estimates. Tasks are given duration estimates. It is at the task level where an actual
duration is estimated.
Dan Pierce95
________________________________________________________________________
I like this idea of size vs. duration. We never estimate duration of tasks; we only ever estimate size of backlog
items. Initially our estimates were time-related, but that brought all sorts of trouble. Once we moved into size
estimates, the troubles pretty much stopped completely.
I actually believe that time estimates for tasks depend on so many factors that they become virtually meaningless.
Resources become available or unavailable as you go along and the environment changes all the time.
If a given task is executed by resource A, it will take 4 hours. Resource B will need 8 hours (lack of domain
knowledge or technology skills). At the beginning of a Sprint it is virtually impossible to tell who will execute a
given task, so how are you going to estimate time? Sometimes what appears to be simple grows out of all
proportion and sometimes something that appears complex collapses into nothing because somebody digs up a piece
of information that wasn't available during the estimating. If one wanted to pin down exact time estimates, this
would require exact knowledge of resource availability and very soon one would find oneself back in the world of
waterfall.
The temptation is strong, but from experience I'd have to say, stay away from it.
In addition, what are the time estimates going to be used for? At the end of the Sprint the amount of work remaining
(in hours or whatever unit you like) is meaningless, as is the amount of actual work done. The only thing that counts
is the number of backlog items DONE.
95
Dan Pierce, Embedded Software Development Manager
Thales Communications, Inc.
22605 Gateway Center Drive Clarksburg, MD 20871
59
To stay with the analogy: it doesn't matter how many people or hours were needed or whether it was raining or not,
the only question that remains is: has the grass been mowed on all of the 2 acres?
Regards,
Wolfgang96
96
From: Wolfgang Schulze Zachau wolfgang@mobilefun.co.uk; Sent: Wednesday, June 21, 2006 at 8:07 AM
60
97
From: Ron Jeffries ronjeffries@XProgramming.com; Sent: Thursday, January 20, 2005 at 8:07 AM
Subject: Re: Technical Debt and the Product Backlog
61
98
From: "tiggerbob_93003" bbrodie@epolicysolutions.com; Sent: Wednesday, March 16, 2005 at 8:31 PM
Subject: Requirements Process and Scrum
99
From: Steven Gordon sagordon@asu.edu; Sent: Wednesday, March 16, 2005 at 2:48 PM
100
From: Mike Dwyer mike.dwyer1@comcast.net; Sent: Wednesday, March 16, 2005 at 9:59 PM
62
4.15 Testing
I've never used Scrum on a project that was done in a scripting language, if that's what you mean. We have used
scripting languages as part of our approach to testing. The tester needs to be an integral part of the team as much
so as any programmer. I like to have the tester spend some time talking with the customer about the likely stories
(features) coming into the *next* Sprint so that when the programmers start coding they already have high-level
acceptance tests written. We like to capture these in FitNesse. Involve your tester in more discussions and have her
use the strengths she brings to the team presumably she's a good tester despite your comment that she doesn't have
strong tech skills. She should still be able to specify tests in advance or use tools such as FitNesse and Canoo
WebTest.101
101
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Monday, September 27, 2004 at 2:33 PM
Subject: RE: Seeking Some Experienced Advice
63
64
________________________________________________________________________
TDD is hard to start doing, period. So it's much harder to do without someone in authority prodding the team to
deliver better quality. It's harder to influence the team if you're a tester and not a programmer. I feel your pain. Are
there any programmers who are sympathetic to your point of view? If so, see if you can brainstorm with them.
If you're automating your customer-facing tests, and the programmers are not writing automated unit tests, you can
point out that many of your tests could be covered by unit tests, which have a much better ROI.
You can always do what I've done and say, "Ron Jeffries said the entire team is responsible for testing, and the story
isn't done until the acceptance tests are done. (OK, I didn't say Ron specifically, but I pointed out what the many
publications on XP said, being as I was on an XP team). If your team honestly wants to benefit from Agile
principles and values, they need to try to implement key practices.
I highly recommend "Fearless Change" by Mary Lynn Manns and Linda Rising. I have used their patterns to get
teams to try Agile practices.
-- Lisa104
103
104
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Tuesday, December 21, 2004 at 10:21 PM
From: Lisa Crispin lisa.crispin@att.net
65
105
66
TDD converts debugging into a system that records an endless trail of each of these experiments. Going forward
into maintenance, for each change you make, you get an invisible programmer debugging your code, over thousands
of scenarios, in a second.
-- Phlip108
________________________________________________________________________
Hi,
Unit testing as it is emphasized today in TDD and XP has mainly two backgrounds:
a) In XP you do not very detailed requirements analysis, but story boards and planning games, like CRC card
sessions.
So, writing unit tests first helps the programmer to understand the requirements. With "the customer in house" you
can use (and must use) the tests to validate whether your requirements are right. Further: writing a lot of unit tests
comes from the Smalltak development fraction where your unit tests partly replace the compiler type checking and
also lint.
b) Your main goal in having unit tests is to have a "regression test suit" in case you do refactorings, bug fixes or you
simply continue in your next development goal.
Finally: most software development shops have no clue how to value whether they "need" unit tests or not. If you
ask one who does not do unit tests he will ALWAYS claim he either does not need them or they don't bring him any
value (ROI). Likewise everybody doing them knows that they bring him ROI, like I pointed out in b) As long as
one without unit tests never does one, he has no numbers from which he could judge. Most of the time, people
without unit tests have no decent issue tracking/bug fixing/project tracking either. So how should they know how
much it costs them NOT TO DO TDD?
I disagree that detailed requirement analysis does not work, and also I disagree that the tests are needed to get the
requirements fixed. Often this may be the case but as a general rule, its far to strong.
Suppose you don't do a use case and a few scenarios, but write the test and the code, which passes that test. And
now? Now you check whether the code/test is right. Thats expensive, especially if the code and test is wrong!
Before you code, regardless whether with TDD or not, you should do planning games with paper sheets where you
have a paper form holding data and objects and you pass them around between requirements analysts like in CRC or
XP planning games.
If you start directly with TDD you are not "coding" but "prototyping" ... a completely different approach with
different goals (throw away e.g.).
Regarding OOP reinvented unit tests ... no they did not. In OOP unit tests are far more complicated than in
C/Pascal like languages because its harder to write stubs.
Instead of writing unit tests, I always start with writing tests based on a scenario. That does give me an integration
test over a small subsystem. All scenarios should cover all the code written for a full use case. A coverage tool
helps. When the software evolves and "libraries" for it get crafted and refactoring gets more and more we start
writing unit tests. In general we have far more "scenario" tests than unit tests. As some posters here were right: that
bad code we don't write. So if our scenario tests have a full coverage we hope they hold. We don't make avionic
systems here :D But well, that risk we judge depending on likelihood and cost of failure.
Regards,
Angelo109
108
67
________________________________________________________________________
> Gary F wrote:
> Other types of testing don't have the same benefit with regard to debugging that unit tests have. They certainly
have other types of value, but unit tests provide a tremendous tool for isolating bugs.
TDD often goes a little farther, into preventing bugs.
When you write a failing test, you take care that the test is minimal, but it fails for exactly the correct reason.
When you make the test pass, you are allowed to lie. Returning to a green bar is more important than making the
code honest. This implies one often takes more care to ensure a test fails for the correct reason than one takes to
make the test pass!
If you know the code lies, you must write more tests that expose the lie. When these tests get their green bar, you
are free to refactor the code. Minimizing it and resolving duplication overwhelmingly crushes out opportunities for
bugs. The leanest code that fits a set of tests has no room for bugs.
One practices the technique of using tests to force out temporary lies, even when you don't know the code lies.
In greenfield projects, when adding logic-driven features, this form of TDD rapidly drives code into a rock-solid
situation with vanishingly small chances of bugs.
-- Phlip110
________________________________________________________________________
The tests are not part of the code, they are written test plan/cases that someone can follow or that can be automated
via WinRunner or the like.111
________________________________________________________________________
That's the "traditional" way to do it.
The first layer of tests must be written by developers, in the same language as the source, and at the same time as the
features they test.
That will provide enough decoupling and infrastructure to then write "acceptance tests", using essentially an
alternative program user interface.
Testing thru a GUI adds a lot of burden, reducing the value of the tests, and reducing the turnaround on feedback
from decisions.
-- Phlip112
109
From: Angelo Schneider angelo.schneider@oomentor.de; Sent: Saturday, December 11, 2004 at 5:25 AM
From: Phlip phlip2005@gmail.com; Sent: Sunday, December 12, 2004 at 9:51 PM
111
From: Todd Hartle thartle@gmail.com; Sent: Monday, December 13, 2004 9:17 AM
112
From: Phlip phlip2005@gmail.com; Sent: Monday, December 13, 2004 at 7:21 AM
110
68
113
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Monday, September 27, 2004 at 2:33 PM
Subject: RE: Seeking Some Experienced Advice
69
4.19 Retrospectives
Kerths Prime Directive
Regardless of what we discover, we must understand and truly believe that everyone did the best job he or
she could, given what was known at the time, his or her skills and abilities, the resources available, and the situation
at hand.
Norman L. Kerth, Project Retrospectives, Dorset House Publishing, 2001
I usually take a very simple approach to this. All I want to know after each Iteration is:
--What should we start
--What should we stop
--What should we continue
We refer to this as a start/stop/continue meeting. Depending on the team, how I think they're feeling, my mood, and
pure chance, I'll facilitate the meeting in a variety of ways. I may go around the room asking each person for one
item or one item in a specific category. I may ask generically "what should we stop" and see who answers. We do
this for 30 minutes (roughly) at the start of each Sprint planning meeting.
Mike Cohn114
________________________________________________________________________
I am finding that many new ScrumMasters are not logging and tracking blocks. If you have done this rigorously it
provides a map of everything that went wrong.
Going through that list in the retrospective, checking off what was fixed, and evaluating what to do about open
issues will generate a strategy discussion on how to move into the next Sprint. You can add the usual issues that
come up around team function, attitudes, missteps, etc.
Dealing with the blocks is the key to unleashing a Scrum and forcing a transformation of the company.115
________________________________________________________________________
Consider looking at (to name a few possibilities):
-Backlog items selected and finished
-Number of bugs introduced/fixed and other bug trends
-Significant events that happened during the Sprint
Find a way to get some sense of how people felt about their work, maybe with a histogram that shows how satisfied
people were with their process and product.
In my experience, starting with data and some sense of how people felt about their work results in deeper insights
when it comes to answering the question: What would we do differently?
I've posted some notes on retrospectives (with pictures) here:
http://www.estherderby.com/weblog/archive/2004_10_01_archive.html#109741752540200367
Esther116
Esther Derby Associates, Inc.
114
70
117
71
72
I'm not sure I understand the fourth point in its entirety. I will say that our experience is that Scrum vastly improves
the individual team members' sense of job satisfaction. I imagine that consigning them to a month of documentation
hell doesn't help much there. Another point that I would add on here is to ask who decided to implement the
elaboration Sprint? Was it you, or did the team decide to do that? Personally, I made an extreme effort to back off
from the "how" aspect with my team. I help to organize, understand, and prioritize the work, but I really try to get
them to figure out for themselves the best way to get it done. We regularly have discussions about the process. Are
we meeting our commitments? Are we creating problems for ourselves? Are we getting all the information we
need? Are we communicating to the customers properly? Do they have any pet peeves? Then I try to get them to
address those issues and come up with solutions, draw a consensus and then implement them.
Dave Barrett,120
Lawyers' Professional Indemnity Company
120
73
121
From: Alejandro Berganza <alex@p...> Sent: Friday, December 17, 2004 at 1:33 PM
Subject: APM for Large Projects
122
From: Jim Watkins <jwatkins@t...>; Sent: Friday, December 17, 2004 at 1:55 PM
123
From: Ilja Preuss <preuss@d...> Sent: Monday, December 20, 2004 at 5:12 AM
74
75
> 1) What happens when you bite off more than you can chew for a Sprint? Do you run over? Do you descope? If
you descope how hard is it to do?
Descope, in the spirit of the overall goal of the Sprint, with the explicit involvement of the goal donor. It gets a lot
easier as you do it.
> 2) What happens when you bite off too little? Do you add more? Do you go to the movies or surf the web?
If way too little, add more. If a little too little, rest or clean up the kitchen.
> 3) When would you know that either of these were happening?
In my experience, not until about halfway through the Iteration at the earliest. That's one reason why I like shorter
Iterations.
> 4) Do you ever get it exactly right (i.e. the amount of work selected fits exactly into the Sprint)?
Not that I can recall. But we get very close.
Ron Jeffries126
www.XProgramming.com
The lyf so short, the craft so long to lerne. -- Geoffrey Chaucer
126
76
77
Another option is to use a Delphi-method estimation process, which I have found to be pretty good, and I should use
more than I currently do.
http://www.processimpact.com/articles/delphi.html
jb129
________________________________________________________________________
Warning: the following is highly heretical. It's also highly practical. Think of me as the local Jesuit.
On Monday, September 19, 2005, at 1:33:10 PM, Sam Edwards wrote:
> 1. Almost every day, new tasks are added to the list of Sprint tasks; things we forgot about at the beginning,
things that appear because we've had to change the way something is being handled, whatever. Is the Sprint task
list supposed to be so much in flux all the time?
If there's a fundamental error in Scrum, it is very likely the task list. (I await Mike Beedle's thoughtful remarks on
this assertion.
;->)
The reasons why this might be include:
Tasks can proliferate without bound;
Tasks can be used to put off doing something instead of just doing it;
Tasks can be delegation without responsibility;
Tasks take the team's eye off the ball of completing product backlog items, which is, after all, the <expletive>
point.
XP teams today often do not do much of anything with tasks, though I continue to recommend brainstorming the
tasks at planning time just so we don't forget that we have to update the Schema. It seems clear that /if/ we could
just do the backlog items without all this tasking stuff, it would be better. But it's a big "if".
Practices that support working directly from backlog items include:
Smaller backlog items. When backlog items are a day's work for someone, there's not much point in listing the
tasks. Just do them.
Less specialization in team members. When an entire backlog item can be accomplished with fewer team members
involved, there's less reason to put things on the board and take them down again.
Pair programming. If I pick up a backlog item, pair with the DB person to change the scheme, with the UI person
to do the GUI, and so on, there can be more continuity, less handoff, less overdoing and redoing, and there is of
course greater learning.
> 2. The estimates I get for tasks are invariably way off. I often get a standard "8 hours", which secretly means ("I
don't know - I'll just work on it today and see what happens"). Is there a better way to arrive at better time
estimates for tasks?
Are task estimates necessary, especially if they're being created in real time? I've found that task estimates never
add up to backlog item estimates (they are always larger) but that backlog items can in fact be implemented in less
time than the estimates say if the team just focuses on making the backlog item work.
129
From: John Brothers jbwork@undefined.com; Sent: Monday, September 19, 2005 at 1:59 PM
78
If backlog items are smaller than a couple of days, 8-hour task estimates will become a thing of the past.
Ron Jeffries130
________________________________________________________________________
Sam,
One thing you might think of is to spend more time in the Sprint Planning session. Could it be that the team and the
product owner go through the list and come to some 'kinda' agreement that has no specific FUNCTIONAL
description attached to a task? This is the value of Ron's Cards and Mike Cohn's user stories. You may want to read
up on both, as they require some thought before entering into an agreement as to what is going to be done.
Ron will rant if he wants to but the Planning game hinges on some estimations regarding technical and business that
need to be done. Of course they are wrong! That is why we refer to them as estimates. I mean when was the last
time YOU or anybody got an estimate from a tradesman that was accurate? Push back at the weenies who are
giving you a hard time about 'bad' estimates, by simply asking them how much time they estimate they will have to
work with the team during the Sprint. Keep track and then you too can get that condescending look when you sigh
and comment about their poor estimates and how they impacted the team. About 1 time is needed to keep that song
off the iPod.
Second Scrum is all about getting better. So you don't chunk well and end up with too much on your plate, cut back.
That isn't hard. What is hard is delivering when you have to no matter what. Somethings get put in the product
backlog because someone thought of them AFTER the planning session.
So? Get better next time.
Estimates. They are a synonym for wrong. BUT a string of estimates that get less and less bad show that you are
getting better. This is a good thing.
Keep Truckin' guy, take what you need from Ron, Ken, Mary P, and even my rants to build what will move you
forward, but most of all keep movin' forward by helping your team get their impediments out of the way.
Michael F. Dwyer131
130
131
From: Ron Jeffries ronjeffries@XProgramming.com; Sent: Monday, September 19, 2005 at 5:02 PM
From: Mike Dwyer mike.dwyer1@comcast.net; Sent: Monday, September 19, 2005 at 7:14 PM
79
80
132
81
I agree with your list, but I would even add more "prioritization criteria", (that way they can yell at both of us!)
4) Backlog items that reduce "business risk". Yes, it is possible to extrapolate value is 1/risk, but in many industries,
is not about "increasing the bucks coming in (revenue/profit)" is about "reducing the bucks going out (fines, bad
press, liabilities, etc.)".
5) Backlog items that allow the team to "gel" or build their confidence i.e. "low hanging fruit" items used to get
momentum.
- Mike134
134
82
135
83
84
---Sometimes left for the last release Sprint--* The product is packaged however it needs to be
* Installation and migration scripts/programs are complete
* Installation and upgrade tests run successfully
* External documentation (manuals, help files, etc.) is complete
* Training materials are done and training is ready to go
* Deployment preparation (hardware upgrades, etc.) is done
If a team is in a more formal environment, e.g., FDA regulated software, some of these items may need a formal
sign off to meet the audit requirements.
There's also the notion that all the tasks for a feature/story need to be done before the feature is done, and that a set
of features may need to be done before a release is done.
Again, this is all somewhat context-dependent, so the team needs to get together and develop their own list for their
specific product needs. It's usually an eye-opening experience when they collectively realize everything that really
needs to be complete to be "done," and how much they typically have been leaving for the last minute. Then they
understand why they are always "late!" ;-)
Paul138
CEO, Principal Consultant: Agile Logic http://www.Agilelogic.com/
________________________________________________________________________
1) Get the team in the room
2) Ask a team member to step up and be scribe
3) Ask the team "What needs to happen for a feature/requirement to get into the hands of a user?"
4) Then ask "What else?..."
5) Then ask "What else?..."
6) Generate list of the "tasks that lead to "Done"
7) Have the team decide which of these tasks belong INSIDE the Sprint and which are part of the implementation
Sprint
I led this discussion at a client's site last week and the list and level of team engagement were far more impressive
than if I'd stepped in and told the team what "Done" was (rather than have the definition originate within and among
the team). Having the definition originate with the team fosters ownership.
NOTE: Paul Hodgetts helped me think through how to lead this discussion (Thanks, Paul!) and I find it's one of the
first that any ScrumMaster or Scrum consultant should have with the development team.
138
85
Section Five:
Principles, Measurements, and Tools
86
2001-2003
389
10
2004
1206
2.9
Some code metrics as measured in Feb 2004 (2 months after Scrumming started) and today.
improvements in the code being written:
Number of packages
Number of classes
Number of methods
Lines of code
Lines per class
Methods per class
Lines per class
Cyclomatic complexity
2/04
43
718
10,451
119,950
159
14.6
10
2.3
These show
9/04
118
1,128
14,424
145,897
121
12.8
8.4
2.1
Keep in mind that things like "methods per class" going down so much means the new code written using Scrum
went down even further because the overall average is shown above, not just totals for the new code in the right
column.
Note that throughout, lines of code is "non-comment source statements". A caveat: I didn't count the JSP lines in the
2001-2003 version (not many of them as much had been migrated back into servlets) or the velocity templates in the
2004 system. If those were measured, things would look even better for the latter metrics.
I think these show a very compelling advantage to Scrum. This team became more than 300% as productive (as
measured my lines, which is somewhat questionable as a measure) and has 80% fewer defects. More importantly,
the CEO is ecstatic about what the team has achieved. They're 3x faster in lines but are probably 10x in delivering
business value. For example, the team's best programmer spent all of 2003 on a feature that has still not been used
ONCE. That doesn't happen with Scrum.
Let me know if you have any questions,
--Mike Cohn139
Author of User Stories Applied for Agile Software Development
www.mountaingoatsoftware.com
www.userstories.com
139
From: Mike Cohn mike@mountaingoatsoftware.com; Sent: Wednesday, September 29, 2004 at 11:13 AM
Subject: Re: Scrum Performance Measurements
87
140
From Jeff Sutherland jeff.sutherland@computer.org; Sent: Thursday, February 10, 2005 at 3:33 PM
88
Copyright 2005
David Anderson, Sanjiv Augustine, Christopher Avery, Alistair Cockburn, Mike Cohn, Doug DeCarlo, Donna
Fitzgerald, Jim Highsmith, Ole Jepsen, Lowell Lindstrom, Todd Little, Kent MacDonald, Polyanna Pixton, Preston
Smith and Robert Wysocki.
89
141
http://bradapp.blogspot.com/2005/03/individual-vs-collective-code.html
http://www.peterblock.com/
143
http://www.gbod.org/equipped/articles.asp?item_id=4640
144
http://www.meansbusiness.com/Leadership-and-Change-Books/Stewardship.htm
145
http://featuredrivendevelopment.org/
146
http://changingminds.org/disciplines/leadership/styles/situational_leadership_hersey_blanchard.htm
147
http://www.valdosta.edu/afrotc/pubs/notes/as300/AS300 Lsn 18 SitLead.ppt
142
90
that neither will succeed. And the collective and individual "styles" are the extreme ends of the spectrum, with
"code counselors" as the style in between those two extremes.
91
5.5 The Top 10 Key Differences Between a Team of Individuals and a Group of Individuals
The purpose of assembling a team is to accomplish bigger goals than any that would be possible for the individual
working alone. The aim and purpose of a team is to perform, get results and achieve victory in the workplace and
marketplace.
The very best managers are those who can gather together a group of individuals and mold them into a team. Here
are ten key differentials to help you mold your people into a pro-active and productive team.
1. Understandings:
In a group, members think they are grouped together for administrative purposes only. Individuals sometimes cross
purposes with others.
In a team, members recognize their independence and understand both personal and team goals are best
accomplished with mutual support. Time is not wasted struggling over "Turf" or attempting personal gain at the
expense of others.
2. Ownership:
In a group, members tend to focus on themselves because they are not sufficiently involved in planning the unit's
objectives. They approach their job simply as a hired hand. "Castle Building" is common.
In a team, members feel a sense of ownership for their jobs and unit, because they are committed to values based
common goals, which they helped establish.
3. Creativity and Contribution:
In a group, members are told what to do rather than being asked what the best approach would be. Suggestions and
creativity are not encouraged.
In a team, members contribute to the organization's success by applying their unique talents, knowledge and
creativity to team objectives.
4. Trust:
In a group, members distrust the motives of colleagues because they do not understand the role of other members.
Expressions of opinion or disagreement are considered divisive or non-supportive.
In a team, members work in a climate of trust and are encouraged to openly express ideas, opinions, disagreements
and feelings. Questions are welcomed.
5. Common Understandings:
In a group, members are so cautious about what they say, that real understanding is not possible. Game playing may
occur and communication traps be set to catch the unwary.
In a team, members practice open and honest communication. They make an effort to understand each others point
of view.
6. Personal Development:
In a group, members receive good training but are limited in applying it to the job by the manager or other group
members.
In a team, members are encouraged to continually develop skills and apply what they learn on the job. They
perceive they have the support of the team.
7. Conflict Resolution:
In a group, members find themselves in conflict situations they do not know how to resolve. Their supervisor/leader
may put off intervention until serious damage is done, i.e. a crisis situation.
In a team, members realize conflict is a normal aspect of human interaction but they view such situations as an
opportunity for new ideas and creativity. They work to resolve conflict quickly and constructively.
8. Participative Decision Making:
In a group, members may or may not participate in decisions affecting the team. Conformity often appears more
important than positive results. Win/lose situations are common.
In a team, members participate in decisions affecting the team but understand their leader must make a final ruling
whenever the team cannot decide, or an emergency exists. Positive win/win results are the goal at all times.
92
9. Clear Leadership:
In a group, members tend to work in an unstructured environment with undetermined standards of performance.
Leaders do not walk the talk and tend to lead from behind a desk.
In a team, members work in a structured environment; they know what boundaries exist and who has final authority.
The leader sets agreed high standards of performance and he/she is respected via active, willing participation.
10. Commitment:
In a group, members are uncommitted towards excellence and personal pride. Performance levels tend to be
mediocre. Staff turnover is high because talented individuals quickly recognize that (a) personal expectations are
not being fulfilled, (b) they are not learning and growing from others and (c) they are not working with the best
people.
In a team, only those committed to excellence are hired. Prospective team members are queuing at the door to be
recruited on the basis of their high levels of hard and soft skill sets. Everyone works together in a harmonious
environment.
93
148
94
95
96
5.9 Refactorings
Add Parameter
Change Bidirectional Association to
Unidirectional
Change Reference to Value
Change Unidirectional Association to
Bidirectional
Change Value to Reference
Collapse Hierarchy
Consolidate Conditional Expression
Consolidate Duplicate Conditional
Fragments
Convert Dynamic to Static Construction by
Gerard M. Davison
Convert Static to Dynamic Construction by
Gerard M. Davison
Decompose Conditional
Duplicate Observed Data
Eliminate Inter-Entity Bean Communication
Encapsulate Collection
Encapsulate Downcast
Encapsulate Field
Extract Class
Extract Interface
Extract Method
Extract Package by Gerard M. Davison
Extract Subclass
Extract Superclass
Form Template Method
Hide Delegate
Hide Method
Hide presentation tier-specific details from
the business tier
Inline Class
Inline Method
Inline Temp
Introduce A Controller
Introduce Assertion
Introduce Business Delegate
Introduce Explaining Variable
Introduce Foreign Method
Introduce Local Extension
Introduce Null Object
Introduce Parameter Object
Introduce Synchronizer Token
Localize Disparate Logic
Merge Session Beans
Move Business Logic to Session
Move Class by Gerard M. Davison
Move Field
Move Method
Parameterize Method
97
Substitute Algorithm
Use a Connection Pool
Wrap entities with session
98
99