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

Working with metaphors

Expand Messages
  • jhrothjr
    Metaphor seems to be one of the major pieces of XPv1 that almost everyone has problems with. I came across an article that gives a good definition, hordes of
    Message 1 of 29 , Jun 6, 2008
    • 0 Attachment
      Metaphor seems to be one of the major pieces of XPv1 that almost
      everyone has problems with. I came across an article that gives a good
      definition, hordes of examples and some procedures for finding an
      appropriate metaphor for a situation.

      It's a bit old (2001) and it's absolutely not in the software
      development domain, which may be a good thing.

      http://www.adrr.com/adr4/metaphor.htm

      John Roth
    • Ken Boucher
      ... I think the problem is that a large number of people don t think in metaphors or use them. And as I ve been exploring that thought in various subcultures
      Message 2 of 29 , Jun 6, 2008
      • 0 Attachment
        > Metaphor seems to be one of the major pieces of XPv1 that almost
        > everyone has problems with.

        I think the problem is that a large number of people don't think in
        metaphors or use them. And as I've been exploring that thought in
        various subcultures (programmers, artists, writers, web designers,
        gamers, industrial designers, and managers) it strikes me that the
        programmers seem to have a larger percentage of people who don't like
        metaphors than the other fields.

        This seems counter-intuitive to me, but that's been my experience. If
        I had to hazard a guess, I'd say that maybe it's because we accept
        that metaphors are imprecise and some people get involved with
        programming because it is very precise and exacting.

        To take it a step further, the programmers I found using metaphors the
        most were disciples of other fields in addition to being programmers.
        For example a programmer with music or literature degree tended to be
        much more comfortable with using and creating metaphors than a pure
        programmer who was hired solely for programming expertise.

        I honestly don't think it's a skillset or experience problem. I hink
        it's a personality issue. Forcing people who don't like metaphors to
        use them is about as helpful as taking people who don't like seafood
        to a sushi joint every day. As a result, I really feel it's either a
        fairly good practice and should be discarded quickly when you have a
        group of people that don't like it or, conversely, if you have a group
        of people who use it every day, it should be part of the early
        interview process.
      • Ron Jeffries
        Hello, Ken. I ve not observed quite the same difference you speak of, but what you say rings true to me. I think perhaps in M-B terms, the strong Thinker
        Message 3 of 29 , Jun 7, 2008
        • 0 Attachment
          Hello, Ken.

          I've not observed quite the same difference you speak of, but what
          you say rings true to me. I think perhaps in M-B terms, the strong
          "Thinker" component may enter into it, perhaps especially combined
          with the "iNtrovert" aspect.

          These are the same people who will quibble over some technical
          interpretation of what is said while almost intentionally missing
          the point.

          Odd, we are ...

          Ron Jeffries
          www.XProgramming.com
          Only the hand that erases can write the true thing. -- Meister Eckhart

          On Saturday, June 7, 2008, at 12:25:59 AM, you wrote:

          > I think the problem is that a large number of people don't think in
          > metaphors or use them. And as I've been exploring that thought in
          > various subcultures (programmers, artists, writers, web designers,
          > gamers, industrial designers, and managers) it strikes me that the
          > programmers seem to have a larger percentage of people who don't like
          > metaphors than the other fields.

          > This seems counter-intuitive to me, but that's been my experience. If
          > I had to hazard a guess, I'd say that maybe it's because we accept
          > that metaphors are imprecise and some people get involved with
          > programming because it is very precise and exacting.

          > To take it a step further, the programmers I found using metaphors the
          > most were disciples of other fields in addition to being programmers.
          > For example a programmer with music or literature degree tended to be
          > much more comfortable with using and creating metaphors than a pure
          > programmer who was hired solely for programming expertise.

          > I honestly don't think it's a skillset or experience problem. I hink
          > it's a personality issue. Forcing people who don't like metaphors to
          > use them is about as helpful as taking people who don't like seafood
          > to a sushi joint every day. As a result, I really feel it's either a
          > fairly good practice and should be discarded quickly when you have a
          > group of people that don't like it or, conversely, if you have a group
          > of people who use it every day, it should be part of the early
          > interview process.
        • Donald Roby
          ... You ve got the letters a little mixed up I m afraid. But I would expect a strong iNtuitive aspect to make someone more apt to use and like metaphors,
          Message 4 of 29 , Jun 8, 2008
          • 0 Attachment
            --- In extremeprogramming@yahoogroups.com, Ron Jeffries
            <ronjeffries@...> wrote:
            >
            > Hello, Ken.
            >
            > I've not observed quite the same difference you speak of, but what
            > you say rings true to me. I think perhaps in M-B terms, the strong
            > "Thinker" component may enter into it, perhaps especially combined
            > with the "iNtrovert" aspect.
            >
            You've got the letters a little mixed up I'm afraid. But I would
            expect a strong "iNtuitive" aspect to make someone more apt to use and
            like metaphors, and to have more effect here than any of the other M-B
            aspects. "Thinking" might play in also though, as you note, and all
            aspects have some degree of interaction.

            I could of course be wrong (I often am ;-)), as this is certainly well
            outside my expertise.

            > These are the same people who will quibble over some technical
            > interpretation of what is said while almost intentionally missing
            > the point.
            >
            > Odd, we are ...
            Indeed!

            >
            > Ron Jeffries
            > www.XProgramming.com
            > Only the hand that erases can write the true thing. -- Meister Eckhart
            >
            > On Saturday, June 7, 2008, at 12:25:59 AM, you wrote:
            >
            > > I think the problem is that a large number of people don't think in
            > > metaphors or use them. And as I've been exploring that thought in
            > > various subcultures (programmers, artists, writers, web designers,
            > > gamers, industrial designers, and managers) it strikes me that the
            > > programmers seem to have a larger percentage of people who don't like
            > > metaphors than the other fields.
            >
            > > This seems counter-intuitive to me, but that's been my experience. If
            > > I had to hazard a guess, I'd say that maybe it's because we accept
            > > that metaphors are imprecise and some people get involved with
            > > programming because it is very precise and exacting.
            >
            > > To take it a step further, the programmers I found using metaphors the
            > > most were disciples of other fields in addition to being programmers.
            > > For example a programmer with music or literature degree tended to be
            > > much more comfortable with using and creating metaphors than a pure
            > > programmer who was hired solely for programming expertise.
            >
            > > I honestly don't think it's a skillset or experience problem. I hink
            > > it's a personality issue. Forcing people who don't like metaphors to
            > > use them is about as helpful as taking people who don't like seafood
            > > to a sushi joint every day. As a result, I really feel it's either a
            > > fairly good practice and should be discarded quickly when you have a
            > > group of people that don't like it or, conversely, if you have a group
            > > of people who use it every day, it should be part of the early
            > > interview process.
            >
          • Ron Jeffries
            ... Yes, Sorry. I think I meant what I thought, not what I typed. :) Ron Jeffries www.XProgramming.com I m giving the best advice I have. You get to decide
            Message 5 of 29 , Jun 8, 2008
            • 0 Attachment
              Hello, Donald. On Sunday, June 8, 2008, at 1:03:02 PM, you wrote:

              > You've got the letters a little mixed up I'm afraid. But I would
              > expect a strong "iNtuitive" aspect to make someone more apt to use and
              > like metaphors, and to have more effect here than any of the other M-B
              > aspects. "Thinking" might play in also though, as you note, and all
              > aspects have some degree of interaction.

              Yes, Sorry. I think I meant what I thought, not what I typed. :)

              Ron Jeffries
              www.XProgramming.com
              I'm giving the best advice I have. You get to decide whether it's true for you.
            • Steve Freeman
              ... memory queue pointer bug (predating Grace Hopper) garbage collection Manager Maybe we just need to be more aware of what we already have. S.
              Message 6 of 29 , Jun 9, 2008
              • 0 Attachment
                On 7 Jun 2008, at 05:25, Ken Boucher wrote:

                >> Metaphor seems to be one of the major pieces of XPv1 that almost
                >> everyone has problems with.
                >
                > I think the problem is that a large number of people don't think in
                > metaphors or use them. And as I've been exploring that thought in
                > various subcultures (programmers, artists, writers, web designers,
                > gamers, industrial designers, and managers) it strikes me that the
                > programmers seem to have a larger percentage of people who don't like
                > metaphors than the other fields.

                "memory"
                "queue"
                "pointer"
                "bug" (predating Grace Hopper)
                "garbage collection"
                "<_>Manager"

                Maybe we just need to be more aware of what we already have.

                S.

                Steve Freeman
                http://www.mockobjects.com

                Winner of the Agile Alliance Gordon Pask award 2006
              • itscion
                To me, working with metaphors can be dangerous. There are those who will force metaphors into a situation, often clouding the project. Not everyone is shilled
                Message 7 of 29 , Jun 9, 2008
                • 0 Attachment
                  To me, working with metaphors can be dangerous. There are those who
                  will force metaphors into a situation, often clouding the project. Not
                  everyone is shilled at using metaphors which leads to
                  misunderstandings. In my opinion it is much more useful to establish a
                  common vocabulary within your domain and stick to it. The book DOmain-
                  Driven Design may be a good read.
                • Ron Jeffries
                  Hello, itscion. On Monday, June 9, 2008, at 11:01:29 AM, you ... It /is/ good. I think it is less than metaphor in power, though, not more. Ron Jeffries
                  Message 8 of 29 , Jun 9, 2008
                  • 0 Attachment
                    Hello, itscion. On Monday, June 9, 2008, at 11:01:29 AM, you
                    wrote:

                    > To me, working with metaphors can be dangerous. There are those who
                    > will force metaphors into a situation, often clouding the project. Not
                    > everyone is shilled at using metaphors which leads to
                    > misunderstandings. In my opinion it is much more useful to establish a
                    > common vocabulary within your domain and stick to it. The book DOmain-
                    > Driven Design may be a good read.

                    It /is/ good. I think it is less than metaphor in power, though, not
                    more.

                    Ron Jeffries
                    www.XProgramming.com
                    No one expects the Spanish Inquisition ...
                  • itscion
                    Hello Ron, In theory, I agree. However, in some of my experiences, the use of metaphors has actually hindered much more than it has helped. Those experiences,
                    Message 9 of 29 , Jun 9, 2008
                    • 0 Attachment
                      Hello Ron,

                      In theory, I agree. However, in some of my experiences, the use of
                      metaphors has actually hindered much more than it has helped. Those
                      experiences, admittedly, had more to do with the incorrect application
                      and/or overuse of metaphors.
                    • Ron Jeffries
                      ... Can you tell us of a specific example, please? Ron Jeffries www.XProgramming.com If we re not shipping our software when it s ready, it s poor business
                      Message 10 of 29 , Jun 9, 2008
                      • 0 Attachment
                        Hello, itscion. On Monday, June 9, 2008, at 8:28:43 PM, you wrote:

                        > In theory, I agree. However, in some of my experiences, the use of
                        > metaphors has actually hindered much more than it has helped. Those
                        > experiences, admittedly, had more to do with the incorrect application
                        > and/or overuse of metaphors.

                        Can you tell us of a specific example, please?

                        Ron Jeffries
                        www.XProgramming.com
                        If we're not shipping our software when it's ready,
                        it's poor business practice.
                        If we're not sure whether our software is ready,
                        it's poor software practice.
                        http://www.xprogramming.com/blog/Page.aspx?display=FrequentReleases
                      • itscion
                        Hi Ron. Sure. Please remember that is an example of misuse or overuse of applying metaphors. While working on a complex series of iterations, one team member
                        Message 11 of 29 , Jun 10, 2008
                        • 0 Attachment
                          Hi Ron.

                          Sure. Please remember that is an example of misuse or overuse of
                          applying metaphors. While working on a complex series of iterations,
                          one team member was having trouble understanding the systems and it's
                          components. This member asked to apply a metaphor to the project to
                          better understand the application. As a majority of this code was
                          already in place, the rest of the team was reluctant. We forged ahead
                          with renaming our components. We ran through a short series of various
                          metaphors before we decided that what fit the most was using
                          transportation terms as our metaphor. After customer buy-in, we spent
                          nearly a week renaming from the top down. Unfortunatly, the team only
                          had a small understanding of the transportation termonlolgy and the
                          metaphor quickly caused confusion for everyone on the team. Team
                          members that had a solid grasp on our domain language were now as
                          confused as the person that requested using a metaphor.
                        • Ken Boucher
                          I m extremely confused. I understand the confusion of the team member. I understand the asking for a metaphor. I m completely lost on why this would
                          Message 12 of 29 , Jun 10, 2008
                          • 0 Attachment
                            I'm extremely confused.

                            I understand the confusion of the team member. I understand the asking
                            for a metaphor. I'm completely lost on why this would necessitate the
                            renaming the components from the domain language to the metaphor. I'm
                            actually shocked that the customer bought in to the expense of
                            renaming all those components. (That's a lot of work for absolutely
                            zero functionality.)

                            I'm thinking the point of best return is where you have the domain
                            mapped out on a whiteboard and the metaphor applied to it and the guy
                            goes "Oh. I get it now. This does this."

                            It might be that the problem you encountered wasn't necessarily a
                            problem with metaphors or their use. It might have been what Kent Beck
                            calls a "Rules First Programming" problem, which can happen with
                            almost any programming practice. (See the JustShip pdf file in this
                            forums files section.)
                          • Kevin
                            I think a better solution would just be to accomplish Oh. I get it now. This does this. I don t think there is a hard rule on what makes people understand
                            Message 13 of 29 , Jun 10, 2008
                            • 0 Attachment
                              I think a better solution would just be to accomplish "Oh. I get it now. This does this."
                              I don't think there is a hard rule on what makes people understand each other. I was once told common sense depends on what is common to the person. I think this could be said for using metaphors. If you are doing something that is similar to another experience that both parties are familiar with, by all means use it as an metaphor. But I wouldn't suggest spending a lot of time forcing your thought process to solve a problem as a metaphor because once you have figured out the metaphor you have to get the thought conveyed to the other party.
                               
                              I would suggest just talking (and using metaphors if appropriate), doing Q&A and then once an idea is reached write it down so you have a tangible standing of the idea. This will lead to having to address hard questions in the future.

                              --- On Tue, 6/10/08, Ken Boucher <yahoo@...> wrote:

                              From: Ken Boucher <yahoo@...>
                              Subject: [XP] Re: Working with metaphors
                              To: extremeprogramming@yahoogroups.com
                              Date: Tuesday, June 10, 2008, 10:12 AM






                              I'm extremely confused.

                              I understand the confusion of the team member. I understand the asking
                              for a metaphor. I'm completely lost on why this would necessitate the
                              renaming the components from the domain language to the metaphor. I'm
                              actually shocked that the customer bought in to the expense of
                              renaming all those components. (That's a lot of work for absolutely
                              zero functionality. )

                              I'm thinking the point of best return is where you have the domain
                              mapped out on a whiteboard and the metaphor applied to it and the guy
                              goes "Oh. I get it now. This does this."

                              It might be that the problem you encountered wasn't necessarily a
                              problem with metaphors or their use. It might have been what Kent Beck
                              calls a "Rules First Programming" problem, which can happen with
                              almost any programming practice. (See the JustShip pdf file in this
                              forums files section.)


















                              [Non-text portions of this message have been removed]
                            • Ron Jeffries
                              Hello, itscion. On Tuesday, June 10, 2008, at 8:58:37 AM, you ... Yes, well. Thanks. I agree fully that what happened here was a misuse and overuse of
                              Message 14 of 29 , Jun 10, 2008
                              • 0 Attachment
                                Hello, itscion. On Tuesday, June 10, 2008, at 8:58:37 AM, you
                                wrote:

                                > Sure. Please remember that is an example of misuse or overuse of
                                > applying metaphors. While working on a complex series of iterations,
                                > one team member was having trouble understanding the systems and it's
                                > components. This member asked to apply a metaphor to the project to
                                > better understand the application. As a majority of this code was
                                > already in place, the rest of the team was reluctant. We forged ahead
                                > with renaming our components. We ran through a short series of various
                                > metaphors before we decided that what fit the most was using
                                > transportation terms as our metaphor. After customer buy-in, we spent
                                > nearly a week renaming from the top down. Unfortunatly, the team only
                                > had a small understanding of the transportation termonlolgy and the
                                > metaphor quickly caused confusion for everyone on the team. Team
                                > members that had a solid grasp on our domain language were now as
                                > confused as the person that requested using a metaphor.

                                Yes, well. Thanks. I agree fully that what happened here was a
                                misuse and overuse of metaphor, and apparently a poor choice of
                                metaphor to boot.

                                Why did the team go ahead, since all but one person was against the
                                idea?

                                Ron Jeffries
                                www.XProgramming.com
                                Do I contradict myself? Very well then I contradict myself.
                                (I am large, I contain multitudes.) --Walt Whitman
                              • itscion
                                ... asking ... the ... I m ... guy ... Beck ... The team was reluctant but willing to help this long time member come onboard with new systems as was the
                                Message 15 of 29 , Jun 10, 2008
                                • 0 Attachment
                                  --- In extremeprogramming@yahoogroups.com, "Ken Boucher" <yahoo@...>
                                  wrote:
                                  >
                                  > I'm extremely confused.
                                  >
                                  > I understand the confusion of the team member. I understand the
                                  asking
                                  > for a metaphor. I'm completely lost on why this would necessitate
                                  the
                                  > renaming the components from the domain language to the metaphor.
                                  I'm
                                  > actually shocked that the customer bought in to the expense of
                                  > renaming all those components. (That's a lot of work for absolutely
                                  > zero functionality.)
                                  >
                                  > I'm thinking the point of best return is where you have the domain
                                  > mapped out on a whiteboard and the metaphor applied to it and the
                                  guy
                                  > goes "Oh. I get it now. This does this."
                                  >
                                  > It might be that the problem you encountered wasn't necessarily a
                                  > problem with metaphors or their use. It might have been what Kent
                                  Beck
                                  > calls a "Rules First Programming" problem, which can happen with
                                  > almost any programming practice. (See the JustShip pdf file in this
                                  > forums files section.)
                                  >

                                  The team was reluctant but willing to help this long time member come
                                  onboard with new systems as was the customer. We had it on the
                                  whiteboard but it just wasn't enough for this senior member. As for
                                  this not being a problem with metaphors, I agree. I see this as
                                  metaphor abuse and good example of what not do.
                                • John Roth
                                  You re quite right, that was a misuse of the metaphor concept. If it was anything, it was a Ubiquitous Language, and since the customer didn t understand it,
                                  Message 16 of 29 , Jun 10, 2008
                                  • 0 Attachment
                                    You're quite right, that was a misuse of the metaphor
                                    concept. If it was anything, it was
                                    a Ubiquitous Language, and since the customer
                                    didn't understand it, it was poorly chosen.

                                    Metaphor is a technique. The goal is a shared understanding
                                    that lets people make on the fly decisions that fit with the
                                    structure of the domain and the program.

                                    To be useful, a metaphor (or a Ubiquitous Language)
                                    has to be shared by both the team and the customer.
                                    It's part of the vocabulary used to discuss the structure
                                    of the domain and the structure of the program. If
                                    it's not shared, then it's lost most of its usefulness.

                                    John Roth


                                    ----- Original Message -----
                                    From: "itscion" <it.scion@...>
                                    To: <extremeprogramming@yahoogroups.com>
                                    Sent: Tuesday, June 10, 2008 6:58 AM
                                    Subject: [XP] Re: Working with metaphors


                                    Hi Ron.

                                    Sure. Please remember that is an example of misuse or overuse of
                                    applying metaphors. While working on a complex series of iterations,
                                    one team member was having trouble understanding the systems and it's
                                    components. This member asked to apply a metaphor to the project to
                                    better understand the application. As a majority of this code was
                                    already in place, the rest of the team was reluctant. We forged ahead
                                    with renaming our components. We ran through a short series of various
                                    metaphors before we decided that what fit the most was using
                                    transportation terms as our metaphor. After customer buy-in, we spent
                                    nearly a week renaming from the top down. Unfortunatly, the team only
                                    had a small understanding of the transportation termonlolgy and the
                                    metaphor quickly caused confusion for everyone on the team. Team
                                    members that had a solid grasp on our domain language were now as
                                    confused as the person that requested using a metaphor.
                                  • Phlip
                                    ... The original C2 System Metaphor worked a little too well. Ubiquitous Language must start with the utterances of the Customer Team. Don t rerail that just
                                    Message 17 of 29 , Jun 10, 2008
                                    • 0 Attachment
                                      John Roth wrote:

                                      > Metaphor is a technique.

                                      The original C2 System Metaphor worked a little too well.

                                      Ubiquitous Language must start with the utterances of the Customer Team. Don't
                                      rerail that just because you thought of a clever metaphor.

                                      System Metaphor is priceless in more artistic situations, such as data resources
                                      for unit tests. When test cases share and reuse data records, they should tell a
                                      little story.

                                      --
                                      Phlip
                                    • Kevin
                                      System Metaphor is priceless in more artistic situations, such as data resources for unit tests.   Can you explain why? ... From: Phlip
                                      Message 18 of 29 , Jun 10, 2008
                                      • 0 Attachment
                                        System Metaphor is priceless in more artistic situations, such as data resources
                                        for unit tests.
                                         
                                        Can you explain why?

                                        --- On Tue, 6/10/08, Phlip <phlip2005@...> wrote:

                                        From: Phlip <phlip2005@...>
                                        Subject: [XP] Re: Working with metaphors
                                        To: extremeprogramming@yahoogroups.com
                                        Date: Tuesday, June 10, 2008, 12:43 PM






                                        John Roth wrote:

                                        > Metaphor is a technique.

                                        The original C2 System Metaphor worked a little too well.

                                        Ubiquitous Language must start with the utterances of the Customer Team. Don't
                                        rerail that just because you thought of a clever metaphor.

                                        System Metaphor is priceless in more artistic situations, such as data resources
                                        for unit tests. When test cases share and reuse data records, they should tell a
                                        little story.

                                        --
                                        Phlip


















                                        [Non-text portions of this message have been removed]
                                      • Phlip
                                        ... In RoR, for example, you write test sample data in fixture files. (They should have been called resources!) Here s two example records from Rails s own
                                        Message 19 of 29 , Jun 10, 2008
                                        • 0 Attachment
                                          Kevin wrote:

                                          > System Metaphor is priceless in more artistic situations, such as data resources
                                          > for unit tests.

                                          > Can you explain why?

                                          In RoR, for example, you write test sample data in "fixture" files. (They should
                                          have been called resources!) Here's two example records from Rails's own tests:

                                          george_blackbeard:
                                          parrot_id: <%= Fixtures.identify(:george) %>
                                          pirate_id: <%= Fixtures.identify(:blackbeard) %>

                                          louis_blackbeard:
                                          parrot_id: <%= Fixtures.identify(:louis) %>
                                          pirate_id: <%= Fixtures.identify(:blackbeard) %>

                                          That's just cute as a button (if you don't mind savage piracy...). This
                                          particular record links pirates to their parrots.

                                          Consider the alternative. Here's test resources for some other Rails project:

                                          jojo:
                                          id: 2
                                          username: jojo
                                          password: dontmesswithme

                                          jimbo_expired:
                                          id: 3
                                          username: jimbo
                                          password: dontmesswithme

                                          newuserguy:
                                          id: 4
                                          username: newuserguy

                                          And so on. We can't even finish reading; we are bored to tears. The programmer
                                          didn't stop to think of a good first record, so he just wrote a simple name.
                                          Worse, he did not go back and search-and-replace these names to put in good ones.
                                        • Matt
                                          Phlip, ... data resources ... (They should ... This ... programmer ... name. ... good ones. ... Maybe I missed the whole point of this, but in the example you
                                          Message 20 of 29 , Jun 10, 2008
                                          • 0 Attachment
                                            Phlip,


                                            --- In extremeprogramming@yahoogroups.com, Phlip <phlip2005@...> wrote:
                                            >
                                            > Kevin wrote:
                                            >
                                            > > System Metaphor is priceless in more artistic situations, such as
                                            data resources
                                            > > for unit tests.
                                            >
                                            > > Can you explain why?
                                            >
                                            > In RoR, for example, you write test sample data in "fixture" files.
                                            (They should
                                            > have been called resources!) Here's two example records from Rails's
                                            own tests:
                                            >
                                            > george_blackbeard:
                                            > parrot_id: <%= Fixtures.identify(:george) %>
                                            > pirate_id: <%= Fixtures.identify(:blackbeard) %>
                                            >
                                            > louis_blackbeard:
                                            > parrot_id: <%= Fixtures.identify(:louis) %>
                                            > pirate_id: <%= Fixtures.identify(:blackbeard) %>
                                            >
                                            > That's just cute as a button (if you don't mind savage piracy...).
                                            This
                                            > particular record links pirates to their parrots.
                                            >
                                            > Consider the alternative. Here's test resources for some other Rails
                                            project:
                                            >
                                            > jojo:
                                            > id: 2
                                            > username: jojo
                                            > password: dontmesswithme
                                            >
                                            > jimbo_expired:
                                            > id: 3
                                            > username: jimbo
                                            > password: dontmesswithme
                                            >
                                            > newuserguy:
                                            > id: 4
                                            > username: newuserguy
                                            >
                                            > And so on. We can't even finish reading; we are bored to tears. The
                                            programmer
                                            > didn't stop to think of a good first record, so he just wrote a simple
                                            name.
                                            > Worse, he did not go back and search-and-replace these names to put in
                                            good ones.
                                            >


                                            Maybe I missed the whole point of this, but in the example you don't
                                            like, I can easily see that "jimbo_expired" probably should not be
                                            authorized, newuserguy probably hasn't signed in yet and jojo is
                                            probably a happy path user.

                                            I have no clue what George or Louis represent in the test... I don't
                                            know what behavior to expect of them.

                                            So the pirates and parrots are cute... but not all that useful in my
                                            opinion.

                                            Maybe I would have chosen different names than "jojo, jimbo and
                                            newuserguy"... but I probably wouldn't name them after pirates unless
                                            the name lent something to the meaning of the test.

                                            Matt
                                          • Phlip
                                            ... Exactly: The resources indeed are self-documenting. However, they don t go the extra step, and apply a common metaphor. On a Rails blog called Beast, the
                                            Message 21 of 29 , Jun 10, 2008
                                            • 0 Attachment
                                              > Maybe I missed the whole point of this, but in the example you don't
                                              > like, I can easily see that "jimbo_expired" probably should not be
                                              > authorized, newuserguy probably hasn't signed in yet and jojo is
                                              > probably a happy path user.

                                              Exactly: The resources indeed are self-documenting. However, they don't go the
                                              extra step, and apply a common metaphor.

                                              On a Rails blog called Beast, the test fixtures use bloggers discussing mar

                                              >
                                              > I have no clue what George or Louis represent in the test... I don't
                                              > know what behavior to expect of them.
                                              >
                                              > So the pirates and parrots are cute... but not all that useful in my
                                              > opinion.
                                              >
                                              > Maybe I would have chosen different names than "jojo, jimbo and
                                              > newuserguy"... but I probably wouldn't name them after pirates unless
                                              > the name lent something to the meaning of the test.
                                              >
                                            • Phlip
                                              ... Exactly: The resources indeed are self-documenting. However, they don t go the extra step, and apply a common metaphor. ... The data names should - - look
                                              Message 22 of 29 , Jun 10, 2008
                                              • 0 Attachment
                                                > Maybe I missed the whole point of this, but in the example you don't
                                                > like, I can easily see that "jimbo_expired" probably should not be
                                                > authorized, newuserguy probably hasn't signed in yet and jojo is
                                                > probably a happy path user.

                                                Exactly: The resources indeed are self-documenting. However, they don't go the
                                                extra step, and apply a common metaphor.

                                                > I have no clue what George or Louis represent in the test... I don't
                                                > know what behavior to expect of them.

                                                The data names should -

                                                - look like real data. A login name could be "Bl4ckb34rd", but
                                                should _never_ be just "third_user"

                                                - self-document their role. if Bl4ckBe4rd has trouble logging
                                                in, his last name could be "Bungl3r".

                                                - try to tell a little story.

                                                That last one is the hardest, because obviously some illustrations of trivial
                                                business rules have no story to tell. Yet it's the goal we should strive for,
                                                and good fixture data are one of the details we should constantly review and
                                                upgrade.

                                                --
                                                Phlip
                                              • Matt
                                                Phlip, ... don t go the ... Why not? If I am not enforcing that a name must contain numbers and cannot have an underscore, what is the difference between the
                                                Message 23 of 29 , Jun 10, 2008
                                                • 0 Attachment
                                                  Phlip,


                                                  --- In extremeprogramming@yahoogroups.com, Phlip <phlip2005@...> wrote:
                                                  >
                                                  > > Maybe I missed the whole point of this, but in the example you don't
                                                  > > like, I can easily see that "jimbo_expired" probably should not be
                                                  > > authorized, newuserguy probably hasn't signed in yet and jojo is
                                                  > > probably a happy path user.
                                                  >
                                                  > Exactly: The resources indeed are self-documenting. However, they
                                                  don't go the
                                                  > extra step, and apply a common metaphor.
                                                  >
                                                  > > I have no clue what George or Louis represent in the test... I don't
                                                  > > know what behavior to expect of them.
                                                  >
                                                  > The data names should -
                                                  >
                                                  > - look like real data. A login name could be "Bl4ckb34rd", but
                                                  > should _never_ be just "third_user"


                                                  Why not? If I am not enforcing that a name must contain numbers and
                                                  cannot have an underscore, what is the difference between the two from a
                                                  test standpoint?

                                                  If I saw Bl4ckb34rd I would think there was a special constraint I was
                                                  trying to test with the number/letter combo.

                                                  On the flip side, if I see "third_user" I am likely to suspect there is
                                                  something special about the third_user to sign up. If I see
                                                  "GunsNRoses" I will figure GnR was playing when the test was written.
                                                  Probably not very helpful.

                                                  >
                                                  > - self-document their role. if Bl4ckBe4rd has trouble logging
                                                  > in, his last name could be "Bungl3r".
                                                  >
                                                  > - try to tell a little story.
                                                  >
                                                  > That last one is the hardest, because obviously some illustrations of
                                                  trivial
                                                  > business rules have no story to tell. Yet it's the goal we should
                                                  strive for,
                                                  > and good fixture data are one of the details we should constantly
                                                  review and
                                                  > upgrade.


                                                  Agreed. Tests need refactoring too. :)

                                                  Matt
                                                • Phlip
                                                  ... The contents of the test data are not just for the computer to read. Humans must read it too. Communication is a fundamental Agile concept - that means
                                                  Message 24 of 29 , Jun 11, 2008
                                                  • 0 Attachment
                                                    >> - look like real data. A login name could be "Bl4ckb34rd", but
                                                    >> should _never_ be just "third_user"
                                                    >
                                                    > Why not? If I am not enforcing that a name must contain numbers and
                                                    > cannot have an underscore, what is the difference between the two from a
                                                    > test standpoint?

                                                    The contents of the test data are not just for the computer to read. Humans must
                                                    read it too. "Communication" is a fundamental Agile concept - that means you
                                                    always find ways to improve it. Test sample data should look like its role, so a
                                                    user name should look like a real name.

                                                    > If I saw Bl4ckb34rd I would think there was a special constraint I was
                                                    > trying to test with the number/letter combo.

                                                    I was being L33T. And if we were pairing, we might change it back to Blackbeard.

                                                    > On the flip side, if I see "third_user" I am likely to suspect there is
                                                    > something special about the third_user to sign up.

                                                    If so, "Trinity" is a better name. Yet when I wrote that I just meant "the third
                                                    user we happened to write into the test resource". That's a failed opportunity
                                                    to self document.

                                                    > If I see
                                                    > "GunsNRoses" I will figure GnR was playing when the test was written.
                                                    > Probably not very helpful.

                                                    GnR is bad for pairing. Hence, "King Tubby" is a better user name :-)
                                                  • Chris Wheeler
                                                    ... I thought the whole idea of metaphor was to communicate the intent of a system design clearly and quickly. It doesn t mean you change system level
                                                    Message 25 of 29 , Jun 11, 2008
                                                    • 0 Attachment
                                                      On Wed, Jun 11, 2008 at 8:19 AM, Phlip <phlip2005@...> wrote:

                                                      >
                                                      > If so, "Trinity" is a better name. Yet when I wrote that I just meant "the
                                                      > third
                                                      > user we happened to write into the test resource". That's a failed
                                                      > opportunity
                                                      > to self document.
                                                      >


                                                      I thought the whole idea of 'metaphor' was to communicate the intent of a
                                                      system design clearly and quickly. It doesn't mean you change system level
                                                      objects to suit the metaphor nor do you use a language that is confusing
                                                      inside the system. Metaphor let's you paint a quick picture of the system
                                                      without going into the nitty-gritty.

                                                      At any rate, renaming 'third_user' to 'Trinity' is poetic license, not
                                                      metaphor.

                                                      Chris.


                                                      [Non-text portions of this message have been removed]
                                                    • itscion
                                                      ... The confused member was the team lead and decided that the metaphor was needed while the customer was away for a week. Our lead did not understand how to
                                                      Message 26 of 29 , Jun 11, 2008
                                                      • 0 Attachment
                                                        >
                                                        > Why did the team go ahead, since all but one person was against the
                                                        > idea?
                                                        >
                                                        > Ron Jeffries
                                                        > www.XProgramming.com
                                                        > Do I contradict myself? Very well then I contradict myself.
                                                        > (I am large, I contain multitudes.) --Walt Whitman
                                                        >

                                                        The confused member was the team lead and decided that the metaphor was
                                                        needed while the customer was away for a week. Our lead did not
                                                        understand how to correct the majority of the issues we faced with the
                                                        project and could not contribute to its progression. He "sold" this as
                                                        a cure for his inability to understand the code and we were committed
                                                        to keeping this member. We felt that the team was more important than
                                                        this issue and wanted to see our team lead resolve the issues he was
                                                        having. Upon returning, the customer felt if the renaming had worked,
                                                        it would have been a week well spent.
                                                      • Ron Jeffries
                                                        Hello, itscion. On Wednesday, June 11, 2008, at 10:00:16 AM, you ... Very interesting. Thanks. As you say, it s not exactly a problem with metaphor. It
                                                        Message 27 of 29 , Jun 11, 2008
                                                        • 0 Attachment
                                                          Hello, itscion. On Wednesday, June 11, 2008, at 10:00:16 AM, you
                                                          wrote:

                                                          > The confused member was the team lead and decided that the metaphor was
                                                          > needed while the customer was away for a week. Our lead did not
                                                          > understand how to correct the majority of the issues we faced with the
                                                          > project and could not contribute to its progression. He "sold" this as
                                                          > a cure for his inability to understand the code and we were committed
                                                          > to keeping this member. We felt that the team was more important than
                                                          > this issue and wanted to see our team lead resolve the issues he was
                                                          > having. Upon returning, the customer felt if the renaming had worked,
                                                          > it would have been a week well spent.

                                                          Very interesting. Thanks. As you say, it's not exactly a problem
                                                          with metaphor. It certainly is a problem /involving/ metaphor.

                                                          Ron Jeffries
                                                          www.XProgramming.com
                                                          In programming, do, or undo. There is always try. --Yoda
                                                        • Ken Boucher
                                                          ... I disagree. There are times I need my data names to be more self-descriptive. For example I could have an account named Bl4ckb34rd but I d rather have
                                                          Message 28 of 29 , Jun 11, 2008
                                                          • 0 Attachment
                                                            > The data names should look like real data.

                                                            I disagree. There are times I need my data names to be more
                                                            self-descriptive. For example I could have an account named
                                                            "Bl4ckb34rd" but I'd rather have it called "SQL Injection" if that's
                                                            what the account is there to test.

                                                            Historically, I need all the help I can get when I return to a unit
                                                            test 6 months later. Real data doesn't help me as much as
                                                            descriptive data.

                                                            Your mileage may vary.
                                                          • Phlip
                                                            ... You snipped the part where I agreed with your disagreement. ... If it s a user name, it should simultaneously look like a real user name and its role. So
                                                            Message 29 of 29 , Jun 11, 2008
                                                            • 0 Attachment
                                                              Ken Boucher wrote:

                                                              >> The data names should look like real data.
                                                              >
                                                              > I disagree.

                                                              You snipped the part where I agreed with your disagreement.

                                                              > There are times I need my data names to be more
                                                              > self-descriptive. For example I could have an account named
                                                              > "Bl4ckb34rd" but I'd rather have it called "SQL Injection" if that's
                                                              > what the account is there to test.

                                                              If it's a user name, it should simultaneously look like a real user name and its
                                                              role. So if the theme is pirates, and the role is SQL Injection attack, then the
                                                              name 'Forsythe_Floggin_ye_Cargo' would work now. Not sure about 6 months out...
                                                            Your message has been successfully submitted and would be delivered to recipients shortly.