Professional Documents
Culture Documents
13 Agile Compared
13 Agile Compared
Note: CMM is a service mark of the Software Engineering Institute at Carnegie Mellon
University.
Why, why, why does everything think the waterfall life cycle is exclusively linear? It was
designed to be extremely iterative, it allowed for the fact that there may be parallel, non-
sequential sets of requirements under development (hence multiple, simultaneous
"waterfalls"), it in no way assumed that requirements will be static during a project. It was
only after the DoD got its hands on it that this interpretation of the model came about, but
why are we listening to the DoD on something like this? ...
Why, why, why do we assume that "repeatable" and "defined" models preclude emergence?
These terms are obvious reference to the CMMs, but the CMMs don't lock you into waterfall,
spiral, or any other life cycle or methodology. With reference to requirements, the CMM
says, "don't let your junior developer bet the farm on meeting a requirement that the
project doesn't know about." Does SCRUM cover this point? Great, then SCRUM is the
METHOD whereby this important principle (NOT "process") contained in the model is carried
out...SCRUM (or JAD, or whatever) is the METHOD whereby your company avoids
inadvertently lying about its capabilities (which is what the CMM planning is largely about,
anyway.)... (See full text)
Reading Shawn Presson’s comments regarding CMM, waterfall, and agile reminded me of
Barry Boehm’s comments at XP/Agile Universe’02 and the comments of several CMM
authors at INCOSE’02. I was reminded of the good intentions and sound footings of CMM
and Waterfall, both initiated to address problems in systems development and systemic
project failures rates that have only marginally improved over the decades...
...CMM, waterfall spring from a different theoretical basis than agile processes. Increased
precision and definition are at their core, which is one of the alternatives for controlling a
process. However, this approach only works when the definition and the problem have a
mapping approaching 1:1 and the problem domain (technical, requirements, and people) is
relatively simple: “It is typical to adopt the defined (theoretical) modeling approach when
the underlying mechanisms by which a process operates are reasonably well understood.
When the process is too complicated for the defined approach, the empirical approach is the
appropriate choice.” Process Dynamics, Modeling, and Control, Ogunnaike and Ray, Oxford
University Press, 1992.
The agile process is based on the empirical approach, accepting the complexity of the
problem and addressing it through frequent inspection and constant adaptation...Empiricism
is seen even in the Agile Manifesto, where the signatories pose agility as an empirical
counterpoint to a defined approach, rather than as a new set of defined absolutes. The
various agile processes implement empiricism with the underlying practices of iterative
development, frequent inspection of status and increments of work, self-organizing teams,
emerging architecture and requirements, and solid collaboration... (See full text)
From: Ken Schwaber [ken.schwaber@verizon.net]
Sent: Sunday, September 15, 2002 4:53 PM
To: Jeff Sutherland
Subject: RE: Waterfall methodology
Jeff,
Reading Shawn Presson’s comments regarding CMM, waterfall, and agile reminded me of Barry
Boehm’s comments at XP/Agile Universe’02 and the comments of several CMM authors at
INCOSE’02. I was reminded of the good intentions and sound footings of CMM and Waterfall,
both initiated to address problems in systems development and systemic project failures
rates that have only marginally improved over the decades.
I was vastly amused by Presson’s suspicion that we’re only contrasting agile and previous
approaches to sell books. If I could even afford to drink Starbuck’s coffee with book royalties, I
would be pleased. The contrast is painted from two perspectives: the current state of CMM and
waterfall, and the theoretical contrast between CMM/waterfall and agile processes.
I was challenged at INCOSE’02; “how do you intend to prevent agile from being turned into a
pile of junk, as has happened to CMM.” CMM was transformed from its principles and vision
into its practices, KPA’s, certification, and institutionalization by DoD implementations,
consultants, carpetbaggers and everyone else trying to make a buck. The same thing happened
with structured methods, information engineering, and CASE tools that would generate code
from design and design from code. All reduced to overhead and rubble. Of course the kernels of
modeling, precision of expression, thinking before coding, and having a process persist, but for
many the weight of the commercial implementations have done their damage.
So, some of the contrast and reaction of “agilists” to CMM and waterfall are to current
implementations, not the vision nor the intentions. All of you have to is look at CMM as
implemented at most major organizations or waterfall as implemented in such methodologies as
Navigator to understand the damage. I was brought into one CMM Level 3 shop because it was
so badly implemented that development had literarally stopped. Problems couldn't be reduced to
an adequate level of agreement and definition to proceed with coding. However, the rest of the
contracst occurs because CMM, waterfall spring from a different theoretical basis than agile
processes. Increased precision and definition are at their core, which is one of the alternatives for
controlling a process. However, this approach only works when the definition and the problem
have a mapping approaching 1:1 and the problem domain (technical, requirements, and people)
is relatively simple: “It is typical to adopt the defined (theoretical) modeling approach when the
underlying mechanisms by which a process operates are reasonably well understood. When the
process is too complicated for the defined approach, the empirical approach is the appropriate
choice.” Process Dynamics, Modeling, and Control, Ogunnaike and Ray, Oxford University
Press, 1992.
The agile process is based on the empirical approach, accepting the complexity of the problem
and addressing it through frequent inspection and constant adaptation. Empiricism is seen even
in the Agile Manifesto, where the signatories pose agility as an empirical counterpoint to a
defined approach, rather than as a new set of defined absolutes. The various agile processes
implement empiricism with the underlying practices of iterative development, frequent
inspection of status and increments of work, self-organizing teams, emerging architecture and
requirements, and solid collaboration. You will not find many detailed task definitions, pert
charts, or assignments in agile processes; by contrast, CMM and waterfall progressively
implement themselves by increasing the amount of detail.
Agile is not a silver bullet. It is simply a correct approach to complex process control. It reflects
a lean manufacturing approach to software development, and – as manufacturing started doing
twenty years ago – eschews the Taylor model of defined process control.
I expect the success of agile processes to be challenged by the same degenerative, buck-making
processes that hurt CMM and waterfall. I expect adopting agile processes to be quite difficult in
many organizations because of the degree of change required; indeed, our agile processes have
primarily succeeded when organizations absolutely need the projects to succeed and can’t risk
failure. I expect agile to also be challenged by the abysmal state of engineering practices in our
industry, such as code management, release control, testing, and builds. Agile implementations
highlight poor engineering practices immediately, whereas model and definition-based
approaches let this failure slide until near the end of the project.
Shawn Presson is a kindred spirit, not a foe. We all are trying to improve the software
development process.
Ken Schwaber
Agile vs. XP: The Differences and Similarities
by Robert C. Martin
In common usage the terms XP and Agile are sometimes used to mean the same thing, and sometimes to mean
very different things. What are their origins, and what are their true definitions. Is Agile the same as XP? Is XP
Agile? We’ll answer those questions here.
XP
The term XP predates the term Agile by several years. XP stands for Extreme Programming, and is a suite of
practices, principles, and values invented by Kent Beck in the late ‘90s. Nowadays the principles and values are not
as well known, but the practices survive. Those practices are:
Development proceeds in very short iterations, typically 1-2 weeks in duration. Prior to each iteration features are
broken down into very small stories. Stories are estimated by developers and then chosen by stakeholders based
on their estimated cost and business value. The sum of story estimates planned for the current iteration cannot
exceed the sum of estimates completed in the previous iteration.
Whole Team
The team consists of developers, business analysts, QA, project managers, etc. The team works together in a lab
space or open area where collaboration and communication are maximized.
Acceptance Tests
Stories and features are defined by automated tests written by the business analysts, and QA. No story or feature
can be said to be done until the suite of acceptance tests that define it are passing.
Small Releases
Systems are released to production, or pre-production very frequently. An interval of 2-3 months is the maximum.
The minimum can be once per iteration.
Continuous Integration
The whole system is built and tested end-to-end several times each day. While new tests are made to pass, no
previously passing tests are allowed to break. Developers must continuously keep the system in a deployable state.
Collective Ownership
Code, and other work artifacts, are not owned by individuals. Any member of the team may work on any artifact at
any time.
Coding Standard
Code, and other work artifacts, look as if they were written by the team. Each team member follows the team
standard for format and appearance of the artifacts.
Metaphor
Names within code and other work artifacts are chosen to be evocative of the system being created.
Sustainable Pace
Building software is a marathon, not a sprint. Team members must run at a rate they can sustain for the long haul.
Overtime must be carefully controlled and limited. Tired people do not win.
Pair Programming
Code and other work artifacts are produced by pairs of individuals working together. One member of the pair is
responsible for the task at hand, and the other helps out. Pairs change frequently (every two hours or so) but
responsibility stays with the owner.
Developers are not allowed to write production code until they have written a failing unit test. They may not write
more of a unit test than is sufficient to fail. They may not write more production code than is sufficient to pass the
failing test. The unit tests are maintained and executed as part of the build process. No previously passing unit test
is allowed to fail.
Refactoring
Code, and other work artifacts, are continuously reviewed and kept as clean as possible. It is not sufficient that
code works; it must also be clean.
Simple Design
The simplest design that suffices for the task at hand, is the right design. More complex and general designs may
become useful later, but not now. We do not wish to carry the weight of that complexity while it is not needed.
Sufficient for the day are the complexities therein.
Agile
XP was one of several so-called “lightweight” methods. Others in that category were SCRUM, DSDM, Crystal, FDD,
etc. Each of these methods was created as a reaction to the consistent and increasing failure of the heavier,
waterfall derived methods. Each of these lightweight methods had it’s own set of principles, values, and practices.
Each was championed by its own group of adherents. In February of 2000, Object Mentor called a meeting of these
adherents in Snowbird, Utah. The purpose of that meeting was to see whether or not we could merge the values
and principles of the various methods into a consistent whole.
Remarkably, the attendees of that meeting managed to set aside their differences and worth together to form a
manifesto, and then a set of principles that encompassed all of the lightweight methods. They also came up with a
name. They called it: Agile. The Agile Manifesto describes the values we chose:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we
have come to value:
That is, while there is value in the items on the right, we value the items on the left more.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning,
Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber,
Jeff Sutherland, Dave Thomas
Conclusion
XP is a set of practices that conform to the values and principles of Agile. XP is a discrete method, whereas Agile is
a classification. There are many Agile methods, XP is just one of them.
Having said that, none of the other Agile methods are as well defined, or as broad in scope as XP. Scrum, for
example, is roughly equivalent to XP’s Planning game practice, with elements of Whole Team. While there are
differences in the details, it is fair to say that Scrum is a subset of XP. Indeed, many Scrum teams augment their
process by adding in many of the XP practices such as Acceptance Testing, Pair Programming, Continuous
Integration, and especially Test Driven Development.
Of all the Agile methods, XP is the only method that provides deep and profound disciplines for the way developers
do their daily work. Of those disciplines, Test Driven Development is the most revolutionary and impactful.
Agile vs. RUP
At our company we have these meetings, where people from the same competence in a region come
together to talk about all kinds of stuff, from business related to more fun related stuff. Because I went to
the Dutch Developer Days 2005 with Edwin Waegemakers, we were asked to do a little presentation. We
decided to give three small presentations, one about Team System, one about integration strategy and
one about Agile Development. I would do first and last.
I've written about the Agile presentation at DevDays before and planned to use it in my own presentation,
but a little less on the archetypes and a little more my personal experience. The plan was to bring it lightly
and at the same time trigger our RUP 'specialists' as an Agile hooligan, and I can say it worked pretty
well. I placed Agile strongly against RUP, although in practice this of course isn't the case. Or at least not
as hard as I had put it.
Fun thing was, that our director just had seen a presentation last week, where RUP was presented as thé
answer to all problems in projects, sort of speak. This week I presented it as if RUP was about just
documentation, and Agile development would really work. His conclusion was that now he knows he's
getting old, as he had never seen (technological) advancements update so fast. Last week RUP was
everything, now it's already outdated and replaced. ;-)
Project swing
Of course Agile isn't a replacement for RUP and you cannot appoint one as a clear winner. I don't think
that's necessary either. I think RUP is great, but you have to have experienced people doing RUP
projects as you don't want to overload everyone with documentation, but also have to carefully look at
what the customer wants. RUP also uses iterations, but for some reason I have the feeling Agile
development can better understand and react to what the customers needs, not what he thinks he wants.
That comes to show in this funny picture of a swing. It's funny to see how everyone within a project has
(or can have) a different view on the swing. I think it's hard to get the same swing in every picture. But my
believe is, it's much harder to retrieve from a customer to what he really wants and needs. To get the
same picture in how a customer explains it and what a customer really needed, you need good iterations
and a lot of communication. For some reason, I have the feeling communication in RUP is more through
documents where as in Agile it's face to face communcation between the customer and the entire team.
And I think that's an important difference.
In the agile community, most of us have bought into and adopted the Agile mental
model. But that mental model has assumptions embedded into that may not be correct
under all circumstances. Part of that mental model includes the efficacy of the work
item backlog as a tool for tracking, prioritizing and communicating work to be done in
the future.
I will be the first to say that Agile is far better than waterfall in almost every situation
(the exception being the mythical project with stable requirements, business
environment, technology and team).
That said, let's look at backlogs from another perspective: if a backlog was the only
thing you delivered to the customer, would they pay for it? If you spent even just a few
hours coaching a business representative to build a backlog, but there was no team to
implment it, would that person really find value in the backlog itself? Would they be
able to deliver ROI just from a backlog? I think the answer is a clear "no".
That set of questions may seem silly, but from a lean perspective, they are among the
most important questions. Is an artifact/process value-added or non-value-added?
Since the backlog is clearly not a value added artifact/process (pause for effect)... it is
waste!
When one is doing agile effectively, the backlog may in fact be one of the larger sources
of waste! If the team has a stable velocity, there will come a point when the backlog
becomes the constraint on the overall cycle time going from idea to ROI. If the backlog
is large/long, and as Mary Poppendieck said if there is more than ...maybe two or three
sprints of work.... in there, then it may be time to find ways of constraining the size of
the backlog. I have two suggestions:
Capacity of Team(s):
Find a way to increase the capacity of the team so that the backlog size reduces and
then goes into a steady state. This may mean augmenting the staff.
(This is just theory to me at this point.) Make it a condition that all backlog items must
have a positive ROI. In other words, the cost of building the backlog item needs to be
less than the value delivered, taking into account time value of money. Don't let items
onto the backlog unless this positive ROI can be demonstrated.
I believe the lack of this second discipline (assigning ROI to work items) is one of the
main reasons that most agile methods such as Scrum allow an unlimited backlog size:
there is no realistic way to gate the work that gets onto the backlog!
Until teams get to Agile nirvana (stable velocity, continuous delivery of business value,
high-performance cohesive teams), having an unlimited backlog seems like a very
reasonable thing: it's not the constraint or the primary source of waste. However,
eventually the backlog will become a primary source of waste and it needs to be treated
in a disciplined manner.
With a stable and well-functioning team, what other ways might there be to reduce the
size of the backlog so that cycle time is substantially reduced?