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

[XP] Re: no excuses programming

Expand Messages
  • Dave Thomas
    ... All true. But that point can occur well before a piece of code is museum quality . My question was whether there s any time in XP to take code to this
    Message 1 of 82 , Mar 1, 2000
      Donald McLean <dmclean@...> writes:

      > In XP, once you've completed the code and are sure that it works,
      > you have to refactor mercilessly. You're not done until the code
      > is the simplest, cleanest and most clearly understandable code
      > that you and your partner can make it.

      All true. But that point can occur well before a piece of code is
      'museum quality'. My question was whether there's any time in XP to
      take code to this next level. I'm not sure I've ever seen a
      justification for doing additional tinkering, nor do I think it's a
      good idea.

      > I think that "no warts" is certainly a requirement.

      Perhaps warts is too strong a term. How about wrinkles?

      > Want another reason? Refactoring is an entropy fighting tactic.

      Absolutely, but look at the cost curve. <Moment of awed reverence as
      everyone looks at cost curve>. That gets blown out the window if every
      refactoring involves each pair in constantly polishing, polishing
      code. There's a point where the diminishing returns drop below the
      marginal cost. At that point, you should stop, even though there may
      still be more polishing to do.

      "Chris Berry" <cberry@...> writes:

      > While I agree w/ you in practice (e.g Do the Simplest thing possible
      > -- Use the appropriate tools for any given job) it's all obviously
      > quite subjective. To you; When does a Wart become a "Broken window".

      I guess at the point where it engenders sloppiness in others. I'd
      guess most developers reach the "no broken windows" point for others
      before the reach their own idea of perfection.

      To use the broken windows analogy--fix the broken windows, repaint the
      peeling woodwork, brush down the stoop, do everything necessary to
      give the residents a sense of pride. But it probably isn't necessary
      to take a toothbrush to the pointing.

      You never stop perfecting. You have to stop coding (at some point).

      I suspect in reality we're all in agreement here ;-)


    • Ken Auer
      ... To throw a twist into this conversation... IMO, it s unprofessional to not ship code because there is still some cruft in it. What is professional? ... it
      Message 82 of 82 , Mar 16, 2000
        > > IMO, it's unprofessional to ship crufty code...
        > I feel the same way, but why does anyone feel that way? Isn't it more a
        > warrior ethic or creed that makes us want to do our best? I think
        > Xp'ers like writing great-looking code. What is "professional"? I'm not
        > sure the economic argument pans out. Even if it weren't economic to do
        > my best, I'd still do my best.

        To throw a twist into this conversation...

        IMO, it's unprofessional to not ship code because there is still some cruft
        in it.

        "What is professional?"... it is not perfectionism. (I don't remember who
        the original poster of this was, and I'm not accusing anyone in particular
        of anything, just trying to start a different slant on the conversation).

        I constantly find myself leaving code in the system that I think could be
        better. But only when I'm not sure how to make it better. E.g. I find that
        Java's typing model causes me to encapsulate casting in order to keep user's
        of a class from having to cast... (I never had to do that in Smalltalk, but
        that's a completely different thread). So, I often end up, after lots of
        functionality being added and a bunch of refactoring, finding that I have
        small classes that exist mostly to encapsulate the generic stuff underneath
        it and insert some type intelligence. The code looks almost exactly the
        same as a couple of other classes that also add similar type intelligence
        for a different type. I hate it, but it's not always obvious or possible to
        get rid of it.

        Sometimes, later, I learn a new trick that can help me clean up the cruft.
        I typically don't go and find all of the places in the system that I can
        apply the trick. The customer would be pretty bummed out if I took 2-3 days
        to do that and missed the iteration. However, I do communicate the trick
        (often through the pair-vine, but sometimes at a StandUpMeeting or on the
        whiteboard with a small group), and encourage people to apply it when their
        in code containing the particular suspect cruft.

        Eventually, the cruft works itself out and new flavors of cruft works its
        way in. The key is to never insert cruft that has a known cure, and remove
        the old cruft the next time you have to add something where the cruft lives.


        Ken Auer <kauer@...>
        The Extreme Programming Software Studio(TM)
        RoleModel Software <http://www.rolemodelsoft.com> (v) 919-557-6352
        5004 Rossmore Dr. (f) 919-552-8166
        Fuquay-Varina, NC 27526 (m) 919-630-5807
        "Christianity is not a plug-in, it's an operating system"
        Mark 12:28-31
      Your message has been successfully submitted and would be delivered to recipients shortly.