What is Java extreme programming?

A

Andrew McDonagh

bugbear said:
It's certainly not generally achievable. If you're trying to
do (e.g.) 3D visualisation on data extracted via data mining,
you've got a lot better chance of finding a data-mining guru
and an (e.g.) openGL guru than you have of finding
2 (count them, two) people with both skills ("peers")

BugBear

I've seen any problems with different levels of expertise on an XP team.

If anything, having differing levels helps!

It stops the 'super-duper' developers from over engineering and it helps
train newer developers.

We normally end up with a design that is right for the application -
KISS, rather than some framework laden monster.
 
C

Chris Uppal

Andrew said:
We normally end up with a design that is right for the application -
KISS, rather than some framework laden monster.

Offhand I don't see any /intrinsic/ mechansm to stop XP-ish processes producing
under-engineered pond-scum.

Not to suggest that you -- or anyone -- are producing pond-scum, but I doubt
whether the /presence/ of good design can properly be attributed to a
methodology which -- at least formally -- gives little weight to it.

-- chris
 
J

jmcgill

Chris said:
Offhand I don't see any /intrinsic/ mechansm to stop XP-ish processes producing
under-engineered pond-scum.

I thought the whole point of XP was to arrive quickly at "good enough is
done" and leaving "good enough" in a state that can be maintained and
development can continue.
 
C

Chris Uppal

I said:
Since you ask, yes.

This has been bugging me; the verb "condone" doesn't seem quite right. I think
a more precise term would be "applaud".

-- chris
 
A

Andrew McDonagh

Chris said:
Offhand I don't see any /intrinsic/ mechansm to stop XP-ish processes producing
under-engineered pond-scum.

Not to suggest that you -- or anyone -- are producing pond-scum, but I doubt
whether the /presence/ of good design can properly be attributed to a
methodology which -- at least formally -- gives little weight to it.

-- chris

Strange, I take your last sentence to mean 'xp does give much weight to
design' Am I right?

If not...eh?

If so, I'd have to clarify that XP not only requires a design, it
mandates it. However, its not like other processes where Design is a
specific period or point within the methodologies life cycle. In XP, we
continuously design through out the entire life cycle.

From the moment we capture a feature request (known as a Story) from
the Customer, we are thinking about how we'd design that part of the
system, given all of the usual suspect variables (e.g. what current
architecture we have, what the code base is like, what other Stories
are to be done that Iteration and most importantly of all - how would we
test it). At the end of the Story gathering we'd have enough ideas for a
design for that part to be able to accurately estimate how long that
particular story would take to make. By Make, I mean write an hook in
the executable Automated Acceptance Test (that the customer helped
specify) & TestDrivenDevelop the Story. TestDrivenDevelopment is a
Design process not a testing process - it just happens to use Unit Tests
to document the design instead of things like UML, etc

At the end of this, we have a fully Running Tested Feature - designed
not just from the outset but continually during its creation.

Maybe its this lack of 'do design now, then do this, then do that...'
which is why people can mistakenly think XP holds little weight for design.

So how does this stop pond-scum?

It doesn't - no methodologies (XP, RUP, Etc) can .

People stop pond-scum.

People who are disciplined enough to follow design, development and
process techniques which help aim them in a good direction.

In the case of XP, this good direction is to have a Testable Design,
rather than Designed For Test.
 
A

Andrew McDonagh

jmcgill said:
I thought the whole point of XP was to arrive quickly at "good enough is
done" and leaving "good enough" in a state that can be maintained and
development can continue.

True - but Good Enough does not mean poorly designed - as is often the
case when over eager developers start applying XP (or any other
methodology ).

Good Enough means it satisfies not only all of the Stories required of
the current version of the system. It also means the design is easy to
change.

The Design MUST support easy change, because the whole underlying ethos
of XP's design, is one of Evolutionary Design. Not Iterative Design as
some think.

If the design is not good enough, then we wont be able to quickly create
the next Story - this is the true test of the design.

For instance, I'm currently working on a Web app for our company. We are
95% finished and yet we still haven't put in User Roles (aka User
Permissions). We may not even do it - as currently the Customers have
been happy to forgo it. However, the set of Stories along the lines of
: 'As a BlarPerson I Can't Edit the Thingy-me-bob, Because I'm not
allowed' are still on the Release Plan. It just keeps getting pushed
further into the future because at present more important Stories offer
better business value to the Customers.

