Sign in to follow this  
Alex

Extreme Programming? (XP)

Recommended Posts

Alex    122
This may be a really dumb question, considering I've been into programming for almost a decade, but I've noticed a few people on the forum refer to "Extreme Programming". Could someone please tell me what this is exactly. Thanks!

Share this post


Link to post
Share on other sites
Alex    122
So in other words, you start building it before you figure out what you want built, then adjust it as you go?

Share this post


Link to post
Share on other sites
DrNecessiter    122
I think in practice, XP is a sort of formalization of good old "garage band" programming. Small teams of smart developers working on short-duration milestones to incrementally move the product forward. Involving the client in all the increments helps manage expectations.

I believe another tenant of XP is "team" programming, where at least two programmers are on every task. This has tons of benefits, although isn't always practical.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Quote:
Original post by Alex
So in other words, you start building it before you figure out what you want built, then adjust it as you go?


Basically, yes. Personally I feel that XP leads to lazy designing. I've worked on some truly massive systems, and it is very rare that you cannot plan out and design the code from the beginning to totally eliminate the need for refactoring. Certainly some unexpected things will come up, and designs will almost always change a bit during the development process - but nothing on the scale of what XP advocates would advise.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
XTreme Programming is not ment to be used with massive projects :) It is made to work only with small to middle sized projects with fairly small teams.

