📄 whenxpisunpopular.html
字号:
<head><title>When Xp Is Unpopular</title></head><body><h1><img src="logo.gif"> When Xp Is Unpopular</h1>Well, maybe Unpopular is too strong a word, but it definitely causes StrongReactions<a href="http://c2.com/cgi/wiki?edit=StrongReactions">?</a>. On this page I would like to explore the EmotionalReaction<a href="http://c2.com/cgi/wiki?edit=EmotionalReaction">?</a> to <a href="ExtremeProgramming.html">ExtremeProgramming</a>, to see what it is about XP that causes such strong reactions.
<p>I like <a href="ExtremeProgramming.html">ExtremeProgramming</a>, not least for the fact that it seems to be able to PlugPeopleIn<a href="http://c2.com/cgi/wiki?edit=PlugPeopleIn">?</a>. --<a href="http://c2.com/cgi/wiki?PeteMcBreen">PeteMcBreen</a>
<p>Just to balance things out, and to see the other side of the EmotionalReaction<a href="http://c2.com/cgi/wiki?edit=EmotionalReaction">?</a>, let us explore <a href="WhyXpIsPopular.html">WhyXpIsPopular</a>, and later on we can try to hunt for the Third of the <a href="http://c2.com/cgi/wiki?ThreeBears">ThreeBears</a>. --<a href="http://c2.com/cgi/wiki?PeteMcBreen">PeteMcBreen</a>
<p><em>If humans were supposed to fly they'd be born with stewardesses...</em>
<p><hr>
Candidate Reasons
<p><OL><li> <em>XP challenges our basic assumptions about the software development process</em> This is a strong candidate, since the results XP is reporting are kind of <a href="http://c2.com/cgi/wiki?CounterIntuitive">CounterIntuitive</a>.
<p><li> XP challenges deeply entrenched, learned resistance to whatever latest Morgatrond Thumpwistle Heavy Methodology our computer-illiterate managers have been screaming at us to use for decades. When we learn to despise and fight <em>any</em> methodology, sight unseen, we tend to attack introductions to XP as "Just Another Paperwork Silo."
<p><li> <em><a href="DoTheSimplestThingThatCouldPossiblyWork.html">DoTheSimplestThingThatCouldPossiblyWork</a> seems too simple for this stuff to be real, they must be ReallyDoingSomethingElse<a href="http://c2.com/cgi/wiki?edit=ReallyDoingSomethingElse">?</a>.</em> Given the reactions to the simplest thing, this is another candidate. <em>Is it just my imagination, or do colleges teach Do The Most Complex Thing Possible (combined with <a href="http://c2.com/cgi/wiki?NotInventedHere">NotInventedHere</a>)? This could be a clue.</em>
<p><li> <em>Some of the people writing about it are kind of, um, well, uh, pushy?</em> --<a href="RonJeffries.html">RonJeffries</a>
<p><li> <em>XP challenges the heart of the SEI/CMM world.</em> The <a href="http://c2.com/cgi/wiki?CapabilityMaturityModel">CapabilityMaturityModel</a> is only one possible description of the software development process and how to improve it. XP seems to be suggesting that actually trusting your developers to follow a process is an alternative path to a highly productive, optimizing software development process.
<p><li> <em>This <a href="PairProgramming.html">PairProgramming</a> stuff is kind of kooky</em> Works, though.
<p><li> <em>You mean I have to like actually <a href="http://c2.com/cgi/wiki?TestMyOwnCode">TestMyOwnCode</a>?</em>
<p><li> We staffed a whole QA department. They have to be given something useful to do. So tell the developers to stop testing, the QA department will do it for them, and save time. <em>(Don't laugh, I've actually seen this done!!!)</em>
<p><li> <em>Everyone knows that <a href="http://c2.com/cgi/wiki?TestingCannotProveTheAbsenceOfErrors">TestingCannotProveTheAbsenceOfErrors</a>.</em> Therefore extensive testing does not work, what you should be doing is FormalDesignReviews<a href="http://c2.com/cgi/wiki?edit=FormalDesignReviews">?</a> of <a href="http://c2.com/cgi/wiki?UmlDiagrams">UmlDiagrams</a> before you write a line of code. Anybody who would even suggest otherwise must be .... this rant and rave can go on forever
<p><li> <em>Why didn't I think of it?</em>
<p><li> People do not understand what <a href="DoTheSimplestThingThatCouldPossiblyWork.html">DoTheSimplestThingThatCouldPossiblyWork</a> means - I know I didn't at first. It needs to be contrasted with what Ron calls "Experiments", which are ugly yet simple ways of seeing if something will work, and which are quickly displaced by the simplest possible thing that could work: i.e. a better factored, easy-to-read and maintain version of the thing. --<a href="http://c2.com/cgi/wiki?JoshuaKerievsky">JoshuaKerievsky</a>
<p><li> <em>The name "<a href="ExtremeProgramming.html">ExtremeProgramming</a>".</em> I must confess I had seen several of the ideas of <a href="ExtremeProgramming.html">ExtremeProgramming</a> before (I know, "everyone" says this...). Actually we went through a BrainWash<a href="http://c2.com/cgi/wiki?edit=BrainWash">?</a> by <a href="http://c2.com/cgi/wiki?TomGilb">TomGilb</a> with is Evo/PLANGUAGE stuff. Imagine being a consultant (<a href="http://c2.com/cgi/wiki?MakeMoneyFast">MakeMoneyFast</a> :-)) and you approach a manager with the statement "From tomorrow on you should do Extreme Programming.". Sounds a little bit radical compared to "From tomorrow on you should do evolutionary development.". -- <a href="http://c2.com/cgi/wiki?ThomasWeidenfeller">ThomasWeidenfeller</a>
<p><li> <em>The marketing of the method.</em> This is somewhat related to the previous point. I recently attended a presentation about XP at a conference by <a href="KentBeck.html">KentBeck</a> (App. Dev. '99 in London). This is not to criticize Kent, but he spoke on the level of one programmer to other programmers. Methods are, however, not at least management decisions. They have to be convinced first, because they make the decisions about methods, they spend the money, they have to believe. Speaking about code to managers is not a good idea.
<p><li> From <a href="AtsGoesExtreme.html">AtsGoesExtreme</a>: <em>... a methodology whose name sounds like it was born from a surfer's hangover. ("Whoa... dude... you're a programmer? That's, like, extreme, man! Yeah, you're an extreme programmer, dude. Heh heh.")</em>
<p><li> 3x5 cards are cheap. There's no profit in marketing design and analysis methodologies whose tools are just 3x5 cards.
<p><li> Doing the simplest thing that could possibly work usually doesn't include writing a popular book about your methodology. So there are many many more books about much more complicated methodologies. <em>I hope <a href="KentBeck.html">KentBeck</a> proves you very, very wrong. --<a href="http://c2.com/cgi/wiki?PaulChisholm">PaulChisholm</a></em> I hope he does too! --<a href="http://c2.com/cgi/wiki?PeterMerel">PeterMerel</a>
<p><li> Management doesn't think iteratively. So it's hard to get them to accept any iterative methodology. <em>Not likely!. When I was a manager, I would have killed for a process that let my developers say to me, every few days or so, "That feature is designed, coded, tested, doesn't break the world, and is under source control." Killed, I tell you. --<a href="http://c2.com/cgi/wiki?PaulChisholm">PaulChisholm</a></em> You'll forgive me, Paul, but you don't sound like the kind of management I mean - the kind to whom schedule negotiation is a one-way street. --<a href="http://c2.com/cgi/wiki?PeterMerel">PeterMerel</a>
<p><li> This stuff comes out of the smalltalk world. Who the hell works in smalltalk these days? Okay, a few crackpots, but come on, get serious ...
<li> They started late.
<p><li> Doing this requires a lot of rigor and mental change in the developers. Them that are used to hacking have to get used to testing. Them that are used to designing have to get used to CRC. Them that are used to lonely work have to get used to partnering.
<p><li> There really isn't an XP community yet. Those of us who are enthusiastic about the idea will no doubt form one, but for now you can count the <a href="ExtremeProgrammingProjects.html">ExtremeProgrammingProjects</a> in the world on the fingers of one hand.
<p><li> There's no XP consultants or training courses. Well, maybe you can go sit in with Ron and Kent, or ask them to kindly come sit in with you, but you can't get your local body shop to supply folk with these skills.
<p><li> There's no role for pure Analysts, Business Analysts, pure Methodology Experts etc.
<p></OL>And probably many more. Nevertheless, what's the alternative? --<a href="http://c2.com/cgi/wiki?PeterMerel">PeterMerel</a>
<p><em>What's the alternative? Structured analysis and design. "Classic" responsibility-driven object oriented analysis and design. Rum-booch-tory with UML. Cleanroom development. Shlaer-Mellor. Fusion. Strict CMM (which is really orthogonal to these methods, since it talks about measurement not artifacts). "Code-you're-done." None of these is perfect. All have been behind many successful projects. Peter, if you've moved beyond these to Xp, and you're happy where you are, I'm happy for you. Questions such as "What's the alternative?" do help answer the question, "Why is Xp unpopular with some people on Wiki?" ... but maybe not the way you thought. --<a href="http://c2.com/cgi/wiki?PaulChisholm">PaulChisholm</a></em>
<p>Um, you read a lot into a little phrase. I've tried a fair amount of what you refer to, with varying degrees of satisfaction. As to moving to Xp, while I'm very sympathetic to it I'm trying to find the right context to apply it. I don't expect it to be the one true faith - see comments on <a href="http://c2.com/cgi/wiki?WuWei">WuWei</a> for reasons why not. Moreover I'm very well aware that there are many contexts where XP would be a bad choice of methodology. But I write "what's the alternative?" because I personally don't know something that I personally would rather use. Perhaps this is only my antipodean inflections coming through - I've been bitten by my upbringing before - but I meant nothing more than that. I certainly agree that <a href="http://c2.com/cgi/wiki?ExtremeProgrammingIsNotTheOneTrueFaith">ExtremeProgrammingIsNotTheOneTrueFaith</a>. --<a href="http://c2.com/cgi/wiki?PeterMerel">PeterMerel</a>
<p><hr>
Here's another one.. I wouldn't say it is operating now, but it will:
<p>0. "Are you telling me that everything I've learned over the years is less important than how well I communicate and coordinate with my coworkers?"
<p>It is a very humbling proposition. People say that two heads are better than one, but when the truth of that really sinks in there are a lot of bruised egos to contend with. Sad to say, but there are many people whose sense of self-worth is incredibly dependent upon how they rate their skills against their peers.. more competitiveness than cooperation... they'll code like hell until they are the monster-gods.. so smart that they never have to write code.. they can drop UML diagrams on the masses; and that is only within teams. Industry-wide, there are many people who make a fine living by telling people that things are harder than they really are. I shouldn't knock them, because many of them are sincere, but nonetheless they have much to lose if the work is seen as simpler.
<p>-- <a href="http://c2.com/cgi/wiki?MichaelFeathers">MichaelFeathers</a>
<p><hr>
<p>My reaction to XP is this: many of the core ideas are solid.
<p>Much like patterns, many of them don't seem to be particularly new to
me. I've been constantly refactoring and striving for simplicity for
years now. I showed the XP pages to a coworker, a guy with a C++
background who now does Java. He was familiar with them too.
<p>Some of the ideas are new to me, and seem like pretty good ones. I like the
idea of unit tests a <strong>lot</strong>. I have some doubts about the level of
granularity-- unit testing each object just feels a little too fine-grained
to me. On the other hand, I think this is, to some extent, a matter of
comfort with refactoring. The more unit tests you have, the more confident
you can be that you haven't screwed things up. Hence, fine-grained unit
testing lets you confident when restructuring code and enables larger,
faster, single-step changes than would otherwise be the case.
<p>But some of the XP rhetoric just seems wrong. I think there is such a thing as
design. To give some context: I used to have to defend coding to people.
They'd want to be off in picture-land, drawing OMT (this was before UML)
diagrams. And I'd be sitting there saying things like "I don't know.
I need to see the code" or "Programming is a form of thinking" or
"I don't know what that picture means."
<p>But, now, the shoe's on the other foot. I read some of the XP pages
and wind up protesting "There are forms of thinking besides coding."
Coding is a very concrete form of thinking. And I think here is value to
thinking abstractly on occasion (see ThePotatoSaladAnalogy<a href="http://c2.com/cgi/wiki?edit=ThePotatoSaladAnalogy">?</a>).
Said value is, I think, given short shrift in the XP universe.
<p>So this is what I find intriguing about XP: the core ideas are
straightforward and reasonable. The proponents seem like skilled coders
who are reasonably intelligent. And yet... I'm missing something.
Why are these people so sure they've got something special ? Apparently
the pieces, which I think I understand, fit together in a way I don't
understand.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -