| What is XP?
|
|
25 Sep 04 |
|
[print
link
all
] |
Ron Jeffries posted this well known Kent Beck quote in the XP-mailinglist.
They talk about the 2nd ed. of XP Explained by Kent Beck.
But anyway, when I last asked Kent what XP is, he said
"XP is a community of software development practices based on
values of simplicity, communication, feedback, and courage".
That was about two or three years ago.
I look forward to seeing the second edition as well.
I'm sure it will be enlightening ...
|
| .. like Xmas
|
|
25 Sep 04 |
|
[print
link
all
] |
I came across this nice discussion between Phlip and Juergen Ahthing in the
XP-ML
"Without test-first and refactoring, clients think
they must assemble as many program requirements as
they can afford to have written. This effort snarls
all relative business priorities together, making
Scope Control impossible. It obscures opportunities
for simplification. Designing and implementing many
features all at once is very hard, leading to our
industry's reputation for very large failures. Putting
tests in front of development's inner cycle permits an
outer cycle of incremental feature growth. That
relieves the Customer of the responsibility to predict
the future and guess which complete set of features
will maximize productivity."
.. Juergens answer:
Nice description.
Sometimes I try to explain that to non technical people
with the following picture:
If you have only one chance to get your wishes on a
list, it is like Christmas for a child. You make sure
you get every little wish on that list and hope for the best.
If you are sure that you can get your wishes on the list
at any time. You will just put the most important ones
there which come to your mind easily.
|
| XP success story: Sabre takes extreme measures
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Computerworld) Using extreme programming practices, Sabre Airline
Solutions has reduced bugs and development times for its software products.
Sabre Airline Solutions had many years of experience with its AirFlite
Profit Manager, a big modeling and forecasting package that many airlines
use to wring more income out of flight schedules. Even so, Release 8 of the
software was four months late in 2000 after final system testing turned up
300 bugs. The first customer found 26 more bugs in the first three days of
its acceptance testing, and subsequent joint testing by Sabre and the
customer uncovered an additional 200 defects. www.computerworld.com/softwaretopics/software/story/0,10801,91646,00.html
|
| Case stories
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Been skimming the XP-ML this morning.
About the $200M Oracle-Ford Desaster: the management did not give them
enough power to go fully agile
Chet Hendrickson:
It was a very frustrating situation. The team asked Don and me
to help with preventing the Oracle consutants from making changes
directly to the production system. This was about $150 million into the project.
We tried to sell them on a more agile approach (as you might imagine), but by
this time they were pretty far gone.
It was unfortunante that we were not operating at a level in the organization
that would have allowed us to get the plug pulled sooner.
chet
Georg Tuparev has a nice case story, too: speak out if you are put on a
death march.
Few years ago I was called to lead a huge team stuck in one and half
year design phase. The team was supposed to build a control software
for a network of telecom satellites. Cannot disclosed names and
resources, but one could imagine ...
Three days in the project I had a phone conference with the CxO's of
both companies involved. Told them that the way it is going no
satellite will ever fly and that I know a better way. After getting
green line, the design document was burned with a small celebration at
a BBQ, and 85% of the initial team members were sent to an indefinitely
long vacation. With the rest (15%) of the team we had the first
functioning version 2 months ahead of the schedule and 50% lower then
expected expenses.
So the lessons:
- it is never late to change direction of a project in order to save it.
- I do not agree with Kent that this is a sad story. If you are a good
programmer put on a death march project you should speak out! If no one
listens - walk away. There is just one very precious life in front of
us - do not waste it! And if these folks wasted 2 years of their lives,
well, it is their business ... but they should not expect my
sympathies.
BTW, Philip is right - the project I was telling about had a 9 months x
40 people "Big Requirements Up Front"!!! Then the design started...
Just my 0.02
Georg Tuparev
|
| Just Ship, Baby
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Kent Beck) Short two page essay: The focus on shipping is not an
excuse for cutting corners, but perfect adherence to the practices is no
excuse for not shipping. groups.yahoo.com/group/extremeprogramming/files/just%20ship.pdf
|
| Unit Tests -- just do it!
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Been coding a lot these days on SmallWorld.
I try to be disciplined and continue adding unit tests to the hundreds of
unit tests wherever sth. could go wrong, but ever again I go off the track
and code several methods and even entire classes without any tests.
It’s simple stuff and hey, this is ruby :-).
Then I sit here for 3 hours trying to understand why the dammed computer
does not do what it should. It’s that feeling I hate most. You waste
time .. I mean I could as well go skiing or drink a bottle of vodka ..
would be about the same productivity progress on my code and at least I
would enjoy the sun.
After hitting my head long enough and starting to isolate the stuff .. I
found it .. I had forgotten one return in a most trivial three line long
method. Shame on me. Now I will go back to being test-infected. test-first
is even better. Dammit .. sorry for the rant, but I doubt there are many
systems like computers where one comma at the wrong place can make
everything go boom. Oh well, try to modify the DNA and do not know what you
are doing. :-).
|
| fit
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Ward Cunningham has released an acceptance testing tool called fit fit is about tests that people can read.
The Cook’s Tour
offers an excellent howto to get yourself and your customers into the
test-writing mode.
An intro
article by Bill Wake.
|
| CIO magazine current issue all about agile... (IT oriented, but)
|
|
25 Sep 04 |
|
[print
link
all
] |
Denis Haskin posted this to the XP-ML. lnik
I assume this popped up on everyone else's RSS aggregator as well, but...
From Darrell Norton's blog [1] and Artima developer forum [2]: the
current issue of CIO magazine is all about agility:
http://www.cio.com/archive/081504/index.html
|
| Advantages of Extreme Programming
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Kevin Smith post to extremeprogramming@yahoogroups.com) After a
couple years of pitching XP, it became very clear to me that XP has
different key advantages for different audiences. You’ll have to
decide whether to pitch to a single audience, or try to cover several.
For developers, XP allows you to focus on coding and avoid needless
paperwork and meetings. It provides a more social atmosphere, more
opportunities to learn new skills, and a chance to go home at a decent hour
each night. It gives you very frequent feelings of achievement, and
generally allows you to produce code that you feel good about.
For the Customer, XP creates working software faster, and that software
tends to have very few defects. It allows you to change your mind whenever
you need to, with minimal cost and almost no complaining from the
developers. It produces reliable estimates so you can coordinate your
schedule easier.
For management, XP delivers working software for less money, and the
software is more likely to do what the end users actually want. It cuts
risk in a couple ways: 1) It allows you to "pull the plug" on
development at almost any time, and still have highly valuable code, and
probably even a valuable working (if incomplete) application. 2) It reduces
your dependence on individual superstars, and at the same time can improve
employee satisfaction and retention.
The biggest disadvantage: It’s hard. It’s difficult to get many
developers to accept the practices, and it takes a lot of discipline to
keep doing them all. Customers may not like the idea of having to be so
involved. Management may expect fixed-cost, fixed-scope estimates, which XP
teams often refuse to create (because they are usually incorrect with any
methodology).
Also, certain people may feel their jobs are being threatened, particularly
architects, testers, and project managers. "Cowboy" coding
"superstars" may dislike the reduction in fame, attention, and
adreneline from "saving" the project at the last minute.
|
| XPlorations: The Humble Yo
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Bill Wake) "The Humble Yo" The humble "Yo!" is
a simple convention for getting help. link Nice
explanation of why not asking for help can actually hurt the team.
|
| Big Requirements Up Front (BRUF)
|
|
25 Sep 04 |
|
[print
link
all
] |
I really appreciate Georg Tuparev’s postings to the XP-ML.
>Because it is important for the customer to have an idea of how much
>> everything will cost ...
In 99% of the times customer neither needs nor wants "everything"! One
of the big dangers of BRUF is that it imposes the wrong feeling that
"everything" is important. This is a major distraction that inevitably
leads to scope-creep and eventually project failures. When we have the
first meeting with a new customer we ask the following 3 questions:
1. What is your biggest pain?
2. If we solve this and only this pain, will your life get better?
3. Are you willing to pay X amount of Euros to us to solve this pain.
If any of these questions is answered with "no" we just thank for the
coffee and walk away. If all 3 questions are answered with yes, we move
to the first planning game...
Put it in another way: I do believe it is extremely dishonest and
incorrect behavior to conduct 9 months BRUF only to reach the
conclusion that the customer does not have enough resources to
continue. It is dishonest because as I wrote in an earlier posting,
_all_ good developers I know are able to estimate almost immediately
the scale of any software project without conducting BRUF.
|
| Only hire people who pair?
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Chad Woolley posted this to the extremeprogramming-ML)
Here’s an interesting experience I had when interviewing for an XP
shop, and one I will definitely keep in mind in future interviews, whether
I am the hirer or hiree.
As part of my interview, I was required to sit and pair program for about
half an hour. We worked on an writing a unit test for an actual defect that
currently existed on the project (although it could easily have been a real
user story, or a contrived scenario if the project had not yet started).
I thought this was a great idea, and a great source of knowledge for both
sides. I was able to show that I did indeed know how to program, write unit
tests, knew my way around an IDE, had acceptable interpersonal
communication skills, etc. I was also able to get a different perspective
on what the team dynamics were like, which I could not have gotten from a
formal interview setting.
The interesting thing is that both me and my partner (one of the
interviewers) taught each other about some tools and approaches that we
were not previously aware of.
Even though I didn’t get the job (the position was withdrawn), I kept
in touch and became friends with the interviewer/partner, and the things we
taught each other came in useful in our future development work.
This company also asked for code samples and a mini-presentation, which I
also thought was a great idea for separating the wheat from the chaff.
Since I have had responsibility for helping interview, select and recommend
job candidates in the past, I know for a fact that the best resume and
interview performance in the world is inconclusive. You can still get a
lemon, even though the lemon may be very good at piling on the BS.
From my perspective as a job candidate, I am confident in my skills and my
abilities. I know that I can quickly adapt and excel in any position within
my skill set. However, its very frustrating when I cannot convince the
potential employer of this through only a traditional resume and interview.
In future interviews that I go for (which will hopefully only be with
XP/Agile shops), I am going to suggest this as a way for the hiring company
to get a better idea of my skills, knowledge and abilities, both technical
and interpersonal. If I am ever part of a hiring team in the future, I will
definitely propose that code samples and a pair-programming session be part
of the interview process for candidates who make it to the final stages.
This is admittedly very time-consuming, but probably much less net
investment than being forced to live with (or try to get rid of) an
employee who looked much better "on paper".
Thanks, Chad
|
| Adapting Extreme Programming
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Kent Beck posted this today to the XP-mailinglist.
I’ve been thinking about the problems of applying XP to whole
organizations. Turns out this is ground thoroughly covered by the lean
production folks.
Here is a paper I found helpful: www.nwlean.net/no_harm.zip The
premise is that every step of the transformation must pay for itself.
Getting people to understand that their problems are tractable can be hard,
I’ve found. Rob Mee was talking to a guy about TDD on a gig of ours
recently. "Sure, yeah, TDD is a great idea." "Why
don’t you do it?" "It’ll make us go slower."
"But it makes you go faster." "Yes, of course, but
it’ll make us go slower." "But it’ll make you go
faster" *iterate N times for annoying large N* "Okay, it makes
people go faster everywhere but here."
|
| Kaizen Events
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Keith Ray) Keith Ray has an interesting entry on Kaizen Events in
his blog.
Kaizen Event definition from Ray’s blog: The Kaizen method is a
"rapid improvement process" utilizing a cross-functioning group
of managers and employees working as a team to meet targets in a
results-oriented focus on a predefined project area. The process may take
the following steps: define the problem/opportunity, choose the best
people, and correct the problem in one week or less using Kaizen tools and
techniques. The ultimate goal is to significantly reduce costs, reduce lead
times, reduce required inventory space, enhance workforce empowerment,
eliminate waste, and focus on continuous improvement. The Kaizen process
may include: new product development, robotics, total quality control,
Just-in-Time, statistical quality control, labor and management relations,
or other concepts.
|
| When Should We Test?
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Kent Beck, one of the people that invented extreme programming (XP) offers
an economic model. The financial risk management community and the software
development community can learn a lot from each other. Think of this
article as: When should you put Risk Management into place?
Amongst other things this article tells you when best to have children :-).
groups.yahoo.com/group/extremeprogramming/files/when%20should%20we%20test.pdf
|
| Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck
|
|
25 Sep 04 |
|
[print
link
all
] |
Very interesting book. Highly recommended. This books brings the lean
production principle to software development. Seven lean principles:
- Eliminate waste: Spend time only on what adds real customer value
- Amplify learning: When you have tough problems, increase feedback
- Decide as late as possible: Keep your options open as long as practical,
but no longer
- Deliver as fast as possible: Deliver value to customers as soon as they ask
for it
- Empower the team: Let the people who add value use their full potential.
- Build integrity in: Don’t try to tack on integrity after the fact -
build it in
- See the whole: Beware of the temptation to optimize parts at the expense of
the whole
Link
|
| Simple things ..
|
|
25 Sep 04 |
|
[print
link
all
] |
I was just now doing some research on bus ticket clearing houses and I came
across his post in rec.travel.europe from 2001 by Michael Forrest.
>Reciprocity is not guaranteed on airlines (or toll bridges - it
>has always amused me that the toll on the Severn Bridge between
>England and Wales is GBP 4.20 for a car to enter Wales but there
>is no toll the other way, ie entering England). (Maybe it shows
>how the two countries value themselves?)
All of the bridges in the San Francisco Bay area only charge toll in one
direction. Some genius realized that, on the average, just about as many
cars went each way for the obvious reason that most trips across the
bridges are round trips. So they doubled the toll and took down the toll
booths going one way (except for the Golden Gate Bridge where the toll
booths remain, unattended). There has been considerable saving in toll
collection costs and the toll booth traffic jams in one direction are gone.
Is it possible the Severn Bridge does similarly?
|
| Modeling on White boards
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Scott Ambler) I just posted "Software Modeling on
Whiteboards" at link.
It describes how whiteboards can be an effective modeling tool.
Basically it’s an ad for Whiteboard Photo. ;-)
|
| Software Bug Causes Soyuz To Land Way Off
|
|
25 Sep 04 |
|
[print
link
all
] |
|
A mysterious software fault in the new guidance computer of the Soyuz TMA-1
spacecraft was the cause of the high-anxiety off-course landing over the
weekend, according to NASA sources.’ Which is why I will never trust
the Strategic Defence Initiative - the star wars project. It only takes one
line of mistyped code in what will always be a beta release. www.msnbc.com/news/909677.asp
|
| XP style process and battle-fields
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Not that I want to promote war in any way, but these posts in the
extremeprogramming-ML made me smile:
Phlip:
During the planning game, you review last week's
finished stories, and they inspire you to write some
new cards, to edit some cards, and to toss some cards.
Then you (the Onsite Customer) re-sort all the cards,
and draw off the top batch for the next week.
But another input into this system that affects the
planning game - the competition.
The USA occupied Iraq using an effective new battle
technique. In traditional advances, you send a
diversionary force against one of your enemies flanks,
draw them that way, then send your main force against
their other flank.
Modern soldiers, with cell-phones and such, follow a
more agile approach. You simply send two forks of your
forces, probing towards both flanks. You use sensitive
algorithms to detect the defending commander's
decision which flank to defend. If you can rapidly
turn one advance into the diversion, and the other
into the main attack, you will soon collapse the
opposition's ability to effectively make decisions.
Agile onsite customers can play this card too. If you
detect your competition's marching orders, in
real-time (using either sensitive algorithms,
good-old-fashioned industrial espionage, or just
reading their self-congratulatory Web site), you can
then request iteration features which provide the
minimum amount of code needed to start your project
towards blocking the competition's advance. This
technique will, again, collapse the competition's
ability to make decisions.
Or convince them to hire an XP coach or three. So
either way it's a win-win-win for us! ;-)
Steven’s reply: :-)
Or you could follow the agile strategy that Microsoft
pioneered - announcing products with your competitions'
features before you even start implementing them.
|
|
|