In case you design a massive system you indeed need to spend more time on the design. Otherwise things can go really wrong.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Sorry, I didn't really make that clear. What I meant was that even in incredibly complex systems it is possible to design the whole system and never need major changes to the design. By extension it should be much more possible to design simple projects in such a way that refactoring is never needed. I've long since learned to thoroughly design my projects before I begin coding, and no matter how big the project is, the time saved by not redesigning and rewriting the code 10 times is very valuable. A lot of XP proponents like to try to cast a bad light on sticking with a proven design (for example, the site linked above blatantly accuses developers who don't refactor of being afraid of change, or too self-centered to admit their designs need change). This kind of propoganda is a major red flag to me. If you did your design work properly, there should never be a need to change it. Encouraging refactoring ("whenever and wherever possible") has always struck me as a lazy and irresponsible approach to design.

Anyways, to get a fair view of things, I'd advise reading up a bit on XP and then checking out this book. There are far better approaches to programming than XP.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
One of the main things what XP tries to achief is quick results and being dynamic as in allowing easy changes in application requirements. In some ways it is kindof like RAD.

With XP you start with a global design, and don't really go into details. Then you start implementing it, and you will find some things that can be done better or things you didn't think of yet while doing the initial design. Then you adjust the design again to match your code, and do that in iterations.
This is also why it won't work in huge complex systems, probably like 3D engines. Well, it will work, but like you said, you will really spend lots of time of refactoring and rewriting and adjusting the code (and design).
But XP is also not good in those situations.

It is good when you have a small project, and a client that likes to see quick results. You can show them progress very quickly and they can give feedback like: "it would be better if it woudl work that way". When you have totally made a fixed design upfront, you will have possibly done a lot of work for nothing. With XP you don't loose much time here.

So for small projects XP can be really good. However, I'm not a huge fan myself of using a methodology exactly the way it is described. You can adjust it to your own needs.



Share this post


Link to post
Share on other sites
ApochPiQ    23064
Adjusting XP's methodology can be deadly. This should explain more about what I mean here.

There is far too much potential for things to go horribly, terribly wrong with XP. I've never had any trouble getting results for my clients, and I've worked with some incredibly anal people in my time. Of course I'd also say that the customer-involvement aspect of XP is another one of its major flaws; customers do not know how to design good software in 99.9% of all cases, and involving them directly in the development phase is a good way to get derailed and led down some ugly paths.

XP may or may not work in certain scenarios, but my question is, why risk it? I'd be willing to bet that there is no real gain from using XP in terms of time or money, and that leaves you with nothing but a gaint mass of potential problems. Better safe than sorry.

Share this post


Link to post
Share on other sites
Alex    122
This doesn't really sound like good methodology for game programming. Someone said it is meant to involve the client in all steps of the process, but the clients of a game are the gamers aren't they? This seems as though it would be very difficult to coordinate since every gamer has his/her own ideas on how features should be done.

It seems more suited to independant component programming. Probably done by a small team for a larger organization.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Quote:
Original post by petewood
Quote:
Original post by ApochPiQ
Adjusting XP's methodology can be deadly. This should explain more about what I mean here.


See (XP guy) Ron Jeffries' review of their book



Is it really so surprising? Think about who is writing here. Now compare this with people who have real industry experience and have seen real XP failures in real life. Jeffries is defending his pet methodology in a purely theoretical context, while there is ample evidence from real life that shows that XP is broken fundamentally. I'm all for being informed on both sides of the issue; by no means do I want to drown out any dissenting views. However, when weighing the opinions of all of these people, it is crucial to view them in context and give them proper weighting. Jeffries is, in that review, trying to defend his turf, and that inherently makes his claims subject to a higher level of scrutiny.


Quote:
Original post by Alex
It seems more suited to independant component programming. Probably done by a small team for a larger organization.


Well, that's what a lot of XP advocates would say as well. In general, though, real life isn't that clear cut. XP is getting applied to an awful lot of situations where it is absolutely useless, and even in the highly specific cases where it might work, there are far better methods out there.

Anyways, sorry to derail this into a methodology war [wink] For game development at least XP (in its pure forms) is not going to do the job. Impure XP is highly dangerous, as described in the article I linked earlier. There's an awful lot of hype, and a lot of very rabid defenders of the XP approach, but for what we do here (game development) I don't feel that it is really worth the time.

Share this post


Link to post
Share on other sites
petewood    819
Quote:
Original post by Alex
This doesn't really sound like good methodology for game programming. Someone said it is meant to involve the client in all steps of the process, but the clients of a game are the gamers aren't they? This seems as though it would be very difficult to coordinate since every gamer has his/her own ideas on how features should be done.


No, the client is the game designer.

Share this post


Link to post
Share on other sites
petewood    819
Quote:
Original post by ApochPiQ
Quote:
Original post by petewood
Quote:
Original post by ApochPiQ
Adjusting XP's methodology can be deadly. This should explain more about what I mean here.

See (XP guy) Ron Jeffries' review of their book

Is it really so surprising? Think about who is writing here... Jeffries is, in that review, trying to defend his turf, and that inherently makes his claims subject to a higher level of scrutiny.

Have you read the review? He is open to balanced criticism and welcomes any suggestions for how to improve the XP methods. He says it is a shame the book drowns its good ideas in misinformation. Many of the people involved in XP are very open to balanced discussion rather than polarising camps. Look at Ward's Wiki. Saying "Is it really so surprising? Think about who is writing here" is implying that Ron Jeffries wouldn't be a balanced person. It's quite silly really to make that your starting point.

The culture of Wikis, Patterns, XP, Refactoring is a group of people who have lots of experience and above all talk about it. I'm not sure what's so threating about that.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Yes, I read the review - very carefully. I'm not making anything my starting point, nor being threatened, or anything else you seem to be trying to imply. All I'm saying is that, after all, Jeffries is defending his own work in a very real sense. Surely you know how that works; it is very easy, when someone finds fault with you, to go down the road of "well, hold on! I didn't really meant that..." and then adjust your statements to try to be more agreeable, or more credible. From the very beginning, the review talks about how XPR "goes to... pains not to understand, to take out of context, and to distort." The entire review is marked with sure signs that Jeffries is pulling the "you misunderstood me" routine. I should recognize it - I do it all the time myself.

I'm not trying to say that his statements are invalid, or anything of the kind - simply that his position as a major figure in the XP world makes him a little bit less objective, whether he and his fan club want to admit it or not. We're human beings, and nice warm fuzzy words about being open-minded aside, we don't take kindly to people picking on our pet theories. Jeffries is no different in this regard.



Quote:
Original post by petewood
Eg this article on Gamasutra


I noticed that article is nearly a year old, and the team was just beginning to look at the XGD concept when it was written. I'd be interested in seeing some followups or postmortems to find out how their experiment went.

Share this post


Link to post
Share on other sites
petewood    819
Quote:
Original post by ApochPiQ
Quote:
Original post by Alex
So in other words, you start building it before you figure out what you want built, then adjust it as you go?


Basically, yes.


Basically, no.

You start out with an idea of what a component should be able to provide. You come up with this by chatting with your client (this may be other programmers, the game designer, your artists or even yourself). You come up with some examples of how the software is used. These are sometimes called UserStories as they are simple descriptions of how someone would use a component.

You write tests for a component to fulfill the user story

You fill in the gaps to make the tests pass

You refactor.

This is very simplified but is also very close to the whole truth.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
In theory, yes. But in practice, unless you have the discipline and experience in software design to adhere to the theory, it very, very, very rarely works out that way. Again, see the articles I've linked. I've seen programmers jump onto the XP bandwagon and get run over by it.

XP is like socialism. It's a fine theory, but it doesn't account for reality - and the reality is very, very ugly. Just because it works sometimes doesn't mean it is a good methodology. Again, there are far better approaches out there which do not suffer from the risks and shortcomings of XP, nor do they encourage poor programming habits among those who don't fully understand the XP "theory."

Share this post


Link to post
Share on other sites
petewood    819
Quote:
Original post by ApochPiQ
Simply that his position as a major figure in the XP world makes him a little bit less objective, whether he and his fan club want to admit it or not.


Who would be acceptably objective enough for you?

I'm not part of any fan club but would seem to be labelled as such if I said I thought XP made sense and enjoyed using it.

There are other books which critique XP that Ron Jeffries recommends reading. As I say it's silly to disregard his view on a book which is all about a practice with which he is totally familiar.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Quote:
Original post by petewood
As I say it's silly to disregard his view on a book which is all about a practice with which he is totally familiar.


I never said anything to the contrary. I have no intent to disregard anything, and I've said so at least twice in this thread. Anyways I think my point has been made (even if you aren't seeing it) so there's no point going on about it any further.

