Questioning Extreme Programming · ©McBreen.Consulting Questioning Extreme Programming Page 22 XP...
Transcript of Questioning Extreme Programming · ©McBreen.Consulting Questioning Extreme Programming Page 22 XP...
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-1
©2002 McBreen.Consulting
Questioning Extreme Programming
Pete McBreen, [email protected]
©McBreen.Consulting Page 2Questioning Extreme Programming
The arguments for and against ExtremeProgramming are many and varied
Why is there a shift towards the so-calledAgile Methodologies?
Extreme Programming is an answer to whatquestion?
Under what conditions is XP successful?
Under what conditions are alternativeprocesses more appropriate?
Is Extreme Programming for you?
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-2
©McBreen.Consulting Page 3Questioning Extreme Programming
Traditional software developmentapproaches are not always successful
An extremist view of traditional softwaredevelopment is Crummy Software Late
Duff O’Melia of RoleModel Software askssome hard questionsHow do you know your code works?Have you ever been afraid to change code?How do you know your design is right?What happens if your star programmer is hit by a
bus?
©McBreen.Consulting Page 4Questioning Extreme Programming
Something is rotten in the state of softwaredevelopment
The Dilbert Phenomenon is a very stronghint that there are serious problemsPointy Haired Boss jokes are not funny any more
Organizations are completely dependent onsoftware, but coding is a lousy jobThe Suits make the decisions, but the techs get
blamed for failing to deliver the code
Even the promise of dot com riches turnedout to be a death march to nowhere
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-3
©McBreen.Consulting Page 5Questioning Extreme Programming
Developers are sick and tired of processesthat make developing great software harder
In the last five years developers havewoken up and said It can be different!The era of big process software engineering is over,
the SEI CMM failed to deliverGood Enough Software is just a fancy face on the
good old blue screen of death
Small wonder then that many developers nowcontribute to Open Source projects
Many developers have decided there has tobe a better, more agile way to do software
©McBreen.Consulting Page 6Questioning Extreme Programming
Manifesto for Agile Software Development
We are uncovering better ways of developing softwareby doing it and helping others do it. Through thiswork we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right,we value the items on the left more.
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-4
©McBreen.Consulting Page 7Questioning Extreme Programming
The methodologies that contributed to themanifesto are quite diverse
Adaptive Software Development
Crystal methods
Dynamic Systems Development Method
Extreme Programming
Feature Driven Development
Pragmatic Programming
Scrum
©McBreen.Consulting Page 8Questioning Extreme Programming
Adaptive Software Development was createdby Jim Highsmith
ASD is based on the ideas of Complexityand EmergencenManaging the workstate rather than the
workflow is the key differencenCollaboration and self-organization enable
emergence
nDescribes a new lifecycle Speculate, Collaborate,Learn
ASD is intended for extreme projects thatpush the limits of what is possible
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-5
©McBreen.Consulting Page 9Questioning Extreme Programming
The Crystal methods were developed byAlistair Cockburn
The Crystal methods apply the idea that allprocesses are situational
They are a set of human scale, tolerantprocesses tuned for different projectsn Trust people to be good citizensnUse incremental development so the team gets
practice at delivering, and,n Are barely sufficient to avoid overloading people
with process.
©McBreen.Consulting Page 10Questioning Extreme Programming
Dynamic Systems Development Method ismodernized Rapid Application Development
DSDM is about controlling and managingthe rapid delivery of applications
DSDM uses empowered teams to deliverquality applications through the use oftimeboxed developmentnDo enough and no more,nUse active user involvement to ensure fitness for
business purpose, andn Iterative development to converge on an accurate
solution.
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-6
©McBreen.Consulting Page 11Questioning Extreme Programming
Extreme Programming: the revenge of theprogrammers :-)
A set of synergistic practices thatmaximize the amount of work not done
A highly incremental process that allowsan on-site customer to steer the projectnBased on 5 core values Communication,
Simplicity, Feedback, Courage and RespectnUses pair programming for all production codenDoes the simplest thing that could possibly workn Preaches the idea of Test Driven Development
©McBreen.Consulting Page 12Questioning Extreme Programming
Feature Driven Development was designedby Peter Coad
FDD aims to deliver frequent, tangible,working results
FDD is unique among the Agile methods inpromoting the use of CASE toolsn Uses Feature Teams lead by a Chief ProgrammernHas a heavy focus on modeling and archetypesn Supported by CASE tool that is also a Java IDEnDesign By Feature, Build By Feature using a two
week cycle
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-7
©McBreen.Consulting Page 13Questioning Extreme Programming
Pragmatic Programming is based on a bookwritten by Andy Hunt and Dave Thomas
Pragmatic Programming addresses thefacing issues teams of 2 or 3 developers
More concerned with individual mastery ofthe craft of software developmentn Individual craftsmanship as a foundation for
overall team successn Focuses on effective, appropriate use of toolsn Encourages a seamless approach - specification
and implementation as different aspects of thesame process
©McBreen.Consulting Page 14Questioning Extreme Programming
Scrum was created by Ken Schwaber, JeffSutherland and Mike Beedle
Scrum is an empirical process formanaging software product development
It reintroduces flexibility, adaptability andproductivity into systems developmentnWork can and should be an ennobling experiencen Projects are divided into sprints to allow
developers to focus on deliveryn Empirical management using frequent, first
hand observations and daily scrum meetings
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-8
©McBreen.Consulting Page 15Questioning Extreme Programming
What is so different about these Agileapproaches?
All put people and the interaction betweenpeople as the main focus of attention
All embrace the idea that dealing withpartial knowledge is the key to success
Their response to schedule pressure is toprioritize and focus on early delivery
They require extensive involvement by theproject sponsors and users
©McBreen.Consulting Page 16Questioning Extreme Programming
The Agile approaches are changing the waythat software development is done
The Agile approaches are changing theconversation about software development
Agile shifted our attention to small teamsincrementally delivering quality software
Whether this is a good thing or not is stillopen to question
In optimizing our process towards the Agileapproach, what are we giving up?
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-9
©McBreen.Consulting Page 17Questioning Extreme Programming
What does it mean to optimize a process?
Optimization means altering the process togain a different (more valuable?) outcomeOptimization is directed process improvement
Who gets to choose the direction?How do we decide which aspects of a process are
the valuable ones?How do we decide what we are willing to give up in
order to get the valued outcome?
Does process specialization have any risks?
©McBreen.Consulting Page 18Questioning Extreme Programming
Before looking any deeper, first let us lookat how we optimize a process
Optimization implies changing somethingnGetting the team to work in a different waynChanging the deliverables and standardsnChanging the interactions between team rolesnChanging the vocabulary and conversations
The easiest way to change behavior is tochange the vocabulary and conversationsReworking code to conform to standards is a pain,
but Refactoring is funXP has successfully changed the conversation
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-10
©McBreen.Consulting Page 19Questioning Extreme Programming
What does Extreme Programming optimize?Hint: Look at the project outcomes
Developer enjoyment ☺Entire team agrees this is the best project they’ve
ever been on - Ron Jeffries speaking about C3
Predictable, sustained and sustainable paceThe project can go at any pace it wants to. The
point is steering, not going full speed
Maximizing the team's tacit knowledgeThe best way to keep the knowledge of a system
alive and well is to maintain the continuity of thedevelopment team. - Robert Martin
©McBreen.Consulting Page 20Questioning Extreme Programming
What else might you want to optimize for?
The business as usual answer is everythingbut it doesn't work out that wayWhen everything is important, the item that gets
paid attention to seems to be pseudo-random
Faster, Better, Cheaper is not realisticOn Time, On Budget, On Mars - pick two
As Jim Highsmith suggests, choose anappropriate Mission ProfileThen optimize to excel at the chosen outcome
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-11
©McBreen.Consulting Page 21Questioning Extreme Programming
Different organizations could want tooptimize many different things
l Productivity
l Minimum budget
l Rapid delivery
l Efficiency/Burn rate
l On-time delivery
l Beating the estimates
l Success with newbies
l Following the plan
l Working with incompleteknowledge
l Handling emergentrequirements
l Leveraging experts
l Exploiting serendipity
l Community involvement
l Successful diversity
l Supporting individuality
©McBreen.Consulting Page 22Questioning Extreme Programming
XP is a successful answer to the question ofhow to enjoy software development
Who wouldn't want to be part of a softwaredevelopment project where :-Everyone works at a sustainable paceYou collaborate with colleagues to solve interesting
and important business problemsPointy Haired Bosses are not allowed to make any
technical decisionsYou interact with your users daily so you get a
concrete sense of accomplishmentSoftware development is fun
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-12
©McBreen.Consulting Page 23Questioning Extreme Programming
The greatest pitfall of Extreme Programmingis that it sounds too good to be true
The evidence to date is that XP really andtruly works
XP was not a corporate initiative, it wasjust a couple of people with a visionIn five short years it has drastically reshaped
software developmentEven Rational now supports XP with a plug-in for
the Rational Unified Process (RUP)
©McBreen.Consulting Page 24Questioning Extreme Programming
So what are the pre-conditions for XP?
A small co-located team
Knowledgeable domain experts who makeproject direction decisions quickly
A Point Haired Boss free zone
An organization where delivered resultscount more than following the plan
Copyright 2002 McBreen.Consulting
Questioning Extreme Programming Page-13
©McBreen.Consulting Page 25Questioning Extreme Programming
Although XP is great, it is not always themost appropriate choice for a project
XP requires a lot of involvement from thebusiness users and executive sponsors
XP places special demands on facilities
The development environment mustprovide rapid feedback to the team
Process and document centric cultures donot appreciate XP style documentation
XP is allergic to stretch targets
©McBreen.Consulting Page 26Questioning Extreme Programming
Does your organization value what ExtremeProgramming offers?
Product development organizations usuallyvalue a predictable, sustainable paceMany recognize that it is hard to write everything
down, so they value the team's tacit knowledgeDeveloper enjoyment is rarely a priority, but two
out of three is not that bad
Contract and in-house development areoften dominated by the project planXP doesn't make it easy to draw up a Gantt chart