Professional Documents
Culture Documents
The term agile (sometimes written Agile)[3] was popularized, in this context, by the Manifesto for Agile
Software Development.[4] The values and principles espoused in this manifesto were derived from
and underpin a broad range of software development frameworks, including Scrum and Kanban.[5][6]
There is significant anecdotal evidence that adopting agile practices and values improves the agility
of software professionals, teams and organizations; however, some empirical studies have found no
scientific evidence.[7][8]
History
Iterative and incremental development methods can be traced back as early as 1957,[9] with
evolutionary project management[10][11] and adaptive software development[12] emerging in the early
1970s.[citation needed]
During the 1990s, a number of lightweight software development methods evolved in reaction to the
prevailing heavyweight methods that critics described as overly regulated, planned, and micro-
managed. These included: rapid application development (RAD), from 1991;[13][14] the unified
process (UP) and dynamic systems development method (DSDM), both from 1994; Scrum, from
1995; Crystal Clear and extreme programming (XP), both from 1996; and feature-driven
development, from 1997. Although these all originated before the publication of the Agile Manifesto,
they are now collectively referred to as agile software development methods.[6] At the same time,
similar changes were underway in manufacturing[15] and aerospace.[16]
In 2001, seventeen software developers met at a resort in Snowbird, Utah to discuss these
lightweight development methods, including among others Kent Beck, Ward Cunningham, Dave
Thomas, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, and Robert C. Martin.
Together they published the Manifesto for Agile Software Development.[4]
In 2005, a group headed by Cockburn and Highsmith wrote an addendum of project
management principles, the PM Declaration of Interdependence,[17] to guide software project
management according to agile software development methods.
In 2009, a group working with Martin wrote an extension of software development principles,
the Software Craftsmanship Manifesto, to guide agile software development according
to professional conduct and mastery.
In 2011, the Agile Alliance created the Guide to Agile Practices (renamed the Agile Glossary in
2016),[18] an evolving open-source compendium of the working definitions of agile practices, terms,
and elements, along with interpretations and experience guidelines from the worldwide community of
agile practitioners.
Tools and processes are important, but it is more important to have competent people working
together effectively.
Good documentation is useful in helping people to understand how the software is built and how
to use it, but the main point of development is to create software, not documentation.
A contract is important but is no substitute for working closely with customers to discover what
they need.
A project plan is important, but it must not be too rigid to accommodate changes in technology or
the environment, stakeholders' priorities, and people's understanding of the problem and its
solution.
Some of the authors formed the Agile Alliance, a non-profit organization that promotes software
development according to the manifesto's values and principles. Introducing the manifesto on behalf
of the Agile Alliance, Jim Highsmith said,
The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the
word methodology. We want to restore a balance. We embrace modeling, but not in order to file
some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of
pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a
turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other
Agile Methodologies as "hackers" are ignorant of both the methodologies and the original definition
of the term hacker.
Overview
Pair programming, an agile development technique used by XP.