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

RE: Miss XP Universe

Expand Messages
  • Henry Stapp
    - In [XP] Digest Number 1059 someone wrote: - Don t miss XP UNIVERSE.. Is there going to be a Miss XP Universe? On what attributes will she be chosen? ...
    Message 1 of 1 , Apr 28 8:38 AM
    • 0 Attachment
      - In [XP] Digest Number 1059 someone wrote:
      - "Don't miss XP UNIVERSE.."

      Is there going to be a Miss XP Universe? On what attributes will she be
      chosen?


      -----Original Message-----
      From: extremeprogramming@yahoogroups.com
      [mailto:extremeprogramming@yahoogroups.com]
      Sent: Friday, April 27, 2001 2:33 PM
      To: extremeprogramming@yahoogroups.com
      Subject: [XP] Digest Number 1059

      To Post a message, send it to: extremeprogramming@...

      To Unsubscribe, send a blank message to:
      extremeprogramming-unsubscribe@...

      Don't miss XP UNIVERSE, the first US conference on XP and Agile Methods.
      Early registration discounts EXTENDED until May 1, 2001. www.xpuniverse.com
      for details and registration.
      ------------------------------------------------------------------------

      There are 25 messages in this issue.

      Topics in this digest:

      1. Re: all OO programmers should learn design patterns
      From: jr@...
      2. Re: all OO programmers should learn design patterns
      From: "Michael C. Feathers" <mfeathers@...>
      3. Re: all OO programmers should learn design patterns
      From: Roger Whitney <whitney@...>
      4. Re: all OO programmers should learn design patterns
      From: Ron Jeffries <ronjeffries@...>
      5. Re: all OO programmers should learn design patterns
      From: Glenn Vanderburg <glv@...>
      6. It doesn't have to be that way! (Re: all OO programmers..)
      From: "J. B. Rainsberger" <jbrains762@...>
      7. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      8. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      9. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      10. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      11. Re: Patterns are harmful (was: Model/View/Control and XP)
      From: "Michael C. Feathers" <mfeathers@...>
      12. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      13. Re: Patterns are harmful (was: Model/View/Control and XP)
      From: "Michael C. Feathers" <mfeathers@...>
      14. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      15. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      16. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: "Robert C. Martin" <rmartin@...>
      17. Re: Patterns are harmful (was: Model/View/Control and XP)
      From: Dave Thomas <Dave@...>
      18. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: Phil Goodwin <phil.goodwin@...>
      19. Re: Patterns are harmful (was: Model/View/Control and XP)
      From: Phil Goodwin <phil.goodwin@...>
      20. RE: all OO programmers should learn design patterns
      From: "Robert C. Martin" <rmartin@...>
      21. RE: Patterns are useful (was RE: Patterns are harmful)
      From: "Dinwiddie, George" <George.Dinwiddie@...>
      22. RE: all OO programmers should learn design patterns
      From: "Robert C. Martin" <rmartin@...>
      23. RE: Patterns are harmful (was: Model/View/Control and XP)
      From: Phil Goodwin <phil.goodwin@...>
      24. RE: all OO programmers should learn design patterns
      From: "Robert C. Martin" <rmartin@...>
      25. Re: Patterns are harmful (was: Model/View/Control and XP)
      From: Glenn Vanderburg <glv@...>


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 1
      Date: Fri, 27 Apr 2001 18:48:01 -0000
      From: jr@...
      Subject: Re: all OO programmers should learn design patterns

      --- In extremeprogramming@y..., "Eric Hodges" <eric.hodges@m...>
      wrote:
      >
      > "Gas, grass or ass, nobody rides for free" - bumper sticker circa
      1975
      >
      > The hope for design patterns has always been that years of wisdom
      could be
      > condensed into easily understood patterns, saving new programmers a
      lot of
      > time. This is one of the hopes for "Refactoring", I think, as well.
      > Perhaps there is no free lunch. Perhaps you really have to spend
      years
      > discovering patterns and refactoring on your own to build the
      underlying
      > "common sense" needed to apply them. Or maybe they just aren't
      being
      > communicated properly.

      This has certainly been my experience. Upon graduation I was promptly
      told to read this book called "Design Patterns". It was the hot book,
      I was told it would help me in interviews, and really show me how OO
      programs should be written.

      After 3 years of OO experience, and 3 cover to cover readings,
      I believe I am finally in a position to appreciate what the authors
      are hinting at.

      I found it very hard to go through this book with out a strong OO
      background forged from hard experience. Its much like you are been
      shown how to solve problems you are not even aware of yet. Yet you
      sometime feel pressured (peers, other coders) to apply them.

      You can not go through this book and understand what is going on if
      you do not have a firm grasp of certain key principles. Not just
      refactoring, and delegation, but even more basic OO concepts.

      I feel this book is often introduced to early in some ciriculums.

      My experience echos Eric's point - there is not free lunch. Only
      once the basics can be appreciated and well understood (often through
      the school of hard knocks) can the more elegant architectures be
      appreciated and applied appropriately.




      ________________________________________________________________________
      ________________________________________________________________________

      Message: 2
      Date: Fri, 27 Apr 2001 14:15:24 -0500
      From: "Michael C. Feathers" <mfeathers@...>
      Subject: Re: all OO programmers should learn design patterns


      ----- Original Message -----
      From: Eric Hodges <eric.hodges@...>
      > > From: Michael C. Feathers [mailto:mfeathers@...]
      > > I do read the patterns literature and I think it is
      > > valuable for communicating design experiences. My
      > > issue is really that I often run into people who know
      > > design patterns to some degree but who are missing
      > > other things. My sense is that there is a collection of more
      > > fundamental things that aren't articulated much.
      >
      > "Gas, grass or ass, nobody rides for free" - bumper sticker circa 1975
      >
      > The hope for design patterns has always been that years of wisdom could be
      > condensed into easily understood patterns, saving new programmers a lot of
      > time. This is one of the hopes for "Refactoring", I think, as well.
      > Perhaps there is no free lunch. Perhaps you really have to spend years
      > discovering patterns and refactoring on your own to build the underlying
      > "common sense" needed to apply them.

      I have that fear too. Maybe it works for some programmers
      and not others.

      About a year ago, I was saying some of the things that I've
      said up here to a friend of mine (yes, I have been thinking
      about this that long) and he said:

      "That's experience, you can't teach that."

      But, you know, I have to try.

      Michael

      ---------------------------------------------------
      Michael Feathers mfeathers@...
      Object Mentor Inc. www.objectmentor.com
      XP & OO Training/Mentoring/Development
      www.xprogramming.com / www.junit.org
      ---------------------------------------------------




      ________________________________________________________________________
      ________________________________________________________________________

      Message: 3
      Date: Fri, 27 Apr 2001 12:30:29 -0700
      From: Roger Whitney <whitney@...>
      Subject: Re: all OO programmers should learn design patterns

      >Here, I'm not so sure. Out here on real projects I find many programmers
      >who don't know the basics and don't know how to use the elementary notions
      >of inheritance, delegation, and so on. Is it because they just picked it up
      >on their own rather than ever being students? Could be ... that's where
      >many of my mistakes probably come from. Certainly Ralph never taught me
      >anything that has turned out to be wrong. (I'm not entirely sure that goes
      >for all of my professors, however.)

      >>So, I agree that refactoring and delegation are more fundamental
      >>than learning Observer or Facade. But that doesn't mean that
      >>you shouldn't learn Observer or Facade. It just means that you
      >>should learn refactoring and delegation first.
      >

      Having a big bag of tricks is good. When I cover design patterns many of my
      students learn new ways of handling code. Learning design patterns teaches
      them a lot. Even "program to an interface" and "favor object composition
      over class inheritance" are new ideas to them.

      Yes knowing design patterns does cause problems in their code. Part of this
      is just the lack to practice using design patterns. But part of it is what
      they don't know - how to tell good code from bad code or how to detect code
      smells. This is why refactoring is more fundamental. One has to know when
      to refactor. Many of my students find this hard. The first time I ask them
      to improve an existing program by refactoring, they are a bit stunned. This
      is a new experience for them. The program works so why would anyone want to
      change it? When I show them the example

      x := x + 1 // add one to x

      they all laugh until they realize that most of the comments in their code
      are similar. They are not used to someone reading their code. At most
      universities I have been at (UIUC is an exception) there is not a culture
      of studying, commenting on and improving code. There are a number of
      excuses for not doing this, but it is a fundamental lack in computer
      science education.

      When I take Tai Chi lessons I repeat the same moves many times and have a
      teacher that corrects me individually. The English department at SDSU
      admits ~10 graduate students a year in their writing program. Those
      students know they are going to write and rewrite many times their work. In
      computer science I have ~80 graduate students in my classes this semester.
      They are not used to dealing with the skill of programming.

      At least in the university knowing design patterns is not the problem. The
      problem is what we do not cover in classes. As far as I can tell the best
      (only?) place for my students to work on their programming skills is in a
      good XP team.


      Roger Whitney Mathematical & Computer Sciences Department
      whitney@... San Diego State University
      http://www.eli.sdsu.edu/ San Diego, CA 92182-7720
      (619) 583-1978
      (619) 594-3535 (office)
      (619) 594-6746 (fax)




      ________________________________________________________________________
      ________________________________________________________________________

      Message: 4
      Date: Fri, 27 Apr 2001 15:42:39 -0400
      From: Ron Jeffries <ronjeffries@...>
      Subject: Re: all OO programmers should learn design patterns

      Responding to Michael C. Feathers (02:15 PM 4/27/2001 -0500):
      >About a year ago, I was saying some of the things that I've
      >said up here to a friend of mine (yes, I have been thinking
      >about this that long) and he said:
      >
      > "That's experience, you can't teach that."
      >
      >But, you know, I have to try.

      Truth is beauty, beauty truth.
      That is all ye know on earth and all ye need to know.

      -- John Keats



      Ron Jeffries
      www.XProgramming.com
      Accroches-toi a ton reve. -- ELO



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 5
      Date: 27 Apr 2001 14:45:07 -0500
      From: Glenn Vanderburg <glv@...>
      Subject: Re: all OO programmers should learn design patterns

      "Michael C. Feathers" <mfeathers@...> writes:
      >
      > I think that patterns broaden people's base of experience
      > and sense of what is possible, but I think that people
      > learn equally valuable lessons by being incredibly
      > attentive to what is in front of them and what the
      > next step could be. I'd argue that the latter should
      > come before the former.

      Case in point: my first read of "Analysis Patterns." It *really*
      broadened my sense of what's possible. But what I've retained from
      it, even after the second reading, is not any particular patterns, but
      the principles that Martin used to arrive at those patterns:
      identifying what he calls the "knowledge" and "operational" domains,
      and finding ways to encode things as object structure rather than code
      structure.

      One or more of those patterns (or a variation thereof) may or may not
      be useful on my next project, or the next. But those principles
      *will* be. No doubt.

      --
      Glenn Vanderburg
      Delphi Consultants, LLC
      glv@...



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 6
      Date: Fri, 27 Apr 2001 20:09:34 -0000
      From: "J. B. Rainsberger" <jbrains762@...>
      Subject: It doesn't have to be that way! (Re: all OO programmers..)

      Responding to Ron Jeffries...
      >Responding to Glenn Vanderburg (11:29 AM 4/27/2001 -0500):
      > >Ron Jeffries <ronjeffries@...> writes:
      > > >
      > > > Here, I'm not so sure. Out here on real projects I find many
      >programmers
      > > > who don't know the basics and don't know how to use the elementary
      >notions
      > > > of inheritance, delegation, and so on. Is it because they just picked
      > > it up
      > > > on their own rather than ever being students?
      > >
      > >In my experience, it's largely because they accept complex code as a
      > >given, as part of the landscape, and they don't know or believe that
      > >it really isn't necessary.
      >
      >Yes, I'd agree. Frankly the single most frustrating thing I run into is
      >folks who won't consider change because they think the world has to be that
      >way. It really gets to me, but I guess that's just the way things are ...

      It's funny. Here at IBM, one of the criteria for performance evaluation is
      "Finds a better way to do things". It stupefies me that people accept crap
      because they think it's impossible to change. Much as I hate maxims like
      "Think globally, act locally," it's true: change what you can, and when you
      succeed, perhaps someone will ask you, "How did you do it?"

      "Well, you know, I read an article six months ago about this thing called
      'eXtreme Programming'..."

      JBR.
      _________________________________________________________________________
      Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 7
      Date: Fri, 27 Apr 2001 15:06:24 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Michael C. Feathers [mailto:mfeathers@...]
      >
      > Refactoring opened my eyes too. And it made
      > me wonder whether the eye-opening has to
      > happen after patterns are learned. I don't
      > think so.

      Refactoring is aided by a good knowledge of patterns. I don't think
      patterns should be treated as refactoring targets. Rather I think that a
      knowledge of many patterns can give you options while refactoring.

      How do you know what good code structure is, unless you've seen the
      difference between good code structure and bad code structure? Patterns are
      one way of demonstrating that difference to people. A pattern is a
      demonstration of how a problem was successfully solved by others. That
      solution represents a value system. The study of patterns is not so much
      the study of the particular solutions. The solutions are relatively
      mundane. The study of patterns is, in reality, the study of the value
      system implied by the solutions.

      If we treat the patterns as discrete solutions that should always be
      applied, we have missed the lesson. We want to treat patterns as
      representative of a set of values that we want our designs to reflect.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 8
      Date: Fri, 27 Apr 2001 15:09:43 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Michael C. Feathers [mailto:mfeathers@...]

      > Right now, the things I am most interested in
      > are factoring decisions.

      The study of design patterns is a good way to learn how to make factoring
      decisions. Design patterns are the end product of a particular set of
      factorings that were made in order to solve a problem.

      The fact that we are realizing that the patterns themselves are not the
      goal, is a good thing. But the fact that they aren't the goal, doesn't mean
      we can't learn from them.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan




      ________________________________________________________________________
      ________________________________________________________________________

      Message: 9
      Date: Fri, 27 Apr 2001 15:19:42 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Joshua Kerievsky [mailto:joshua@...]
      >
      > Patterns aren't harmful, ignorance is. --jk
      >

      I don't think this topic can be brushed aside that easily. It is not
      sufficient to say that ignorance of patterns is dangerous, and therefore
      everyone should know patterns. Knowledge of patterns can be just as
      dangerous, if not more dangerous, than ignorance.

      Far too many patterns enthusiasts treat patterns as an end in themselves
      rather than as lessons to be learned. I frequently see designs littered
      with patterns as though they were the component parts of applications. They
      are not. Rather, each design pattern represents a lesson about how certain
      kinds of problems can be solved. Each pattern reflects a set of values that
      all software engineers would do well to acquire.

      What Michael has brought to the fore is a valuable insight; stated, perhaps,
      a bit too stridently. The treatment of patterns as an end in themselves is
      harmful.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 10
      Date: Fri, 27 Apr 2001 15:21:06 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Phil Goodwin [mailto:PGoodwin@...]
      > I think that
      > studying design patterns is like studying chess games. You
      > study a chess
      > game, not so that you can repeat it literally, but so that
      > you can benefit
      > from the thinking that went into it.


      This is a mantra that all software engineers should repeat to themselves
      daily.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 11
      Date: Fri, 27 Apr 2001 15:20:11 -0500
      From: "Michael C. Feathers" <mfeathers@...>
      Subject: Re: Patterns are harmful (was: Model/View/Control and XP)



      ----- Original Message -----
      From: Robert C. Martin <rmartin@...>
      > How do you know what good code structure is, unless you've seen the
      > difference between good code structure and bad code structure? Patterns
      are
      > one way of demonstrating that difference to people. A pattern is a
      > demonstration of how a problem was successfully solved by others. That
      > solution represents a value system. The study of patterns is not so much
      > the study of the particular solutions. The solutions are relatively
      > mundane. The study of patterns is, in reality, the study of the value
      > system implied by the solutions.
      >
      > If we treat the patterns as discrete solutions that should always be
      > applied, we have missed the lesson. We want to treat patterns as
      > representative of a set of values that we want our designs to reflect.

      I agree, but the thing that I notice is that the 'code smells' in
      Martin Fowler's refactoring book serve as a more direct spotlight
      on a value system than many patterns literature that I've
      seen.

      The implication seems very direct. Here is a set to make
      things better, by implication, the place we were before
      wasn't very good.

      Michael

      ---------------------------------------------------
      Michael Feathers mfeathers@...
      Object Mentor Inc. www.objectmentor.com
      XP & OO Training/Mentoring/Development
      www.xprogramming.com / www.junit.org
      ---------------------------------------------------
      "Postmodernism means working without rules
      in order to find out the rules of what you've done."






      ________________________________________________________________________
      ________________________________________________________________________

      Message: 12
      Date: Fri, 27 Apr 2001 15:31:03 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Dan Palanza [mailto:dan@...]

      > Joshua's past advice to refactor into a pattern is precisely what the
      > master builder does whenever a new material, technique, or methodology
      > comes on the scene.

      I disagree. While there is nothing wrong with refactoring into a pattern if
      the design calls for that pattern, I wouldn't use it as a general rule of
      refactoring. Rather I'd refactor towards simplicity and expressiveness,
      using the values gained by studying patterns.

      The Apprentice is in the process of learning the patterns.
      The Journeyman is in the process of learning to apply the patterns.
      The Master is in the process of learning to ignore the patterns.

      That last could be said to be a glorification of ignorance. That is not my
      intent. I don't think a serious software designer can become a master until
      he/she has internalized the values of so many different patterns and designs
      that the values eventually outweigh any of the actual patterns.



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 13
      Date: Fri, 27 Apr 2001 15:23:49 -0500
      From: "Michael C. Feathers" <mfeathers@...>
      Subject: Re: Patterns are harmful (was: Model/View/Control and XP)


      > From: Robert C. Martin <rmartin@...>
      > > How do you know what good code structure is, unless you've seen the
      > > difference between good code structure and bad code structure? Patterns
      > are
      > > one way of demonstrating that difference to people. A pattern is a
      > > demonstration of how a problem was successfully solved by others. That
      > > solution represents a value system. The study of patterns is not so
      much
      > > the study of the particular solutions. The solutions are relatively
      > > mundane. The study of patterns is, in reality, the study of the value
      > > system implied by the solutions.
      > >
      > > If we treat the patterns as discrete solutions that should always be
      > > applied, we have missed the lesson. We want to treat patterns as
      > > representative of a set of values that we want our designs to reflect.

      (sorry, words got jumbled... again..)

      I agree, but the thing that I notice is that the 'code smells' in
      Martin Fowler's refactoring book serve as a more direct spotlight
      on a value system than many patterns literature that I've
      seen.

      The implication seems very direct. Here is a set to of moves
      which make things better. By implication, the place we were
      before wasn't very good.

      Michael

      ---------------------------------------------------
      Michael Feathers mfeathers@...
      Object Mentor Inc. www.objectmentor.com
      XP & OO Training/Mentoring/Development
      www.xprogramming.com / www.junit.org
      ---------------------------------------------------
      "Postmodernism means working without rules
      in order to find out the rules of what you've done."






      ________________________________________________________________________
      ________________________________________________________________________

      Message: 14
      Date: Fri, 27 Apr 2001 15:33:51 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Michael C. Feathers [mailto:mfeathers@...]
      > Sent: Friday, April 27, 2001 7:05 AM
      > To: extremeprogramming@yahoogroups.com
      > Subject: Re: [XP] Patterns are harmful (was:
      > Model/View/Control and XP)
      >
      >
      >
      > Phil, I think we are very close on these points.
      >
      > I do still read the patterns literature. I
      > think that it is very informative, but I just do
      > not go around applying patterns any more.
      > I don't refactor to them either.

      I certainly agree with this.

      > I think that patterns are a useful
      > way of conveying design experience
      > and they are a great descriptive device,
      > but I don't see them as targets any
      > longer.

      I agree with this.

      > And, I'm pretty concerned
      > about teaching them to programmers too
      > early.

      I disagree with this. The best way to learn how to be a master designer is
      to study the designs of past masters. The patterns are a summarization of
      some of the best designs of some of the best past masters. I have no fear
      of teaching them early. Indeed, I think it's the only way to progress.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 15
      Date: Fri, 27 Apr 2001 15:41:48 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Phil Goodwin [mailto:phil.goodwin@...]

      > I think that refactoring into a pattern is an apprentice
      > level skill. It's the sort of thing that a master or a
      > journeyman will teach an apprentice so that the apprentice
      > can operate at a level that would otherwise be beyond the
      > reach of their skill.

      Agreed.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 16
      Date: Fri, 27 Apr 2001 15:45:59 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)



      > -----Original Message-----
      > From: Michael C. Feathers [mailto:mfeathers@...]

      > >From: Robert C. Martin <rmartin@...>
      > > If we treat the patterns as discrete solutions that should always be
      > > applied, we have missed the lesson. We want to treat patterns as
      > > representative of a set of values that we want our designs
      > > to reflect.
      >
      > I agree, but the thing that I notice is that the 'code smells' in
      > Martin Fowler's refactoring book serve as a more direct spotlight
      > on a value system than many patterns literature that I've
      > seen.

      The code smells are interesting, but negative. Patterns are positive. Code
      smells tell you what's wrong. Patterns tell you how some people fix the
      smells. You can't have one without the other. You can't simply point at a
      pile and say "ew, that stinks!" you also have to get the shovel out and fix
      the pile.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 17
      Date: 27 Apr 2001 15:51:49 -0500
      From: Dave Thomas <Dave@...>
      Subject: Re: Patterns are harmful (was: Model/View/Control and XP)

      "Robert C. Martin" <rmartin@...> writes:

      > The Apprentice is in the process of learning the patterns.
      > The Journeyman is in the process of learning to apply the patterns.
      > The Master is in the process of learning to ignore the patterns.

      But you can find other, equally compelling analogies that support
      deferring learning patterns. For example, language master comes through
      a sequence like:

      - learn how to talk (applying the grammar)
      - learn the formal rules of grammar
      - become a great writer and feel comfortable breaking those rules

      In terms of patterns, this group is in danger of falling back into the
      one-size-fits-all Taylorism for which it is so famous :) Different
      people learn their craft in different ways, so let them. Some will
      learn best from a theoretical base, learning patterns early and then
      hunting them out in the code that they see. Others won't make sense of
      patterns until they've encountered the problems for themselves.

      Either way, patterns aren't code, they're a metaphor for code. As with
      any metaphor, taking them too literally can be counterproductive.


      Regards


      Dave


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 18
      Date: Fri, 27 Apr 2001 13:53:55 -0700
      From: Phil Goodwin <phil.goodwin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)

      At 03:33 PM 4/27/01 -0500, Robert C. Martin wrote:
      >> From: Michael C. Feathers [mailto:mfeathers@...]
      >> I'm pretty concerned
      >> about teaching them to programmers too
      >> early.
      >
      >I disagree with this. The best way to learn how to be a master designer is
      >to study the designs of past masters. The patterns are a summarization of
      >some of the best designs of some of the best past masters. I have no fear
      >of teaching them early. Indeed, I think it's the only way to progress.

      Maybe we should ask how early is too early. I don't think that patterns
      ought to be taught first, early maybe, but not first. So I think that it's
      possible to teach them too early. Students ought to know their programming
      language, of course, and the principals upon which that language is based
      (usually but not always OO). But I think that basic software design
      principals should be taught and practiced before patterns and I've become
      convinced that factoring and refactoring code should be taught either before
      patterns or along side them. I think that there is a synergy between
      factoring and patterns that should be fostered. Partly because of the value
      of the synergy but partly to head off the rut of always factoring to known
      patterns. If students experience factoring toward and away from patterns
      early on then maybe they will never get into the habit of seeing patterns as
      the fundamental building blocks of design.

      ----------------------------------------------------------------------------
      --------------------------------
      Phil Goodwin, Java Software, Sun Microsystems, 408-517-6951, or x66951

      "If everything you try works, you aren't trying hard enough." -- Gordon
      Moore



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 19
      Date: Fri, 27 Apr 2001 14:03:46 -0700
      From: Phil Goodwin <phil.goodwin@...>
      Subject: Re: Patterns are harmful (was: Model/View/Control and XP)

      At 03:51 PM 4/27/01 -0500, Dave Thomas wrote:
      >Different
      >people learn their craft in different ways, so let them. Some will
      >learn best from a theoretical base, learning patterns early and then
      >hunting them out in the code that they see. Others won't make sense of
      >patterns until they've encountered the problems for themselves.

      That's a great point. Maybe it's not so much when to teach pattern as how.
      Or more specifically in what context. In reading Michaels contributions to
      this thread I am starting to see a parallel between patterns and code
      smells: an implementation that uses a pattern isn't necessarily good, by the
      same token an implementation that has a code smell isn't necessarily bad.
      Both of these things go from being rules, to guides, to explanations. They
      are also both applied at the same time: during the factoring of code.
      Perhaps they should both be taught in the context of code factoring, as
      means to the end of evolving good code.


      ----------------------------------------------------------------------------
      --------------------------------
      Phil Goodwin, Java Software, Sun Microsystems, 408-517-6951, or x66951

      "If everything you try works, you aren't trying hard enough." -- Gordon
      Moore



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 20
      Date: Fri, 27 Apr 2001 16:08:07 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: all OO programmers should learn design patterns



      > -----Original Message-----
      > From: Ralph Johnson [mailto:johnson@...]

      > Michael Feathers is saying that patterns are not worth learning.
      > He says, learn refactoring instead. Learn delegation and double
      > dispatch, not strategy or visitor.

      I didn't interpret his message that way. He was concerned about teaching
      patterns too early, because he's seen the damage that can be done by
      enthusiasts who apply the patterns themselves instead of the values behind
      the patterns.

      I think his concerns about when to teach patterns are unrelated to the
      problem. I think patterns should be taught early and often. Withholding
      the information would be deadly (and impossible) IMHO. I also think that
      young programmers should not work without senior guidance; lest they fall
      into the trap that Michael describes.

      > I am baffled by Michael Feather's comments. I see this sort
      > of thing in lots of comments by XP-ers. It is a sort of glofication
      > of ignorance; don't learn these things.

      No serious user of XP would claim ignorance as a value. Ignorance may be
      bliss, but it's never worth the pleasure.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 21
      Date: Fri, 27 Apr 2001 17:08:56 -0400
      From: "Dinwiddie, George" <George.Dinwiddie@...>
      Subject: RE: Patterns are useful (was RE: Patterns are harmful)

      As a sailor, this statement doesn't make much sense
      to me. The analogue to GPS is not basic understanding;
      it's a code generator. GPS is a large, complex, mostly
      hidden system that, when it fails and gives the wrong
      answer, that fact may not be apparent to the user. And,
      when it fails, the user who has become reliant on it
      will have no backup. This has become all too common
      in recent years.

      "The prudent navigator does not rely on a single
      aid to navigation."

      GPS is wonderful magic, but it is still magic. It's
      an easy tool for the novice and quite useful for the
      master navigator. But the master navigator will also
      maintain a dead reckoning, knowing about where you
      are by where you've been, which way you've been headed,
      and how long you've been going. The master navigator
      will also take bearings, with a compass for precision
      or by eye for confirmation of other means of navigation.
      There are myriad other hints: the sun, the moon, the
      stars, the direction and shape of waves, lights or
      objects on shore, birds, airplanes, and, of course,
      lighthouses and other man-made aids to navigation.
      There are many ways of using these items, too, and
      what is appropriate differs depending on circumstances.

      I know that I became much better at navigating the
      shallow waters of the Chesapeake Bay when my depth
      sounder broke and I started watching the shape of
      the shoreline and the color of the water instead of
      that dumb dial. I not only go aground much less, I
      don't feel the tension and can enjoy myself more. I
      also sail better when I feel the motion of the boat
      and adjust it until it feels "happy" than when I try
      to adjust to preset marks and sail some compass angle
      to the wind.

      I think this is very close to your original point;
      it's your statement about GPS that goes way wide of
      the mark IMO.

      BTW, I really liked your earlier statement about
      lighthouses and bugzappers.

      - George

      -----Original Message-----
      From: Michael C. Feathers [mailto:mfeathers@...]
      [snip]
      In my opinion, when people get at
      some of these more basic understandings,
      they are closer to having GPS. I really
      like the aesthetics of lighthouses. I read
      about them all the time, but if they ever
      got in the way of the adoption of GPS,
      I'd be livid.


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 22
      Date: Fri, 27 Apr 2001 16:10:59 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: all OO programmers should learn design patterns



      > -----Original Message-----
      > From: Gareth Reeves [mailto:reevesg@...]
      > Sent: Friday, April 27, 2001 10:12 AM
      > To: extremeprogramming@yahoogroups.com
      > Subject: RE: [XP] all OO programmers should learn design patterns
      >
      >
      > Ralph
      >
      > It would certainly be hard to argue against your points.
      > Absolutely patterns
      > are good tools for software engineers. However, most software
      > engineers that
      > I know struggle with patterns which leads to a misuse of the
      > tool. The real
      > question is - how can we increase a good understanding of patterns?

      There is only one way that I know of. Work with those engineers and guide
      them.
      It takes a long time.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 23
      Date: Fri, 27 Apr 2001 14:15:55 -0700
      From: Phil Goodwin <phil.goodwin@...>
      Subject: RE: Patterns are harmful (was: Model/View/Control and XP)

      At 03:45 PM 4/27/01 -0500, Robert C. Martin wrote:


      >> -----Original Message-----
      >> From: Michael C. Feathers [mailto:mfeathers@...]
      >
      >> >From: Robert C. Martin <rmartin@...>
      >> > If we treat the patterns as discrete solutions that should always be
      >> > applied, we have missed the lesson. We want to treat patterns as
      >> > representative of a set of values that we want our designs
      >> > to reflect.
      >>
      >> I agree, but the thing that I notice is that the 'code smells' in
      >> Martin Fowler's refactoring book serve as a more direct spotlight
      >> on a value system than many patterns literature that I've
      >> seen.
      >
      >The code smells are interesting, but negative. Patterns are positive.
      Code
      >smells tell you what's wrong. Patterns tell you how some people fix the
      >smells. You can't have one without the other. You can't simply point at a
      >pile and say "ew, that stinks!" you also have to get the shovel out and fix
      >the pile.

      Maybe they can balance each other. If you are over applying patterns it
      seems like the resulting code ought to smell. This, I think, would be
      especially true in the context of factoring code because you would be adding
      elements to the code without there being any external motivator to do so.

      For instance, suppose that someone is factoring towards Composite. They
      start by adding a collection to an object and then delegating a call to all
      the members of the collection. They run the tests and everything works. Then
      they start to factor out a Composite interface. "Wait!" their partner says,
      "Why are you doing that?". The drive toward implementing a pattern gets
      curtailed by the drive to keep the code simple -- an interface with only one
      implementer can be folded into that implementer until the need for a second
      implementer comes along. The partial pattern stays in the code as a force
      pulling toward a more complete implementation. This force is balanced by the
      need for simplicity. If programmers can be taught to see these forces
      working inside the code then they'll be able to quickly see when the balance
      between them becomes upset, and that will tell them when, where and often
      what new code needs to be written.
      ----------------------------------------------------------------------------
      --------------------------------
      Phil Goodwin, Java Software, Sun Microsystems, 408-517-6951, or x66951

      "If everything you try works, you aren't trying hard enough." -- Gordon
      Moore



      ________________________________________________________________________
      ________________________________________________________________________

      Message: 24
      Date: Fri, 27 Apr 2001 16:26:15 -0500
      From: "Robert C. Martin" <rmartin@...>
      Subject: RE: all OO programmers should learn design patterns



      > -----Original Message-----
      > From: Ron Jeffries [mailto:ronjeffries@...]

      > The more you know, the better. The less deeply you dig into
      > your bag of
      > tricks, the better. I'm glad I know so much: it is one of the
      > few benefits
      > of having lived so long and worked on so many exciting
      > things. But of all
      > the things I learned, the things I learned in the last five
      > years seem to
      > serve me best, and seem to subsume and explain much of what
      > went before.

      I agree. And yet the things I've learned in the last two years would have
      meant little to me if I had learned them 10 years ago. I needed the context
      of the last 30 years to assimilate them properly. I bet the same is true
      for you.

      > I think Michael has his fingers on a truth, and it's one that
      > I've been
      > trying to express as well: there is something elemental about
      > refactoring
      > and the forces that push us to little refactorings. I'd like
      > to see our
      > attention to those things amped up, and our attention to the Big Name
      > Refactorings amped down. Not to remove them, but to treat them as the
      > Platonic Ideal that they are ... not to be implemented in our
      > real code, so
      > much as to be reflected in it.

      Nicely said... as always.

      Robert C. Martin | "Uncle Bob" | Software Consultants
      Object Mentor Inc. | rmartin@... | We'll help you get
      PO Box 5757 | Tel: (800) 338-6716 | your projects done.
      565 Lakeview Pkwy | Fax: (847) 573-1658 | www.objectmentor.com
      Suite 135 | | www.XProgramming.com
      Vernon Hills, IL, | Training and Mentoring | www.junit.org
      60061 | OO, XP, Java, C++, Python|

      "One of the great commandments of science is:
      'Mistrust arguments from authority.'" -- Carl Sagan


      ________________________________________________________________________
      ________________________________________________________________________

      Message: 25
      Date: 27 Apr 2001 16:30:51 -0500
      From: Glenn Vanderburg <glv@...>
      Subject: Re: Patterns are harmful (was: Model/View/Control and XP)

      "Robert C. Martin" <rmartin@...> writes:
      >
      > The code smells are interesting, but negative. Patterns are positive.
      Code
      > smells tell you what's wrong. Patterns tell you how some people fix the
      > smells. You can't have one without the other.

      Agreed. But to me, at least, the important thing about patterns in
      this context is not the particulars of the patterns themselves, but
      the qualities those patterns have in contrast with the smells.

      In other words: "Here's what it looks like when you've done it
      better."

      --
      Glenn Vanderburg
      Delphi Consultants, LLC
      glv@...



      ________________________________________________________________________
      ________________________________________________________________________



      Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
    Your message has been successfully submitted and would be delivered to recipients shortly.