Now, should they decide in the last week that 'actually you know guys,
we really need those User Roles stories'. This wont be a problem for us.
The way the design has evolved since the beginning of the project, means
that whilst we never put ANY type of framework in place to support User
Roles, the design can easily accommodate it.
 
D

Dave Glasser

For instance, I'm currently working on a Web app for our company. We are
95% finished and yet we still haven't put in User Roles (aka User
Permissions). We may not even do it - as currently the Customers have
been happy to forgo it. However, the set of Stories along the lines of
: 'As a BlarPerson I Can't Edit the Thingy-me-bob, Because I'm not
allowed' are still on the Release Plan. It just keeps getting pushed
further into the future because at present more important Stories offer
better business value to the Customers.

Now, should they decide in the last week that 'actually you know guys,
we really need those User Roles stories'. This wont be a problem for us.
The way the design has evolved since the beginning of the project, means
that whilst we never put ANY type of framework in place to support User
Roles, the design can easily accommodate it.

This sounds like a typical enterprise project in maintenance mode.
 
D

Darryl L. Pierce

Leo said:
In two Java job interviews, interviewers asked me if I know extreme
programming. I don't.

What is Java extreme programming? Is it marketable skill?

Extreme programming is language agnostic. It's just a development
philosophy that emphasizes early development, pair programming,
prototyping, etc.

--
Darryl L. Pierce <[email protected]>
http://mcpierce.multiply.com/
"What do you care what people think, Mr. Feynman?"

*** ***
 
A

Andrew McDonagh

Dave said:
This sounds like a typical enterprise project in maintenance mode.

and yet its a completely new (Green Field) project, started only 5 weeks
ago.
 
D

Dave Glasser

and yet its a completely new (Green Field) project, started only 5 weeks
ago.

So it's a small (95% complete in 5 weeks) project that's winding down
into maintenance mode. I don't see what's so special about what you're
describing. Things like extensible architectures and prioritizing
requirements are just good, common-sense practices, and are in no way
unique to XP.


--
Check out QueryForm, a free, open source, Java/Swing-based
front end for relational databases.

http://qform.sourceforge.net

If you're a musician, check out RPitch Relative Pitch
Ear Training Software.

http://rpitch.sourceforge.net
 
A

Andrew McDonagh

Dave said:
So it's a small (95% complete in 5 weeks) project that's winding down
into maintenance mode. I don't see what's so special about what you're
describing. Things like extensible architectures and prioritizing
requirements are just good, common-sense practices, and are in no way
unique to XP.

You seemed to have missed the point, we aren't winding down at all. We
are developing today, exactly like we have every day of the project.

Its true that things like extensible architectures can be good common
sense practices. However, the fundamental difference with an XP project,
is that we never spend any time designing, testing or implementing these
architectures. You will not find on the Release plan, things like
Create GUI Framework, Create MetaData Driven Dialog framework, Create
DAO layer, Create Threading Model, etc.

Instead, these architectures evolve out of the code themselves, as we
continue to add more features to the code base. One of the fundamental
practices of TestDrivenDevelopment is to 'remove duplication'. Couple
this with XPs 'DoTheSimplistThingThatCouldPossiblyWork' and
'YouAintGonnaNeedIt', we end up with very simple designs that naturally
evolve into extensible architectures.
 
J

joseph_daniel_zukiger

Dave said:
Here's an interesting perspective on extreme programming:

http://www.hacknot.info/hacknot/action/showEntry?eid=11

Don't have time to dig into your net presence, but I'm going to comment
on that page.

While I agree with the necessity of saying many of the things that are
said in that, the charge of "cultism" it levels seems to me to ignore
some facts of life:

] Sense of higher purpose

Is this evil? Is it inherently bad to seek or hope for, or believe in,
a higher purpose?

Sure, using such an assertion of higher purpose as a basis of
discrimination tends to evil, but is the problem in the assertion or
the application?

] Loaded language

It seems to me I can find loaded language in anything, including the
page linked. I'm not sure it's possible to promote or defend any point
of view without resorting to language that is at least potentially
loaded. (The list I am critiquing is, in and of itself, an example of
language that has become loaded.)

Moreover, what is the difference between "loaded language" and mere
differences in assumptions concerning semantics, other than the
question of what is in vogue today?

Is there an way to avoid the problem of semantics?

(This last question is particularly relevant in any forum devoted to
computer languages.)

] Creation of an exclusive community

