What is Java extreme programming?

C

Chris Uppal

[...]
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:

I don't know what the author's motivations were, there seems to be a certain
amount of over-statement. But once you've stripped that out, there seems to
be a fairly interesting and even sensible message remaining. The thrust of
the article is not to say "XP is a cult" (still less that "XP is an evil
cult"), but to point out that XP -- considered purely as a /social/ phenomenon,
shares many of the self-reinforcing features that are found in cults and other
strong social groupings (both good and bad).

That's to say that -- whatever the technical merits or demerits of the
movement -- it is /also/ a social phenomenon. And, what's more, it has these
self reinforcing features which operate independently of the technical content.

And why is that relevant to the rest of us ? Because if we want to evaluate
the technical qualities of XP, we should be careful to (try to) allow for the
social mechanisms which, in part, maintain it. For instance, we should be wary
of deducing that XP must be good because few people try it (/really/ try it, I
mean) and decide it's not for them. (I don't know if that is actually true,
this is just an invented example). It could be that those (hypothetical)
people's reasons were entirely objective, but it is also possible that they
were partly or completely swayed by the sociological factors.

-- chris
 
D

Dale King

Chris said:
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 ?

I think saying that XP gives little weight to good design is a gross
mischaracterization. XP definitely highly values good design. The
question is how do arrive at that good design. Do you arrive at it by
doing a big upfront design before you write any code. That rarely
arrives at a good design. XP says that the best design is going to be
arrived at iteratively. Design is balancing tradeoffs. The best way to
find out the tradeoffs is by doing a little work, see what can be
improved and refactor it. There is no way to foresee all the tradeoffs
ahead of time. What looks good on paper often is not good in practice.

XP also does not put a value on some formal design documentation. These
are universally out of date and of very little value. It doesn't say you
can't use UML for instance, but only use it if there is real value to be
gained.
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 ;-)

Your argument here seems to fall apart. Does XP require good programmers
that can recognize good design? Of course it does. Any methodology does.
XP does not require every one of the programmers to be top notch. With
pair programming the expertise of the better programmers is more evenly
distributed through out the project and it provides a way for the weaker
programmers to be exposed to an learn good design. Refactoring provides
ways to correct bad designs.

Your statement that XP requires programmers "to be capable of applying
good design principles at all times" is particularly puzzling. To me XP
explicitly recognizes that no one is capable of applying good design
principles at all times. In fact what is a good design principle is not
even fixed. As requirements change what is a good design changes as
well. What used to be good design is no longer good design with new
requirements.

It seems to me that big upfront design methodologies are the ones that
require perfection in good design because you have to get it right up
front as there is less chance to change it later. XP lets you reconsider
and modify the design throughout the development life cycle.
 
R

Roedy Green

Because if we want to evaluate
the technical qualities of XP, we should be careful to (try to) allow for the
social mechanisms which, in part, maintain it

You are being too kind to XP. Imagine designing a project by starting
with the XP API and using that as a set of abstractions to think with.
Then do the same thing with the Java API. You can't help but have a
cleaner design with Java.

XP has is its roots in DOS with Windows real 80286 mode and 64K
segments, that gradually evolved layer upon layer with a considerable
amount of compatibility. Java got a much more recent clean start and
had the advantage of going multiplatform, which tends to shave off
quirky warts.
 
D

Dale King

Roedy said:
You are being too kind to XP. Imagine designing a project by starting
with the XP API and using that as a set of abstractions to think with.
Then do the same thing with the Java API. You can't help but have a
cleaner design with Java.

XP has is its roots in DOS with Windows real 80286 mode and 64K
segments, that gradually evolved layer upon layer with a considerable
amount of compatibility. Java got a much more recent clean start and
had the advantage of going multiplatform, which tends to shave off
quirky warts.

Umm, Roedy, the XP being discussed here was extreme programming not
Windoze XP.
 
J

jmcgill

Roedy said:
You are being too kind to XP.


Um, I think somewhere a discussion about XP (eXtreme Programming) turned
into a discussion about XP (Windows XP).

Totally different things.
 
C

Chris Smith

Roedy Green said:
The last royalty check I got for book sales was $137 in 2005-06. You
know what that works out to an hour? It is a negative amount when you
factor in the costs. What are you, a communist?

So I've been thinking about how to say this clearly. I think there's a
valid point here besides alleged communism of members of the newsgroup.