Share this post


Link to post
Share on other sites
petewood    819
Quote:
Original post by ApochPiQ
I think my point has been made (even if you aren't seeing it) so there's no point going on about it any further.


Right, I'm leaving too then [rolleyes].

I'm not sure how we've got to this point. I think you started it but maybe it was me. Anyway, I think the concensus of opinion is 'suck it and see'.

Share this post


Link to post
Share on other sites
Anon Mike    1098
Quote:
What I meant was that even in incredibly complex systems it is possible to design the whole system and never need major changes to the design


One of the basic problems is that you can pretty much guarantee that the final system will only look vaguely like the system that was first asked for. The customer asking you to design a system for him doesn't really know what he wants and he isn't going to know what he wants until you give him something to play with and he can see that it doesn't work. IMHO, XP is mostly about facilitating rapid iteration and revision of the system to meet constantly-changing customer requirements.

I think some of it's elements are real good (the idea that you write your tests *before* you write the actual code really clicked with me). Others are dubious (pair programming).

Share this post


Link to post
Share on other sites
haro    502
Quote:
Original post by ApochPiQ
Quote:
Original post by petewood
Eg this article on Gamasutra


I noticed that article is nearly a year old, and the team was just beginning to look at the XGD concept when it was written. I'd be interested in seeing some followups or postmortems to find out how their experiment went.


Are you making a joke or serious? Titus interactive is basically dead. They are the parent company of Interplay and arguably the reason that company is dying as well. Over the past year their stock prices dropped 74% and Titus was placed under judicial administration as their stock prices froze at 0.16 euro. That company has managed to kill everything that they have touched in the past year and I do not exagerrate.

Moral of the story:

1. Individuals (Thomas Demachy) with almost no real life game development experience should not be in charge of game development projects, and they damn sure should not try to decide what is best for the development team.

2. Extreme programming in game development leads to games which were clearly developed under that methodology. Look at the list of games which Titus and their subsidiaries were responsible for, and you will soon see an interesting trend.

I am somewhat suprised that Gamasutra hasn't removed that article.

Share this post


Link to post
Share on other sites
ApochPiQ    23064
Quote:
Original post by Anon Mike
Quote:
What I meant was that even in incredibly complex systems it is possible to design the whole system and never need major changes to the design


One of the basic problems is that you can pretty much guarantee that the final system will only look vaguely like the system that was first asked for. The customer asking you to design a system for him doesn't really know what he wants and he isn't going to know what he wants until you give him something to play with and he can see that it doesn't work. IMHO, XP is mostly about facilitating rapid iteration and revision of the system to meet constantly-changing customer requirements.

I think some of it's elements are real good (the idea that you write your tests *before* you write the actual code really clicked with me). Others are dubious (pair programming).



I realize it isn't possible in all cases, but as a freelance contract programmer, I've had very good results with very clearly defining the design specs with the customer before the project starts. I make it very clear what can and cannot be done, what the programming implications of various decisions will be, and that once the design is set in, making changes to the specs will cost them extra money. It really drives the point home to the suits, and in fact the only time I've ever had trouble with major specs changes is when I didn't go through this process. Again, it isn't a panacea, and I'm not trying to say that once you design you'll never have to change the design again - just that a good design can handle specs changes (within reason) without requiring a lot of recoding.



haro: I was trying to make a point - rather sarcastically, and perhaps too obscurely. I know what happened to that team - I just wanted to see if petewood knew what happened, because the results of their "experiment" rather undermined his point.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this