Again, is this necessarily evil? (Do you see the loaded language in use
here?)

Anytime you have a non-universal context, those who participate in the
context will become, by definition, something of an exclusive
community.

They do not, of course, have to form an exclusionary community.
Enforcing an exclusiveness is usually counter-productive, in addition
to being an exercise in prejudice.

] Persuasive leadership

Is there evil inherent in either persuasion or leading, or even in
doing both at the same time?

Isn't the problem in the direction of the leading, the form or methods
of leadership, the techniques and methods of persuasion?

Truth itself can't be evil, but can sometimes be viewed as cruel
persuasion by some suddenly exposed to some aspect with which they have
not been previously familiar.

Yeah, trying to persuade people against their will can cause problems,
and attempting to lead people to disbelieve what is true is just plain
bad. But those are not the only uses of persuasive leadership.
(Debating whether to point out that arguing against argumentation is an
exercise in reflexive counterfuge.)

] Revisionism

Again, is it inherently evil?

As an engineer, I have been taught to celebrate the principle of
step-wise refinement.

But, looking at the bottom line, I do not know any mortals who know
every truth there is.

It may be possible to know every practical truth within a small
context, but when one leaves that context, some of the truths of the
small context lose relevance, some shift in their expression or
application. And there will be other truths which were not known or
applicable in the small context. The truths themselves may not change,
but our view and understanding of them does.

There is absolute truth, but it is very difficult for us to get such a
perfect view that our view never needs revision. Even if I can imagine
living a thousand years, I can be pretty sure there's going to be
plenty of unknowns left.

Put in the negative, if absolute truth could be known to a degree
beyond revision by people who have a life expectancy of less than a
hundred years, what use would absolute truth be, even to the one person
capable of comprehending it all in such a short time, much less to the
rest of the human race, and to any other intelligent beings that might
exist somewhere?

] Aura of sacred science

Granted that most people are familiar with the semantic of the phrase
currently in vogue, I should note that the original meaning of "sacred"
is not so much something limited to the use of a high priesthood, but
simply the assertion of limits and the reminder of the evils of misuse.

There are things which we, as a society, limit to the use of those
trained in their uses (and often we overset the limits, even in modern
times). But there have always been sacred things ordinary people use,
being cautioned not to misuse them.

Science is definitely something we should be careful to use
appropriately rather than misuse.

One very inappropriate misuse of science is the assertion that science
itself is beyond the common man, but, as I said, most people are
familiar with that sense these days.

In times past, "sacred freedom" meant that we should defend our freedom
and not abuse it, nor abuse others with it. In those times, I think
"sacred science" meant almost the opposite of what it is assumed to
mean now.

Not meaning to dump on anyone, but this method of analysis by listing
the "occult" attributes of some feature of society is one of my pet
peeves.
 
D

Dave Glasser

You seemed to have missed the point, we aren't winding down at all. We
are developing today, exactly like we have every day of the project.

You seemed to have missed what I meant by "winding down into
maintenance mode" it doesn't mean that development stops. I know two
people who work full-time developing new features for a project that's
been in maintenance mode since July '02.
Its true that things like extensible architectures can be good common
sense practices. However, the fundamental difference with an XP project,
is that we never spend any time designing, testing or implementing these
architectures. You will not find on the Release plan, things like
Create GUI Framework, Create MetaData Driven Dialog framework, Create
DAO layer, Create Threading Model, etc.

So? I've never seen those things as individual line items on a project
plan either.
Instead, these architectures evolve out of the code themselves, as we
continue to add more features to the code base. One of the fundamental
practices of TestDrivenDevelopment is to 'remove duplication'. Couple
this with XPs 'DoTheSimplistThingThatCouldPossiblyWork' and
'YouAintGonnaNeedIt', we end up with very simple designs that naturally
evolve into extensible architectures.

You still don't get it, I'm afraid. "Simple designs that naturally
evolve into extensible architectures" are not the exclusive province
of XP. Your logic seems to be:

1. "I have been involved in several software development projects that
used XP."

2. "Those projects were successful and resulted in an extensible and
maintainable code base."

3. "Therefore, for a project to be successful and have an extensible
and maintainable code base, you must use XP."


--
Check out QueryForm, a free, open source, Java/Swing-based
front end for relational databases.

http://qform.sourceforge.net

If you're a musician, check out RPitch Relative Pitch
Ear Training Software.

http://rpitch.sourceforge.net
 
D

Dave Glasser

(e-mail address removed) wrote on 13 May 2006 04:09:06 -0700 in
comp.lang.java.programmer:
Don't have time to dig into your net presence, but I'm going to comment
on that page.

Ouch. I didn't realize that my posting a link to an unflattering
article on XP would result in someone "digging into my net presence."
Not meaning to dump on anyone, but this method of analysis by listing
the "occult" attributes of some feature of society is one of my pet
peeves.

The article used the word "cult", not "occult." There's a big
difference.


--
Check out QueryForm, a free, open source, Java/Swing-based
front end for relational databases.

http://qform.sourceforge.net

If you're a musician, check out RPitch Relative Pitch
Ear Training Software.

http://rpitch.sourceforge.net
 
J

joseph_daniel_zukiger

Dave said:
(e-mail address removed) wrote on 13 May 2006 04:09:06 -0700 in
comp.lang.java.programmer:


Ouch. I didn't realize that my posting a link to an unflattering
article on XP would result in someone "digging into my net presence."

Sorry, I didn't intend that to sound threatening. I just wanted to say
I was too lazy to figure out if that page was yours or whether it
reflected your pov on either of the subjects.
The article used the word "cult", not "occult." There's a big
difference.

Point taken, however, there are an awful lot of people who don't bother
to try to distinguish between "cult" and "occult". (Ergo, the word
"cult" itself can be loaded language, which means that attributing the
use of loaded language to cults is something of a semantic whirlpool.)

I didn't find the page informative, pro, con, or explanatory. My
impression is, "Okay, someone had a bad experience with XP and/or some
of the people who claim to practice it." Other than that, I come away
no wiser about XP.

And, as far as making parallels about cults, I come away thinking,
according to that point of view, society is nothing more than a large
collection of cults. I can't think of any social institution that can't
be pegged as a cult according to that method of analysis.

That's my opinion. YMMV.
 
C

Chris Uppal

Andrew McDonagh wrote:

[me:]
Strange, I take your last sentence to mean 'xp does give much weight to
design' Am I right?

Is there a 'not' missing from that sentence ?

Anyway, to clarify. What I mean is that XP seems to be built on the assumption
that the programmers are capable of applying, and will in fact apply, good
design principles at all times. It doesn't, to me, seem to contain anything
which directly encourages, or requires, that (although it undoubtedly allows
/room/ for good design in a way that some other methodologies don't).

I'm not trying to suggest that XP is uniquely vulnerable to bad design (I have
no opinion one way or the other). My point is that, at least from where I sit,
it appears that you can't do XP without the talent or the attention to detail
or the grasp of the big-picture which would enable you to produce good software
using other methodologies. It seems to me that if a piece of software produced
by XP is well-designed, then you can only attribute that quality to XP if you
are comparing against another methodology that actively /impedes/ good
design -- which would be stacking the deck IMO ;-)

(And, again, I'm not suggesting that there may not be other qualities -- even
more important ones -- which /are/ attributable to XP)

From the moment we capture a feature request (known as a Story)

Just BTW. I find this abuse of the word "story" /really/ aggravating. "Story"
is one of the most wonderful and powerful words in the English language.
Stories have excitement, joy, or sadness, change and development. Stories have
meaning and arc. The drab little descriptions used in XP don't deserve the
word "story", not by a long way.

-- chris
 
B

Bent C Dalager

(...)
My point is that, at least from where I sit,
it appears that you can't do XP without the talent or the attention to detail
or the grasp of the big-picture which would enable you to produce good software
using other methodologies.
(...)

Isn't part of the point that pair programming will cause the required
talent/attention to detail to seep into the programming team and so
turn even untalented team members into useful XPers?

If so, then you probably only need to start with a small team of
talented XP diehards and gradually add rookies for assimilation.

Kind of like how you build large synthetic diamonds by starting with a
tiny seed diamond and then just adding carbon under pressure to make
it grow :)

Cheers
Bent D
 
C

Chris Uppal

Bent said:
If so, then you probably only need to start with a small team of
talented XP diehards and gradually add rookies for assimilation.

Kind of like how you build large synthetic diamonds by starting with a
tiny seed diamond and then just adding carbon under pressure to make
it grow :)

And then at some convenient time in the project, you grind up all the team
members and seed a new team around each lump ;-)

"Extreme" indeed...

-- chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,188
Latest member
Crypto TaxSoftware

Latest Threads

Top