The Java Glossary, for better or worse, acts as a kind of FAQ in these
newsgroups. When a thread is answered by linking to an entry in the
Java Glossary, there's an implicit statement there: "Don't try to
continue the conversation; you've been answered, and I'm done with it."
It's rather difficult to quote and respond to content from the Glossary
in a nice format, so that's likely to stop right there. The placing of
the response on a web site implies a kind of finality... and whether
intended or not, a mild rebuke for posting the question onto a
discussion group in the first place, since you obviously didn't think it
was worth discussing.

There are times when this is reasonable. Nobody tends to mind when the
topic is about how to solve a NoClassDefFoundError, since that's not a
particularly interesting conversation to begin with. Some topics, such
as pointing out that Java is not JavaScript, may well benefit greatly
from that kind of finality since the conversation is unlikely to go
anywhere interesting. However, if the thread is about doing XP in Java,
that kind of finality is misleading and deprives the group of
discussion. When the content of the Java Glossary page is especially
sketchy, as it was in this case, it starts to look like an outright
insult. This newsgroup is for discussion of all kinds, not strict Q&A.
Members of this newsgroup gain something from talking to each other that
couldn't be gained from reading a lot of static content somewhere.
Posting links to the Glossary certainly seems like an attempt to stop
that discussion.

Hence, I don't think the grievance relates to money at all. The
financial gain doesn't help, of course -- but it's only a problem
because the response was harmful in the first place. The Glossary even
seems to be a useful resource to many people. However, I do prefer to
see people participating in the community here instead of being
redirected elsewhere.

I forget where I first saw this, but I think it's a fairly reasonable
statement: "Efficiency is the opposite of community."

No offense intended to anyone: this all just seemed worth saying.
 
J

John Gagon

Chris said:
So I've been thinking about how to say this clearly. I think there's a
valid point here besides alleged communism of members of the newsgroup.

The Java Glossary, for better or worse, acts as a kind of FAQ in these
newsgroups. When a thread is answered by linking to an entry in the
Java Glossary, there's an implicit statement there: "Don't try to
continue the conversation; you've been answered, and I'm done with it."
It's rather difficult to quote and respond to content from the Glossary
in a nice format, so that's likely to stop right there. The placing of
the response on a web site implies a kind of finality... and whether
intended or not, a mild rebuke for posting the question onto a
discussion group in the first place, since you obviously didn't think it
was worth discussing.

There are times when this is reasonable. Nobody tends to mind when the
topic is about how to solve a NoClassDefFoundError, since that's not a
particularly interesting conversation to begin with. Some topics, such
as pointing out that Java is not JavaScript, may well benefit greatly
from that kind of finality since the conversation is unlikely to go
anywhere interesting. However, if the thread is about doing XP in Java,
that kind of finality is misleading and deprives the group of
discussion. When the content of the Java Glossary page is especially
sketchy, as it was in this case, it starts to look like an outright
insult. This newsgroup is for discussion of all kinds, not strict Q&A.
Members of this newsgroup gain something from talking to each other that
couldn't be gained from reading a lot of static content somewhere.
Posting links to the Glossary certainly seems like an attempt to stop
that discussion.

Hence, I don't think the grievance relates to money at all. The
financial gain doesn't help, of course -- but it's only a problem
because the response was harmful in the first place. The Glossary even
seems to be a useful resource to many people. However, I do prefer to
see people participating in the community here instead of being
redirected elsewhere.

I forget where I first saw this, but I think it's a fairly reasonable
statement: "Efficiency is the opposite of community."

No offense intended to anyone: this all just seemed worth saying.

I certainly like the Glossary for its comprehensiveness. It is however
replete with a lot of other content. The Glossary shouldn't however
monopolize the role of being a FAQ. This is not a group about chicken
pox where there are limited numbers of answers. Indeed, with Java,
there are all kinds or resources out there. e.g.: Javaworld, The Server
Side, Java Best Practices, On Java, ProgrammingTutorials.com, etc etc.
I know that other links do make it here. Everyone has the right to
express their preferred resources. But if there is an ulterior motive,
I find that something to be frowned upon. Many resources are the kind
that do one thing and one thing well. However, appropriatness of
information and getting an answer to the question or a useful comment
to the discussion is priority. If someone disagrees with the
appropriateness of a particular resource, they can post one of their
own IMHO and that will say most of what needs to be said in such a
situation where it is a common question/frequently asked. It would be
nice if there was a community FAQ for java somewhere. Perhaps someone
can create a site for that.

John Gagon
 
J

John Gagon

Leo said:
Dear All,

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?

Thank you.

This question seems confusing because Extreme programming is a language
agnostic described / prescribed process for conducting software
development.

