On Thu, 9 Feb 2012, Patricia Shanahan wrote:
> On 2/9/2012 9:45 AM, markspace wrote:
>
>> Anyone want to discuss pros and cons of various software development
>> methods? Or maybe pros and pitfalls of Agile, i.e., how to avoid doing
>> it wrong.
>>
>> Also, new thread, or jack this one?
>
> The subject line is fine for a discussion of agile project management,
> so I think hijack it.
>
> First of all, I have seen a general pattern to software development
> methodologies:
>
> 1. Some people come up with an approach to software development.
>
> 2. A lot of books get written, and complete, detailed systems combining
> many ideas are produced.
>
> 3. The detailed systems, applied completely and unintelligently, do not
> work well.
>
> 4. Some of the ideas, mixed with other ideas and selected to fit the
> project and situation, turn out to be extremely useful, and become part
> of the essential software project toolbox.
>
> I've seen this pattern repeat several times, starting with "structured
> programming" in the 1960's and 70's.
In partial defence of agile, Extreme Programming, which i think of as
being the true, pure, form of agile, was developed in a very practical
way, by experimentation with the process used on the Chrysler
Comprehensive Compensation System project. It's not a case of some egghead
attaining enlightenment through contemplating their navel and then writing
a fat book about it.
This is not to say that it doesn't suffer from the problem of being
applied unintelligently.
XP also has a huge Achilles' heel, in that it demands a very different
relationship with the customer to traditional processes. If you can't have
that kind of relationship, then you can't actually do XP, and whatever
halfway house you settle on is going to include some pretty weird
compromises.
But, as you say, you can definitely pull some useful features from XP to
use in your local process. Continuous integration and automatic testing
have pretty much carried the day, i think. I contend that small releases,
standups, Do The Simplest Thing That Could Possibly Work, spikes, and the
idea that the customer's motivation should always be obvious are all
valuable to any project.
Really, what XP is about is tightening feedback loops, which has the
effect of shortening the period where you don't know something useful.
Continuous integration, instead of integration once a week or whatever,
shortens the period where you don't know if your code will merge with your
colleagues'. Automatic testing, rather than waiting for QA to come along
and test manually, shortens the period where you don't know if your code
does what you expected. Small releases, rather than quarterly or more
infrequent releases, shorten the period where you don't know if your users
like what you've done. Daily standups, rather than weekly or monthly
all-hands meetings, or newsletters, or the grapevine, shorten the period
where you don't know what your colleagues are doing. DTSTTCPW, rather than
big design up front, shortens the period where you don't know if the code
you're writing will get anywhere. Spikes, rather than taking designs or
assumptions on faith, shorten the period where you don't even know if your
code could possibly get anywhere. The use of the customer motivation
practices, like on-site customer (or at least business analyst/product
manager sitting at the desk next to you) and using user stories, rather
than working purely from technical specs, shorten the period where you
don't know which technical decision best serves the customer's interest.
That's what XP is really about. People get hung up on the provocative,
radical, possibly misguided, technical practices, like pair programming,
or test-driven development, but those are actually not the important bits.
What really matters is shortening the latency between a customer
developing a desire for a feature, and their having it in their hands,
because that is a cast-iron way of making sure that you are building the
right thing.
tom
--
In case you don't know what CROWDSOURCING is, it's a stomach-churning
new media term obviously invented by a bastard made of piss. -- Charlie
Brooker