Every so often, a new idea strikes software development. For
awhile, it was structured programming. Object-oriented
programming entered the fray. Now ideas like Six Sigma, CMM,
UML, and XML databases all promise to make software more
reliable, easier to write, and less expensive.
It's rare that any one idea applies to every facet of the
software industry and it's unlikely that any single approach
will be the last advice you'll ever need. Wise developers and
managers ask, though, "What could I learn from this new idea? How can I
make my work simpler, more effective, or more enjoyable?"
Extreme Programming (XP) is yet another popular idea gaining
press. It adapts several of the best ideas from the past
decades of software development. Whether or not you adopt XP,
it's worth considering what XP teaches. In no particular
order, here are five lessons you should learn from Extreme
Programming.
If there's a single driving goal behind XP, it's to keep the cost of change low by producing code that's easy to change. Change isn't your enemy. Perfect code isn't your
goal. Your goal is to meet the customer's current needs while
making it as easy as possible to meet the customer's future
needs when they become known.
The first order of business on any new XP project is to get
working code to the customer as quickly as possible without
compromising on quality or discipline. This delivery should
take place within a few weeks. The software may do very
little, but it should demonstrate an actual business value
and it should follow the XP rules for simplicity and
provability.
Rather than attempting to get something out the door as the
final, no-kidding-this-time deadline approaches, XP
developers deliver new versions of the software regularly and
frequently. A three-week iteration cycle is a popular rate.
Instead of waiting for large migrations a few times a year,
the software is delivered and improved upon every few weeks
in smaller chunks. This is achieved, in part, by working in
small steps but also by coding in a maintainable way.
Are you considering adopting XP practices? Tell us about your reasons for doing so, and/or your hesitations. You must be logged in to the O'Reilly Network to post a talkback.
Via the Daily Python URL, ONLamp.com has posted a list of their most
popular articles of 2003, many of which I have not seen and sound
promising. I'll be going to readsome of those articles tomorrow and
perhaps they will...
I think that this particular article solves alot of fuzzy know-how on
the topic of Extreme programming that a newbie might have...
Ronsley Vaz School of Computing and Information Technology Griffith University
Well done!
2003-08-21 07:32:12 ronjeffries
[Reply | View]
Good article, chromatic. The little book looks good too, and with a
great foreword from Ward as well. I'll be posting a review on
XProgramming soon.
Thanks!
eXPosing the Incompetent?
2003-08-17 13:42:53 anonymous
[Reply | View]
I worked on various medium-sized programming projects for 25 years,
teams of 5-20 with some people leaving and others joining rather
frequently. Our customers were in-house. Generally the programs had
complex algorithms, were old and constantly in need of maintenance and
major extensions. These 5 lessons are a good summary of what worked
when things worked.
However,
when I consider XP as a whole, the one thing that would have made the
biggest difference--by factors of 10--to success on the projects I
worked and others I am familiar with would have been the eXPosure,
through pair programming or code reviews, of the amazingly inept
persons who were often the ones who stayed around the longest.
XP is so right, but...
2003-08-15 04:56:46 anonymous
[Reply | View]
You need mature customers. If you ask a customer who has never seen a
software for this problem domain, he will change his mind EVERY time
you ask him the same question.
Mature
customers are sure about what they want because they have already
worked in the field for many years and they know it is not their job to
make late suggestions, they are not being paid for asking for a "last
one thing", that that we really need. Immature customers are never
satisfied with the software unless you accept those late requirements
as top priority. The problem with those late requirements is that they
are always top priority, so new requirements will always leave older
requirements unsolved. Over a long period fo time you will not have
finished anything.
XP solves that through frozen releases.
Whatever was top priority and accepted to be done in this release will
be released in this time frame, it does not matter if priorities
change. If something was misunderstood as each user story can't now be
implemented in the time frame, they are simply tossed from the release.
But beware that you may end up delivering absolutely nothing if the
customer is immature enough.
True......but it always was
2003-08-12 04:33:27 anonymous
[Reply | View]
This five point summary is an excellent list of goals to bear in mind
when creating good software. But every item applies to every properly
conducted software project, whatever methodology it claims to use.
The
most important thing that XP has done is to make it cool again to
deliberately write maintainable, robust code. It’s an attitude of mind
that has little or nothing to do with following any particular
development process.
Still, it’s good to see movement against
the quick and dirty “slopware” that badly damaged the reputation of
US-developed products.
XP is individual-oriented programming
2003-08-10 04:35:25 mkj6
[Reply | View]
To setup an XP team you must work not only with very skilled but
open-minded people: pair programming can be a problem if you don't feel
comfortable with your desk-mates. Many XP evangelists suggest what
seems a religious approach to test-driven programming, but tests are
code, and someone have to maintain it! Moreover, testing is most useful
in algorithmic-oriented pieces of code. What I find to be indispensable
is evolutionary design by refactoring, always trying to apply the DRY
principle (Don't Repeat Yourself). Then I write tests for the most
critical sections, this way I feel confident while I'm changing. XP
still requires a lot of craftsmanship and expertise, but it often works
better than many other methodologies.
Development with XP, but without a team
2003-08-08 23:25:13 anonymous
[Reply | View]
Hi, this article contains the most important rules from XP and is nice to read.
My problem with XP is to begin a new project based on open source and without a concretely team. This can occur when i start my ideas to implement, but i haven't a possible partner to pair with him. I try to obtain some programers as soon as possible. But what's with the time i waste until i found some interested people.
But my greatest problem is to develop an open source project, without a concretely customer, who write automated tests.
I look forward to some responses!
Development with XP, but without a team
2003-08-09 23:40:50 chromatic
[Reply | View]
When I first learned about XP, I was working as a system administrator
and contributing to open source projects in my spare time. Those are
the same questions I had.
I'm
putting together a followup article entitled "Five Things Open Source
Developers Should Learn from Extreme Programming" that will go into
more detail. It should be ready in about three weeks.
For now, my
best advice is to wear two hats. One hat is for the customer. Look at
things from a user's point of view. The other hat is the normal
developer hat.
It can be tricky to combine these
responsibilities, but if you have the discipline to follow the other XP
practices, you'll be able to do this one.
Thanks for the comments!
XP or What ?
2003-08-07 07:40:02 anonymous
[Reply | View]
Mr. o'Reilly, congratulations, I´m one old programmer, I believe that I
know something about of programing, but I always have problems with
Operating System and Languaje of programing. Now I´m finishing one
Magister in networks and all my friends of studys have same problems.
We believes that with YOUR peer to peer technology, meme maps, setty,
etc. Do it something. Excume my English. We are from Barquisimeto
Venezuela. Bye...
XP or What ?
2003-08-08 15:59:29 anonymous
[Reply | View]
Jejejeje
<spanish>
Si, tu ingles esta un poco piche, pero bueno, practica y mejoralo ;)
Saludos de un venezolano en Stamford, CT.
</spanish>
It is a good article. Now i'm wondering how to apply the techniques described above.
JV.
Where to Start
2003-08-08 16:48:47 chromatic
[Reply | View]
Thanks for the comments.
In the book, I
recommend building a healthy team as the first step. If you already
have this, great! It's a lot easier to sit down and figure out what
your biggest problem is.
If you can't really do that as a team, at least you've identified your biggest problem.
That's
where I'd start. Chances are, everyone can identify something that you
could do better. Trace those back to the source and you have a starting
point.
Finally a Sane article on XP.
2003-08-06 04:36:29 anonymous
[Reply | View]
Thanks , for the nice, concise and sensible article on XP. While we do
practice some processes (Unit Testing, Weekly builds) which are now
tenets of XP I refuse to identify myself as an XP'er. Most of the
articles you read on XP sound like they are marketing some miracle diet
or a new wonder drug. This article provides a nice balanced view
without geting into the *preach* mode.
Finally a Sane article on XP.
2003-08-15 05:14:00 anonymous
[Reply | View]
You do unit tests, that's good. You do weekly builds, that's not so good.
XP
is about building the software several times a day using automated
software like CruiseControl. If you build only once a week, it means
you are checking-in only once a week, and problems found after the
build are solved during the whole next week.
It is not agile to
do things like that, you need to check-in daily, even if you just
changed a method, if it passes all the tests, check it in.
CruiseControl will verify that your check-in is safe a few minutes
after you checked-in that code.
Solving build breaks is the
responsability of the committer. Usually build breaks are published on
a web site, which means every developer has a reputation at risk, and
they are TOLD that build breaks are priority 1, so they solve build
breaks (or test breaks) a few minutes after they are produced. IMHO,
that's the basis of being agile.
A problem that we have
2003-08-05 23:48:20 anonymous
[Reply | View]
With such frequent releases, it is essential to automate the customer
tests, but it is also extremely difficult to do that, esp. when your
product involves web interfaces, web services, file outputs and other
interfaces (LDAP, RADIUS etc.) b)
A problem that we have
2003-08-07 08:07:08 anonymous
[Reply | View]
There are some excellent open-source tools now that help with automating customer/integration tests.
Check
out HttpUnit and Cactus. These tools aren't perfect for everything, but
they are remarkably powerful, flexible, and a huge improvement on
"screen scraper" commercial testing products.