I suppose the combination of the two would end up becoming a convoluted
answer. One should usually answer that extreme programming is such and
such and that in the context of java, it might make use of tools that
do such and such and then examples can be given ie: JUnit, TestNG etc
etc. CVS, Subversion, etc etc. I would also ask this person to clarify
a bit more after this explanation to see if there wasn't something else
being referred to. I know of no official combinatory "Java Extreme
Programming" methodology of any kind. In fact, the question seems
ill-phrased in some way, in which case you can smile to yourself as
being extremely superior to the interviewer or ..... they might be
pulling some kind of "interviewer's trick".

I haven't been able to read all the replies so maybe this was covered
somewhere else.

Extreme programming is a marketable skill by those who are benefitting
by it. It's very relative just like touch typing being a "marketable
skill". I would say it is a fringe skill unless one is very very
effective at conducting it and has project accomplishments to show for
it and then it can be arguably a cost cutting angle on selling your
"extreme skillz" ;-)

John Gagon
 
J

John Gagon

Roedy said:
I think the idea is this:

1. customers really don't know what they want, but they are very good
at detecting what they DON'T want. So it is best to give them
something to knock up against as early as possible.

2. The more experience users have with an app, the smarter they are at
designing what they really want.

Similarly there is a principle in attacking difficult problems where
you have no idea how to solve the whole thing. You simply solve some
piece of it, or create a tool you think might be useful for the
solution. When you are done you are smarter and less mentally
cluttered with detail. You have a new black-box tool to think about
the problem with. You are smarter, and better able to tackle the
remaining problem. You have carved a piece of it off and put it in a
black box where you don't have to think about it.

My biggest problem with extreme programming is getting the company to
involve the customer/client in the development process. Sometimes, in
the first place, the customer is separated from development by tiers of
customer service donut heads, tech support donut heads, server closet
junkies, and finally "development". Sometimes, even in a small company,
there are protocols to follow when dealing with the customer and
obliging them to commit a resource (sometimes an unknowledgable one who
is no better and probably has to call in to the mother ship to get any
information anyway) this can seem very unprofessional.

Real Business Analysts are much better at going to the customer and
analyzing their needs and they should have some degree of software
development knowledge. Sometimes, having the developer go and be a
business analyst has worked a bit....especially if they can stay for
longer than a 2-3 day trip. Having them responsible for the "user
stories" and having artifacts delivered on a daily basis is crucial
IMHO. So anyhow, it can often be very tricky trying to interface with
customers. Sometimes there is no customer and just a bunch of market
research and an in house visionary feeding the business
concept/requirements etc etc.

Sometimes, it is "too visionary" and it has to be negotiated to make
business sense as well as make sense to the original core vision as
something useful in the business sense.


John Gagon
 
C

Chris Smith

John Gagon said:
My biggest problem with extreme programming is getting the company to
involve the customer/client in the development process. Sometimes, in
the first place, the customer is separated from development by tiers of
customer service donut heads, tech support donut heads, server closet
junkies, and finally "development".

Sure. That element of XP is clearly written with in-house software
development in mind. It makes sense to involve someone from the
department within your company that will be using the software, but it
makes less sense to ask a customer for the same committment. It
certainly can seem odd. That's not an unconsidered problem, though.
There are a few ways to deal with it.

1. Hire someone with significant experience in the field, and assign
them the job title of customer liaison. When they are not working with
the development team, they can be assigned to provide consulting and
support services to people who ARE your customers, thus building their
knowledge of the customer sphere. In essence, you create a "customer"
who isn't subject to the problems of real customers.

2. Recruit real customers into the process by giving them free licenses
to your software. This works best if you're doing the kind of software
where you expect to have a lot of customers and not charge large amounts
for each one. Make it clear that you want them to work with your
development team to improve the software.

#1 appeals to me. However, I unfortunately can't share any experience,
as the environment I work in is too small to justify that kind of
expenditure. Heck, at the moment we're even too small -- by a margin of
one programmer -- to do pair programming. :)

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
C

Chris Smith

John Gagon said:
I certainly like the Glossary for its comprehensiveness. It is however
replete with a lot of other content. The Glossary shouldn't however
monopolize the role of being a FAQ.

Does it? Andrew Thompson maintained a FAQ for a while, and there's also
JINX where I have put a lot of information that I think should be
documented from this group. For a while Peter van der Linden maintained
a FAQ in actual Q&A format, but I haven't seen it mentioned recently and
it's likely out of date or gone. Of course, anyone else is welcome to
put something together.

If your complaint is about the political and social content of Roedy's
web page, then that's your issue to deal with, whether by staying on the
Glossary pages or by not using the resource if it really bothers you.
It doesn't make the Java Glossary any worse of a resource.
Indeed, with Java, there are all kinds or resources out there. e.g.:
Javaworld, The Server Side, Java Best Practices, On Java,
ProgrammingTutorials.com, etc etc.

