Re: agile/xp question (formal analysis)

From: Ron Jeffries (ronjeffries_at_acm.org)
Date: 11/29/04

  • Next message: Andreas Huber: "Re: Implementation of State-Machine"
    Date: Sun, 28 Nov 2004 19:17:24 -0500
    
    

    On Mon, 29 Nov 2004 10:58:19 +1200, AndyW <foo_@bar_no_email.com>
    wrote:

    >On Sun, 28 Nov 2004 04:59:21 -0500, Ronald E Jeffries
    ><ronjeffries@acm.org> wrote:
    >>
    >>Yet ... folks here, like you, Andy and Daniel and others, seem not to
    >>just be saying that it scales up more slowly, so that a larger project
    >>could only ship a feature every four weeks or something. You seem to
    >>be saying that a larger project reaches some point where it can't ship
    >>incrementally at all, and can instead only ship large batches of
    >>features, once, or a few times, over the course of the project. Unless
    >>I'm not understanding your points, of course.
    >>
    >>So ... what am I missing? Thanks!
    >
    >i'd call that a small project to be honest and what you have described
    >while being valid is probably the output of just one feature core
    >team. Add another five or six of those teams to the project then
    >imagine the infrastructure that would be required to go with it.

    It's the word "required" that I'll be taking issue with or exploring.
    My thinking is much along the lines of Laurent's post just above.
    >
    >As an example, (i'll make up an imaginary project - based on one that
    >I was on, using a formal method), but lets assume we are developing a
    >flight booking system for maybe a dozen major airlines around the
    >world
    >
    >The first thing that will probably happen is that the management team
    >will have to bring together a sales engagement team - probably with
    >people in several different countries.
    >
    >Next will be the senior architecture team, probably about 6 people and
    >will include the top PM and probably any others as well (some projects
    >may have half a dozen project managers on board).
    >
    >At this stage a BA team will be formed from industry experts - these
    >people along with the architecture team will be customer facing - or
    >if no customers exist (as is often the case) will represent the
    >customer along with the slaes team.
    >
    >So now you have probably about 30 or so core people involved in
    >creating the very high level problem statement, use case model,
    >non-funcional requirements and system architecture for the airline
    >industry.
    >
    >Management tasks would be the Business Case and Acceptance Plan for
    >the project. The former is to draw funding and the latter is to have
    >signoff for each of the customers and all of the bits and pieces of
    >the project (all the stages and features etc).
    >
    >As that starts to develop you'll want to start getting a UI team into
    >action, these guys have to do a lot of conceptual modelling, probably
    >create a prototype and proof of concept as well as during production
    >create the UI for each of the feature teams.
    >
    >The UI team will also probably be your floor walkers along with the
    >architects - basically solving developers and management issues,
    >teaching, bug fixing, evangilizing the vision, etc.
    >
    >BAs will start coming on board and you'll want to start splitting them
    >into sub-teams as each of the feature sets start being defined. Each
    >Team of BAs will produce the requirements for that feature set. They
    >will be doing most of the analysis and part of the design (to the
    >system model).
    >
    >By now you may have about 60 or 70 people on your project and probably
    >some idea of what an airline booking system does (you've probably also
    >nicked a copy of your competitors product at the local trade shows).

    I would definitely agree that /if/ we did it that way, we would surely
    have spiked any possibility of being agile.

    What seems equally true to me is that we might have taken a handful of
    people, looked at an existing flight booking system, talked with, as
    Laurent suggests, people from one airline, and begun to produce a
    system.

    I'd wager that I could have a small scale booking system running with
    a half-dozen people before the recruiting for the 70 people listed so
    far could be accomplished. (But you wouldn't bet against me, I'll also
    wager. Instead, your concern will be that the small scale system
    couldn't "scale up".
    >
    >Management overhead at this stage will include fleshing out the whole
    >dev process for each of the feature teams, a resource plan, high level
    >shcedule, release plan, QA Plan, Risk Plan, Reuse plan, Test Plans
    >Metrics, Issues and Dependancies.

    Yes. Again, if we choose to do these things, then we'll have spiked
    our feet to the floor as regards agility. And I know that people
    believe these things are necessary. Maybe they are, but I don't see
    it.
    >
    > <more hiring snipped>
    >
    >All this stuff needs to happen on a large project (this is based on
    >WSSDM but you can substitute any project level methodology here).

    I get that it does happen. What's not clear to me is that it really
    needs to happen, at least as early as we think. (It's not clear to me
    that it /doesn't/ need to happen either, mind you. If one day the
    project really will need hundreds of people, I surely don't know how
    to manage them in a room.

    But if someone had a bunch of money to waste, I could imagine trying
    what has been called a "Conquer and Divide" approach, where a small
    team builds a small system, works intimately with "Customers" to
    figure out what the system's shape has to be, and then begins to
    divide into different teams based on natural cleavage points in the
    system.

    Would this work? I don't know. I wouldn't want to be responsible for
    it, but then I don't like the kinds of things that "have to", or at
    least /do/ happen on large projects. So the project wouldn't want me,
    and I wouldn't want it. That's cool.

    But I don't see that these things are logically necessary. I see that
    they are things that have sometimes worked, and that people believe
    them to be necessary. They are /a/ way to do it, but I don't see why
    they are /the only/ way.
    >
    >The Agile/XP process itself can be used on the project, but at a much
    >more granular level. Usually its the method that the feature and back
    >end teams use - and it wont be a direct implementation - it will be
    >highly modified at the best of times.

    Yes, I see that. Many of the practices of Agile/XP are valuable
    anywhere. The structure you've described, as I understand it, has to
    do with coordinating the activities of many smaller groups, in a sort
    of hierarchical structure, so that everything comes together. At the
    small group level, much of the process could include Agile/XP
    activities to good effect and no harm. (Those activities would be
    required to be supplemented with reporting of various kinds to aid in
    the coordination, of course.)
    >
    >Its important (at least for me) to understand that when an Agile
    >person is talking about release schedules and feature sets and all
    >that - they are doing so from the perspective of a member of a feature
    >team, rather than the perspective of the entire project. At the
    >project level it is more like mini-waterfall (although you will find
    >the buzzwords to be taken from the feature teams).

    I understand the distinction you're drawing. Again, I agree that you
    are describing a valid way of doing these large projects, but it's not
    clear to me that it is the only way or even the best way -- though
    surely it's the best way we know so far.
    >
    >So you'll have multiple BA teams performing analysis/high level design
    >- as they finish each phases tasks, they will probably start on a fix
    >phase (ver x.1) for a while to pick up issues found by the devs and
    >customers (this is the mini-waterfall overlap) , before going on to a
    >missing feature phase (x.2) for stuff that was delayed, and then the
    >next phase (y.0).

    At this level I'd be wanting to tighten the loop between BA and
    developers, and to avoid as many fixes as possible through means such
    as concrete acceptance tests and the like. I would suppose that some
    of the problems would be difficult, and that other techniques would be
    useful as well. I'm sure that no one likes the need for a fix phase. I
    suspect that many people see it almost as a necessary evil, and I
    suspect that there are still ways to reduce that evil. Some of those
    ways might come from the Agile thought process, perhaps.
    >
    >As each work product this produced by those teams it will probably
    >then get assigned to the appropriate feature teams and probably by
    >them to an individual developer who will follow it thru to completion.
    >Its likely that they will have counterparts on other teams (if the
    >produc requires middleware, server stuff etc). so there will be delays
    >while people wait for things to happen or do other stuff such as
    >planning and the like.

    Yes. Here I'd not use individual developers but teams, and I'd want
    not to break th ings between feature, middleware, and server, but
    instead to go end to end through all of those in one featue team. As
    you point out there is inevitable waiting when we build the teams with
    feature, middleware, and server split apart.
    >
    >In general you'd find that a developer will be coding for probably 2
    >days out of 5, days at best (if you look at the average metric)
    >although sometimes they may get a burst and perhaps do a whole weeks
    >worth.

    What are they doing the other three days?
    >
    >You'd probably be looking at about a year or so to come up with a
    >working system that could be demo'd to the sponsers and customers
    >(although you would have kept the UI folks doing whizzy things with
    >prototypes), and maybe 2 years to go gold with a version 1, then
    >probably anotther 2 years to capture your target market share and
    >mature the feature set with reall stuff.
    >
    >Probably at the ver 1, the team size would shrink or grow depending if
    >you are spinning off maintenance to the individual countries or having
    >a core dev team with feature implementation teams out on location.

    I believe I understand the description, and appreciate some of the
    inevitable scale issues. Obviously this thing wouldn't run on a single
    PC in someone's basement.

    And yet, I wonder how far one could go in understanding the
    architecture and building the UI and so on by starting with a small
    team building the system in the presence of "Customers" (BA's, real
    users, etc) in an XP style.

    It's easy to speculate about the things that "would" go wrong. I
    expect that most of the arguments will be about scaling up. Those
    arguments are interesting, and persuasive, but not entirely persuasive
    to me.

    It also starts me wondering about an airline booking system that works
    like Kazaa, or Napster, or SETI@home. Small software, small systems,
    fully distributed, hmm ...

    Thanks and regards,

    -- 
    Ron Jeffries
    www.XProgramming.com
    I'm giving the best advice I have. You get to decide if it's true for you.
    

  • Next message: Andreas Huber: "Re: Implementation of State-Machine"

    Relevant Pages

    • Printer Driver(OEMUNI): Black Output
      ... *Feature: Orientation ... it isdivisible by the resolution X scale. ... so itis divisible by the resolution Y scale. ... *Command: CmdStartPage ...
      (microsoft.public.development.device.drivers)
    • Printer Driver: Always black page
      ... *Feature: Orientation ... it isdivisible by the resolution X scale. ... so itis divisible by the resolution Y scale. ... *Command: CmdStartPage ...
      (microsoft.public.development.device.drivers)
    • Re: Print Window at 100%, not at Origin
      ... It should be an actual feature in the software though! ... but the feature are I wish to print would easily fit on ... window to be printed at full, or whatever scale I decided! ...
      (comp.cad.solidworks)
    • Re: Why Difference of Gaussian works in SIFT?
      ... convolves the image with Gaussian filter with a variable variance and ... subtracts successive images. ... identifies them as potential feature points robust to changes in scale. ...
      (sci.image.processing)
    • RE: [fw-wiz] Re: Anybody Recognize These Uploads?
      ... As functionality is added, because customers want it, so are ... because of customer wants, they're added as marketing feature draws, or ... happy with a copy of Outlook that simply wasn't capable of rendering HTML ... (the client, not funky filtering between the client and the server, and ...
      (Firewall-Wizards)