Documente Academic
Documente Profesional
Documente Cultură
Agile/Extreme in Context 1
Speaker's Notes 12/02/02
Agile/Extreme in Context 2
Speaker's Notes 12/02/02
Agile/Extreme in Context 3
Speaker's Notes 12/02/02
•The ‘defined’ processes and model frameworks have been well-described in many forums over
the last ten years or so; and have been proposed as the solution to the ‘software engineering
crises’.
•As McBreen suggests, we have a systemic problem with smaller applications (ie not DOD,
NASA, Ericsson, PeopleSoft size applications) we have been trying to control and manage these in
that same way that we do the massive projects, with some level of ‘tailoring’
•scaling down is difficult, generally experts with the necessary competencies are not used
to determine an appropriate process, its often a hack and slash approach that becomes more
frenetic as project time slips away.
•Of course, even at the anarchic end of the spectrum there is still process, it is simply
unrecognized, implicit and individual - the heroic process
Winchester’s Yangtse management description is useful here:
• Taoists supported the building of only very low levees beside rivers and letting the rivers devise
their own way to the sea. Thus, as parameters changed the river still ended up at the sea without
too much effort
•Confucianists believed that massive dykes should be built to corral the waterways along man-
made courses of man’s choice. Thus as parameters changed (frequently, due to natural events)
unexpected and undesired effects occurred, requiring massive amounts of rebuilding.
•“Rigorous processes are designed to standardize people to the organization; agile processes are
designed to capitalize on each individual and each team’s unique strengths.” (Cockburn and
Highsmith)
Agile/Extreme in Context 4
Speaker's Notes 12/02/02
•The agile group are practitioners who ‘mine’ best practices, reformulate them as
abstractions and then disseminate them - they do not sit in offices and simply pontificate!
Although many of them work as managers of projects it is in the context of project
leadership rather than by command and control.
•Corollary to the manifesto - we have to find ways to adapt the way we ‘value’ the things
on the right to achieve the higher value on the left. This does not necessarily imply simply
discarding them.
•Relying on interactions between individuals facilitates sharing of information and
rapid changes to process when needed
•Working software allows us to determine the project velocity and gives feedback
•Increased interactions means that tacit knowledge can be shared, thus minimises
reliance on ‘high maintenance’ documentation
•Customer collaboration puts us on all the same team but we have to make sure that
we have users with domain-experience not simply whoever hasn’t got too much
work to do (the latter has often been the case with customer representatives
•Cast iron contracts often result in delivering the ‘wrong’ product
•Important to note that the Agile approach is a generative approach - i.e. processes emerge
that are useful in the context of the specific project, rather than the more usual inclusive
approaches that try to account for every possible project eventuality.
•This context sensitivity of process means that any centralized control/management
is only going to be at the macro level of detail (what is required) rather than micro
Agile/Extreme level (how we achieve what is required).
in Context 5
Speaker's Notes 12/02/02
•The ‘plan’ is updated for each iteration with information about working software from the
previous iteration and what is to be implemented in the next iteration
•Working software is a measure of progress
•Reduce the elapsed time between making a decision and seeing its consequences
•Accommodating change accepts that the customer’s organization is probably emergent rather
than stable and supports the customer’s need to meet changing organizational goals (possibly
unknown or unidentified earlier in the project)
•useful parameter for determining if Agile is appropriate for a project
•The team environment is the most difficult from a project management perspective;
developers are not interchangeable units; developers are more skilled than their managers in
their ability to produce software which is what the customer wants; managers provide
interfaces, facilitation and coaching rather than command and control; team’s internal
organization may change over time to reflect the current needs of the project (anecdote -
architect to integration champion transition)
•Self-organizing teams; Processes support sustainable development
•Strive for good design and technical excellence
•Developer’s decide what is needed for good design and technical excellence; if there is
an organizational requirement for specific processes/documents then either these need
to be accommodated as required project outcomes, or the feasibility of an agile
approach should be questioned?
Agile/Extreme in Context 6
Speaker's Notes 12/02/02
•Points 1 and 2 both require really close collaboration with a useful customer,
preferable on-site to be part of the team
•Clean design is something that needs to be explained, seen and mentored. Could
be the focus of a presentation or workshop on ‘what is simple design’ not within
scope of this presentation.
Agile/Extreme in Context 7
Speaker's Notes 12/02/02
Insufficient time to go into any detail on these other than these few points.
Audience should be advised to read further if they have an interest.
•Important to note that there are few reported case studies (the Chrysler 3C
informs the Extreme methodology) about the efficacy or otherwise of any of
these approached; information is mainly anecdotal and with some apparent
biases.
(Fertile ground for Iterative Action Research style projects).
Agile/Extreme in Context 8
Speaker's Notes 12/02/02
Values, principles and activities are self-explanatory, and can be mapped back
to the Agile Manifest Value statements and Principles.
Next slide covers the twelve practices. Then some proposed strategies.
Agile/Extreme in Context 9
Speaker's Notes 12/02/02
•Planning - scope, business priorities, composition of releases, technical estimates, release dates
•Small releases - most valuable business requirements, short cycles
•Metaphor - overarching, sometimes akin to an architecture - problematic area, metaphor isn’t the
system; metaphor may provide domain vocabulary
•Simple design - runs all tests, no duplicated logic, states intentions to developers and hasn’t
smallest number of classes and methods to achieve goals - area subject to abuse
•Testing - write tests for production methods before methods themselves, use automated testing
framework (eg JUnit), all tests must run - strength, identifying tests encourages better designs
•Refactoring - small low risk steps to clean-up code that has become ugly through iterations, a
direct outcome of code evolution
•Pair programming - dynamic, strategic and operational pair members (thinker and mouser);
whole is better than sum of parts; culturally problematic unless evolved naturally like
brainstorming; skills transfer and mentoring; distribution of tactic knowledge
•Collective ownership - if there’s a problem anyone can fix it (highly dependent on continuous
integration); adding value to code;
•Continuous integration - daily at least; avoids merge clashes, identifies progress, set up and run
integration and regression testing avoid ‘big-bang’ testing problems; easy to identify where
problems are (ie most recent check-ins)
•40 hour week - all about sustainable development and ‘get a life’, productivity and and
identifying schedule problems within an iteration
•On-site customer - set internal priorities; resolve disputes; answer questions; team bonding
•Coding standards - essential for dynamic pair programming and effective refactoring
Agile/Extreme in Context 10
Speaker's Notes 12/02/02
Since this is a group of IS people ( and time is limited) just look at how the
principles/practices/values support instantiating a subset of these strategies
•Development
•continuous iteration; collective (artifact) ownership; pair programming;
•Design
•simplest thing that can work (relies on all four values communication, simplicity,
feedback and courage); refactoring; assume simplicity (Occam’s razor) - resulting
constraints that define the simplest thing are
•system communicates everything you want to communicate
•system contains no duplicate code
•system has fewest possible classes
•system has fewest possible methods
•travel light; incremental change;
•throw away designs (rather than CASE-based pictures)
•design is in the code
•Testing
•developers write tests method-by-method before coding
•write tests before refactoring to assess viability of refactored code
•customers write tests from their stories, developing scenarios
Agile/Extreme in Context 11
Speaker's Notes 12/02/02
Planning game
40 Hour week
Metaphor
Simple design
Refactoring
Coding standards
Continuous integration
Collective ownership
Agile/Extreme in Context 12
Speaker's Notes 12/02/02
Architecture Design for current requirements Design for current and future
requirements
(Boehm 2002)
12/02/02 Agile/Extreme in Context 13
Agile/Extreme in Context 13
Speaker's Notes 12/02/02
At this point, need to avoid the ubiquitous ‘steering committee’ approach and
suggest some original alternatives to prompt buy-in across the organization
and get access to real information about projects and cultures rather than the
shelf-ware procedural manuals and management perceptions about what is
happening, for example
‘study groups’ to find out about Agile variants, disseminate
information and generate ideas as to who each would ‘fit’ into the
organization
‘brown bag’ lunches at each location to determine perceptions of the
current organizational and project parameters
web discussion group(s) on the intranet to promote informal exchange
of ideas
encourage HO IS to form a working group determine what it is they
really need to ‘standardize’ in terms of process, artifacts and
tools/technology
Agile/Extreme in Context 14
Speaker's Notes 12/02/02
Agile/Extreme in Context 15