Sure, and if someone started replying to every post with links to those
resources, the exact same complaints would apply. This is a discussion
forum. While it may be useful to know about all of those resources,
they don't serve the same need as this group either. I've occasionally
found JavaWorld articles quite helpful, for instance, but this group
should no more become a pointer to JavaWorld than a pointer to the Java
Glossary. I'd prefer to see someone's opinion than a link to a resource
that Google could have found just as well.
It would be nice if there was a community FAQ for java somewhere.
Perhaps someone can create a site for that.

That's supposed to be the JINX wiki. Jon Skeet first created it a
couple years ago, and I've attempted to reincarnate it after the first
server died and the content was lost. http://riters.com/JINX

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
R

Roedy Green

. Sometimes, even in a small company,
there are protocols to follow when dealing with the customer and
obliging them to commit a resource (sometimes an unknowledgable one who
is no better and probably has to call in to the mother ship to get any
information anyway) this can seem very unprofessional.

I worked on a team developing a on-line banking system for a credit
union.

We would interview the manager who it turned out had a totally
different model in his head of how things worked from how they really
did.

One big problem was getting them to tell us about exceptions to the
rule. They never seemed to get it that even if something happened
only once a month we had to know about it. They could not just "handle
it manually" by the seat of their pants when the problem arose. We
had to be sure there was some way to handle it, even if not a fully
convenient way..

After weeks of this, I went to the manager and said, "This is not
working. I would like to be trained as a teller."

After a couple of days as a teller I finally discovered how things
really worked and I incidentally came up with a list of things that
should be automated. I asked "Why did you not mention these
time-consuming tasks before?" "Because it never occurred to us you
could sort things in more than one order."

They were trying to automate things easy for humans but difficult for
computers, while ignoring the things impossible for humans but a snap
for computers. You need a programmer type familiar with the problem
domain to even nail down the purpose of some computer system.

In my early career, this feature of computing was its huge appeal. I
could go into some new field, grill the experts about anything I
pleased (nobody every questioned my need to know whatever I asked.
Computer folk were a high priesthood.) and slake my curiosity, then
encapsulate what I had learned in program that would use that
knowledge long after I had forgotten it.
 
R

Roedy Green

Sure, and if someone started replying to every post with links to those
resources, the exact same complaints would apply.

A poster is looking for information. The best place to view my
information is in a web browser. It is formatted and hyperlinked.
It would be asinine to convert it back to raw text just to give the
illusion I had just dashed it off the top of my head and to save
someone the effort of a mouse click.

I am quite ill and constantly seek to create maximal effect for
minimal energy output. Your suggestion would take a lot of extra work
and would reduce my effectiveness. So I am not about to use it.

I post the URLs almost reflexively, "I recall I have an entry on
that. Give him the URL. It might help."

The "finality" and my desire to stop discussion is your illusion. I am
simply tossing some more sources of information into the ring. I don't
have anywhere near the energy for discussion or exposition I once did.
Perhaps you are taking my lack of participation as a desire to silence
the discussion.

In other newsgroups people use URLs all the time, and if people want
to discuss that material they quote it. What is stopping you from
doing that if you disagree with something in the glossary?

I get many emails each day with suggestion to improve the glossary.
You could do that too. It strange how people tend to presume every
omission or error is deliberate.
 
L

Luc The Perverse

Roedy Green said:
A poster is looking for information. The best place to view my
information is in a web browser. It is formatted and hyperlinked.
It would be asinine to convert it back to raw text just to give the
illusion I had just dashed it off the top of my head and to save
someone the effort of a mouse click.

I am quite ill and constantly seek to create maximal effect for
minimal energy output. Your suggestion would take a lot of extra work
and would reduce my effectiveness. So I am not about to use it.

I post the URLs almost reflexively, "I recall I have an entry on
that. Give him the URL. It might help."

The "finality" and my desire to stop discussion is your illusion. I am
simply tossing some more sources of information into the ring. I don't
have anywhere near the energy for discussion or exposition I once did.
Perhaps you are taking my lack of participation as a desire to silence
the discussion.

In other newsgroups people use URLs all the time, and if people want
to discuss that material they quote it. What is stopping you from
doing that if you disagree with something in the glossary?

I get many emails each day with suggestion to improve the glossary.
You could do that too. It strange how people tend to presume every
omission or error is deliberate.

