Loading ...
Sorry, an error occurred while loading the content.

RE: [XP] Applying TDD with different teams

Expand Messages
  • William Wake
    ... If they re really writing it from line 1, I d suggest a brief team discussion, then just putting one pair on building the slimmest possible skeletal
    Message 1 of 1 , Mar 3, 2004
    • 0 Attachment
      >From: "Jonathan S. Ostroff" <jonathan@...>
      > > How can we apply TDD with a group of 2 or more people? When you use TDD,
      > > you just begin a project by make a test onto your improvised classes.
      >You
      > > don't have any clue about how much work you will do or how many classes
      > > you will set up. Hence, how can you distribute works among people in the
      > > group?
      >
      >A student posed a question to me as above. They have a fairly large project
      >to do and are wondering how they would break it up into chunks that
      >different teams can work on. We can assume that each team works on their
      >own
      >time but they are able to meet when necessary (these are students and thus
      >they are not all working in the same office or lab).

      If they're really writing it from line 1, I'd suggest a brief team
      discussion, then just putting one pair on building the slimmest possible
      skeletal version of the system. (I'm talking at most one hour's work.) In
      the meantime, other pairs can do some web research, do some spikes, work on
      straightening out source control etc.

      I've tried a couple other ways: just get people to try to start small and
      coordinate, or set up a market ("each pair does a version & we'll pick the
      best features of each"). Both these feel like too many people in one phone
      booth (especially for a small problem).

      There are a couple analogies for this:
      - You may hear the phrase "conquer and divide" (rather than "divide and
      conquer"). This suggests that you solve some of the problem before
      splitting. I've come to believe it applies even in the small. (I think this
      is a phrase from Kent Beck, so I wouldn't be surprised if he meant it that
      way in the first place.)

      - When Toyota first sets up a new assembly line, they start slow and crank
      up the rate slowly, cleaning up problems as they go, until they can go at
      full speed.

      So I'd borrow the latter approach: start with a pair for a bit, and when
      they felt like there was enough to split, fission the pair, try some small
      steps and checkins to make sure the source control and build systems are
      right, then go from there.


      For example, a bookselling web site could start with the goal of creating a
      page where you can enter your name and buy the "top pick of the day". The
      very first cut might take a text field and produce a web page displaying
      that text. Then you could grow from there: you might have a basic search (of
      a catalog of one book), skeletal book suggestion service (providing the same
      book for everybody -- like some booksellers do:), a skeletal checkout (using
      a default purchase agreement - "bill me"), a skeletal billing engine
      (putting the name, book, and price somewhere), and a skeletal fulfillment
      system (putting the name and book somewhere else). At some point, you'll be
      able to split these services to different pairs.

      >We can assume that each team works on their own
      >time but they are able to meet when necessary (these are students and thus
      >they are not all working in the same office or lab).

      Sounds less than ideal. (There's a lot of good dynamics from pairs being
      able to work together and swap.) I hope they can have a shared repository
      somewhere.

      --
      Bill Wake William.Wake@... www.xp123.com
      Author of the Refactoring Workbook

      _________________________________________________________________
      Learn how to help protect your privacy and prevent fraud online at Tech
      Hacks & Scams. http://special.msn.com/msnbc/techsafety.armx
    Your message has been successfully submitted and would be delivered to recipients shortly.