Thanks, leo
Originally posted by leo donahue:
So my question is, what happens when your boss asks you for some kind of improvement that will drastically change the face of your program? By not planning for change or growth, how will I continue to benefit from XP?
Richard
N 37 33 W 122 18
Originally posted by leo donahue:
So my question is, what happens when your boss asks you for some kind of improvement that will drastically change the face of your program? By not planning for change or growth, how will I continue to benefit from XP?
Originally posted by Mark Herschberg:
On the other hand, I'm also a big fan of, write once to throw it away. If you're facing a really really major of a change, you may just want to scrap it and start again anyway.
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Mark Herschberg:
This is one of my major criticisms of XP. XP correctly recongizes change is inherent in software projects. However, XP is only good at embracing small to medium sized change. I am skeptical of XP handling major architectural changes.
Originally posted by Mark Herschberg:
... I am skeptical of XP handling major architectural changes.
...
--Mark
Richard
N 37 33 W 122 18
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Junilu Lacar:
But, overall design does affect your ability to change the architecture. The better the overall design, the easier it is to change.
Originally posted by Junilu Lacar:
I do not see how using XP would limit you to small and medium-sized changes in architecture. In his most recent book, Martin Fowler broadly defines "architecture" as those design decisions that are hard to change. If we go by this definition of architecture, then it doesn't really matter if you use XP or not.
...
And even if, for the sake of argument, you were right about XP being able to handle only small to medium-sized changes, then couldn't a large change be effected by iteratively making small to medium-sized changes?
Originally posted by Mark Herschberg:
In XP, everyone kinda does his own thing. That is you grab a card, write some code, which may go anywhere in the system, and meet your objectives. Your implementation may "step on the toes" of a co-worker in that it makes his next task a little harder. No problem, he refactors your code to make it easier.
This is the same way open source projects work. (For the record, technically everyone on a project does his own thing, but traditionally everyone has his or her own backyard to play in.) The process isn't totally "efficent" but when code does get misaligned it can be quickly and easily modified.
Most XP tasks are on the order of a few man-hours to a few man-days. Archtectural changes are on the order of man-weeks to man-months. I fear that during such changes people will find the rug pulled out from under them!
[..]
More concretly, I think architectural design and changes need more formal planning then other design decisions. For these points in the code, I would suggest less of an XP aspect.
This strikes me as one of those truisms like "more people will get the project done faster."
Originally posted by Mark Herschberg:
Remember, these changes aren't always rational; pointy haired bosses do take left turns down unpaved roads ("what idiot would want to design a system this way?") in the middle of the project.
That's the crux of my argument. I am skeptical of a 10 person team all pulling in the same direction.
In XP, everyone kinda does his own thing.
That is you grab a card,
write some code, which may go anywhere in the system, and meet your objectives.
Your implementation may "step on the toes" of a co-worker in that it makes his next task a little harder. No problem, he refactors your code to make it easier.
This is the same way open source projects work. (For the record, technically everyone on a project does his own thing, but traditionally everyone has his or her own backyard to play in.) The process isn't totally "efficent" but when code does get misaligned it can be quickly and easily modified.
With architecture, I'm not sure the same is true. I fear that if the 10 people are not all envisioning the same architecture, their misalignments in objectives will cause trouble. Architecture often tends to be something with more global implications, so imperfections get magnified. I believe the reasons why design by committee does not work come into play here.
We know there's always more then one way to do something. XP promotes fluid code. If the way something was originally done isn't quite right for the next objective, we change how it was done. On a small scale this works. Most XP tasks are on the order of a few man-hours to a few man-days. Archtectural changes are on the order of man-weeks to man-months. I fear that during such changes people will find the rug pulled out from under them!
Let me put it another way. I don't know of any XP projects where everyone jumped right in; i.e. as soon as the last case was done, everyone started coding. Some time was spent considering system design. I think this time must be spent again.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Lasse Koskela:
How does XP and reuse go together if at all?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
Well, as an XP team doesn't tolerate duplication, they have to maximize reuse, so it seems to me.
I somehow have the feeling that this doesn't really answer your question, though. Perhaps you should try again...![]()
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Frank Carver:
Because reuse typically happens at the source-code level rather than reusing black box components...
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Lasse Koskela:
How does XP and reuse go together if at all?
Originally posted by Junilu Lacar:
On the contrary, XP promotes communication and a shared vision. "Toe-stepping" is caused by a lack of communication. XP promotes constant communication both through increased developer interaction and clarity of code/intent.
Originally posted by Junilu Lacar:
I doubt that XP practices can be effectively applied to open-source projects where the team members are not co-located.
Originally posted by Junilu Lacar:
I believe the "spike solution" is one way to handle these concerns in XP. You try to quickly develop the core solution to see if you're on the right track.
Originally posted by Junilu Lacar:
I thought this was a fallacy
Originally posted by Ilja Preuss:
How would you want to anticipate those changes before they happen?
Originally posted by Ilja Preuss:
Mhh, I don't think a good XP team *ever stops* to think about these issues.
Originally posted by Ilja Preuss:
Remember, this card was discussed...
If we XP a process, then shouldn't that process be applicable to almost every business setting?
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Mark Herschberg:
I didn't phrase that well. By "toe-stepping" I meant that I optimize locally for my needs, and might not design well for your needs when you interact with my code tomorrow (hence the quotes).
people tackle them somewhat independently
quote:
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
How would you want to anticipate those changes before they happen?
--------------------------------------------------------------------------------
How would you want to? Any way that's cost effective. :-p But the point is that these aren't predictable changes. (Is that really what you meant to ask?)
quote:
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
Mhh, I don't think a good XP team *ever stops* to think about these issues.
--------------------------------------------------------------------------------
Now I'm confused, because this doesn't seem to go with your other comment:
quote:
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
Remember, this card was discussed...
--------------------------------------------------------------------------------
So when does a team stop and discuss the issue?
More generally, I guess this is an issue of splitting hairs.
My experience with people and skillsets is that their shortcomings won't be overcome by the XP model under the circumstances I described earlier.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Eric Burke:
You'll always have the problem of finding the reusable code in the first place...I don't know that XP addresses that in any way.
But once you have found the code, however, it is a heck of a lot easier to understand and trust the software if it is well tested.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Lasse Koskela:
If the code produced by XP teams conforms to YAGNI and the-simplest-thing-that-could-possibly-work, how would the components adapt for generalization (preparing for reuse by other projects)?
Then again, if the XP teams are refactoring mercilessly, aren't we digging the ground from component-based reuse?
As far as I know, successful reuse programs are pretty much based on strictly controlled interface evolution.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
Sorry, I can't imagine a process entailing closer collaboration than XP.
Originally posted by Ilja Preuss:
What I meant to ask was: How would you want to anticipate unpredictable changes?
Originally posted by Ilja Preuss:
They pause the discussion when they feel they can estimate the story.
...
They stop the discussion when they refactored the code to the simplest form they can imagine.
Originally posted by Ilja Preuss:
Mhh, I wonder what might be a good alternative to giving people lots and lots of feedback on how they do...
Originally posted by Mark Herschberg:
I can. Everyone sits down and descripts the project architecture in great detail, down to every class and method signature. The people writing code are nothing more then trained monkeys who fill in the blanks. Its compelte collaboration because everything is well defined in the docuement and everyone agress to follow it. In XP (or open source) you don't know what classes and method you need until you actually need them. Now this method is impractical in many cases for a number of reasons, but I believe it does provided closer collaboration then XP or many other methodologies.
Originally posted by Junilu Lacar:
I think I'm beginning to see why you are so skeptical about XP. What you describe seems a lot to me like Big Design Up-Front (BDUF).
Originally posted by Mark Herschberg:
I claime dthat one issue in XP is that there is no central vision. In BDUF the vision is fairly well spelled out. In XP there is a "vision" in the sense that the final version exists, its just not visible yet.
Not that in both cases people get "off the path" and in both cases inexperienced mor ehten expeirenced. I just think that people get further off in XP then in BDUF.
in theory, if you could do it, so that every thing is well specified from the start, then its extremely unlikely that people will "get off the path."
Hence, you will have better collaboration.
Now I'm am arguing that given complex projects, or major changes during a project, in conjunction with a lack of capabilities (usually correlated to lack of experience), an XP team may not function as well as one which does more up front design (not massive, just sufficent) then XP would.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Again, my experience is quite the opposite. A BDUF design contains much more speculation *and* is more costly to fix. "Hell, I think this class should really be split up." "Damn, we already spent two weeks on this design. Do you really want to update all the class, interaction etc. diagrams *again*, just to split this class?
Originally posted by Mark Herschberg:
Everyone sits down and descripts the project architecture in great detail, down to every class and method signature. The people writing code are nothing more then trained monkeys who fill in the blanks. Its compelte collaboration because everything is well defined in the docuement and everyone agress to follow it. In XP (or open source) you don't know what classes and method you need until you actually need them.
quote:
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
What I meant to ask was: How would you want to anticipate unpredictable changes?
--------------------------------------------------------------------------------
Did you really just ask that? Please tell me you are being facetious.
Dilbert was asked the very same question by the pointy haired boss! Obviously you can't.
I'd be hesitant to use XP for software deployed in life-threatening mission ciritcal apps.
XP doesn't work as well (cost-effectiveness) as other methods.
Similarly I think if the project potentially faces major changes, I don't think XP is the best choice.
This scares me. When can you estimate the story?
If the team is too junior, they overestimate their abilities and don't spend enough time planning.
Or they go off in different directions. Maybe it's just because the last few years I saw too many startups where the average age of a developer was 21. I fear XP would not work well in those situations. not enough discussion would be done.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Gavin Bong:
Updating the UML diagrams is actually a moot point. My modelling tool just sucks up the java class files and reverse engineer that to generate the diagrams.
Anyway, jumping right into the BDUF vs XP debate; I think there exists a middle ground b/w the two that works best.
Architectural issues NEEDS to be designed up front.
And one does not usually go writing everything from scratch. A pattern centric design process means that developers already have common viewpoints on how to code to meet requirements. The XP way would be to write the tests and get a skeleton class working; then refactor to patterns (that's not efficient enough, in my opinion)
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Mark Herschberg:
A better signal to noise ratio. Lots of feedback is not necessarily optimal.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
To me, it looks quite the other way: in XP, the vision is "lived" by the team, reiterated and refined in daily discussions. There are Pair Programming discussions as well as diagrams on the white board from recent "quick design sessions". Misunderstandings and misconceptions are found out about early and are rather easy to fix.
Originally posted by Ilja Preuss:
But that's a big "if", isn't it?
Originally posted by Ilja Preuss:
And I am arguing that XP *is* doing "just sufficient design"; though I concede that it might look scary to someone used to less agile development.
Originally posted by Gavin Bong:
Anyway, jumping right into the BDUF vs XP debate; I think there exists a middle ground b/w the two that works best.
Originally posted by Ilja Preuss:
The way we do it is holding the code as flexible as we know to do.
Originally posted by Ilja Preuss:
I'd be hesitant to use XP for software deployed in life-threatening mission ciritcal apps.
I would certainly want to add more safety nets, too.
XP doesn't work as well (cost-effectiveness) as other methods.
Huh?
Originally posted by Ilja Preuss:
There are three forces at work correcting their errors, here:
Originally posted by Ilja Preuss:
That's what baffles me - you somehow seem to equate "writing design documents you then only need to code to" more to "discussion", than doing weekly planning meetings, daily stand-up meetings, pair programming, short design sessions on the white board etc.
Originally posted by Ilja Preuss:
My experience with people and skillsets is that their shortcomings won't be overcome by the XP model under the circumstances I described earlier.
Mhh, I wonder what might be a good alternative to giving people lots and lots of feedback on how they do...
Originally posted by Mark Herschberg:
Oh, you meant really good feedback! And I meant really good design, one with no bugs. :-p Again, I believe that the team I described would not be very efficent at generating such feedback.
--Mark
Originally posted by Junilu Lacar:
Without proper guidance, an inexperience team will not be efficient, no matter what process they follow. The process that ultimately allows them to learn faster will be more efficient.
Originally posted by Junilu Lacar:
...I don't think that designs that are thrown out are wasted. They are, as you said, a necessary part of the learning process. You just have to be efficient and control how much of the design you throw out.
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Lasse Koskela:
What do you mean by "controlling" here? I trust that you don't mean having some corporate rules for "throwing out a maximum of 26% of design"...
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Mark Herschberg:
You see design which was created and cast aside as wasted.
I see it as experienced learned which will help the team do better. Much like science, a wrong path may still be valuable. The trick is finding the balance and quickly recognizing that the path is wrong.
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
The way we do it is holding the code as flexible as we know to do.
--------------------------------------------------------------------------------
There is nothing inherent in upfront design which makes the code inflexibile.
quote:
--------------------------------------------------------------------------------
Originally posted by Ilja Preuss:
There are three forces at work correcting their errors, here:
--------------------------------------------------------------------------------
And all those three forces can exist in a process which also used upfront design. I don't see any advantage of XP here.
You can (and if you want any hope of succeeding) should have regular meetings, reviews, design sessions etc in any process. I just happen to think doing some upfront design in beneficial to XP for certain project/team combinations.
Likewise, for a significantly big change halfway through the project, such significant design needs to be done again.
Oh, you meant really good feedback! And I meant really good design, one with no bugs. :-p Again, I believe that the team I described would not be very efficent at generating such feedback.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Too many men are afraid of being fools - Henry Ford. Foolish tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
|