Personally I wouldn't care if you were "advertising" your site. I feel my
life is a little better because I found it. (

It wouldn't have happened if you only posted links intermittently.

I disagree with Chris that there is any problem in posting a link.
 
R

Roedy Green

I disagree with Chris that there is any problem in posting a link.

I went to a heck of a lot of work to format that information in
tables, to hyperlink it up the yin yang, to colourise the source
code and in some entries to provide diagrams, to use icons to help
find what you are looking for rapidly and warn you of gotchas.

Why would I want you to view that work in degraded form? I might as
well have composed the Java glossary in raw ASCII text like a
traditional FAQ.

Obviously there are a million things to be improved (and I welcome
those suggestion and implement as many as I have energy for), but the
main criticism seems to be it was wrongful of me to compose the
glossary in the first place and improper for me to point people to
sections of it that may help them.

I was trying to do the world a favour. Because of HIV likely cutting
my life short, I desperately want to do something important and good
as a legacy. From my point of view I did the planet a favour. It is
so infuriating to have my gift thrown back in my face as if it were
some selfish criminal act.

Until you have done something similar, you have absolutely no idea how
much work is entailed. Look how many people abandoned
FAQ-like projects even smaller than the glossary. Why?

1. It is so darn much work.

2. The rewards have to come from knowing you are doing the right
thing, not from praise or money.

3. You have to put up with people doing their best to rain on your
parade and attack you personally. You have to put up with endless
petty personal criticism as if every error or piece of stale
information were deliberate malice..

Everyone once in a while, e.g. after one of Chris Smith's bitchy
snipes, I say to myself "**** EM". If they are going to be such
shitheads, I'll just close down the glossary. Why should I put in time
attempting to help people who actively despise me and my work? But
that is exactly what Chris wants. The "**** em" also sounds too much
like Mom and her "I worked my fingers to the bone" trip. I am not
asking for thanks, just laying off the generic barbs.
 
L

Luc The Perverse

Roedy Green said:
3. You have to put up with people doing their best to rain on your
parade and attack you personally. You have to put up with endless
petty personal criticism as if every error or piece of stale
information were deliberate malice..

Your main page has over a million hits. Negative people/people who have a
problem/objection just seem to be a little more outspoken. With a million
hits, I imagine there are a lot of silent "pleased" visitors.

You violate the status quo on many levels - with your religious and
political beliefs and your sexual orientation. Simply discussing a
controversial topic is enough to piss many people off.

You got up and fought a battle for homosexuals and you probably made
significant progress at, presumably, some cost to you.

I don't know what I'm trying to say - I don't have a point.

On a more personal note, I certainly hope things improve with your health.
A university professor in my homestate of Utah believes that she has found a
way to design molecules which target and bind specific virii and believes a
similar method could be used to also attack [specific] fungi, bacteria and
protozoa. Her primary interest is curing AIDS, and some prelim lab work
looks like she might be getting close.
 
R

Roedy Green

Your main page has over a million hits. Negative people/people who have a
problem/objection just seem to be a little more outspoken. With a million
hits, I imagine there are a lot of silent "pleased" visitors.

Of course, you are right. I don't that often write someone a general
note of thanks. The emails I send are usually a typo or a suggested
rewording.

If somebody uses the glossary and then comes back again, that is a
tacit vote of confidence that they found my work useful.

I expect the knives to come out over the things I say on the other
parts of the website, and the venom in response has never bothered me
in the least. You can read some of the spicier stuff at
http://mindprod.com/feedback/peace.html In my early gay lib work I
got about 300 abusive phone calls, and a average of 3 death threats a
day. Yet suddenly I become ultra sensitive about a rather mild
personal attack every month or so on the glossary. Illogical!
 
L

Luc The Perverse

Roedy Green said:
Of course, you are right. I don't that often write someone a general
note of thanks. The emails I send are usually a typo or a suggested
rewording.

If somebody uses the glossary and then comes back again, that is a
tacit vote of confidence that they found my work useful.

I expect the knives to come out over the things I say on the other
parts of the website, and the venom in response has never bothered me
in the least. You can read some of the spicier stuff at
http://mindprod.com/feedback/peace.html In my early gay lib work I
got about 300 abusive phone calls, and a average of 3 death threats a
day. Yet suddenly I become ultra sensitive about a rather mild
personal attack every month or so on the glossary. Illogical!

Oh I like that link! I will have to check it out in more detail tomorrow.

Wait a minute. A LINK! HOW DARE YOU??!!! j/k

Not really too illogical - you expect people to get upset if you tell them
that they are wrong, you don't expect criticism for giving people a gift.
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,070
Latest member
BiogenixGummies

Latest Threads

Top