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

YA YAGNI dilemma, or would you care to buy an insurance policy

Expand Messages
  • Ron Crocker
    So I ve got an interestingly problematic situation to deal with. Our customer, when asked point blank, Should we include feature X also? right after they
    Message 1 of 41 , Feb 15, 2002
    • 0 Attachment
      So I've got an interestingly problematic situation to deal with. Our
      customer, when asked point blank, "Should we include feature X also?"
      right after they said they want something else to solve the same
      problem, says "Well, duh, no, feature Y is sufficient."

      Ok, but our experience says that they will indeed want feature X. The XP
      thing (YAGNI, Customer makes business decisions, ...) says don't do
      feature X and deal with it later. So when they come back and say they
      "We want feature X and how could you have been so daft as to not be
      prepared to support our desire?" and we tell them that they can't have
      it because they said no earlier and now the 10 million phones on their
      system don't support it and they'll need to recall them all and reflash
      them or buy 10 M new phones or ...

      Building in feature X NOW costs very little - there's some small amount
      of development and testing required. Building in feature X later will be
      very painful, and will probably cause some signficant ruffling of our
      relationship as we continually tell them that it will cost WAY MUCH and
      it's THEIR FAULT it costs so much, since they chose to exclude feature X
      from the product.

      No brainer, right? YAGNI says "don't do it." The customer says "don't do
      it." I will gladly fully support their informed decision, given that
      they are making a completely knowing decision and are prepared to live
      with the consequences. I'm doing my part - I'm telling them the
      drawbacks of their preferred solution, and yet they still seem to be
      saying no. I really should honor this, as they seem to be making an
      informed decision. Nonetheless, I have this sneaky suspicion that they
      will indeed come back and ask for feature X. I *REALLY* want to build in
      feature X because I can deal with the small amount of pain of building
      something they don't want and then never turning it on versus the huge
      amount of pain of trying to add it in later.

      So this makes me start thinking that YAGNI is a bet - a bet that it's
      cheaper for me to add it later if I truly need it than to add it now
      when I don't need it. In this case, it's not cheaper for me to add it
      late. Maybe what I'm looking for is an insurance policy. Insurance
      companies say "Pay us a small amount now and lose it if you don't wreck
      your car, but if you do wreck your car then we cover the costs." My
      feature X *IS* an insurance policy. And much like my homeowner's
      insurance, I wouldn't pay it if I knew in advance my house won't burn
      down, but the risk is too high so it's worth it to hedge my bet.

      Ron C
    • Dinwiddie, George
      ... As I understood the problem, everyone would have to buy a new device in order for *anyone* to get the new feature. IOW, the bit field is needed to allow
      Message 41 of 41 , Feb 25, 2002
      • 0 Attachment
        Ron Jeffries noted:
        >
        > Yes. It seems clear to me that there are step functions after
        > deployment, and perhaps at other key spots. Your point that everyone
        > in the universe would have to buy a new device to get the new feature
        > was a good one. (I do still think it's a business decision, but that's
        > not a YAGNI issue.)

        As I understood the problem, everyone would have to buy a new device
        in order for *anyone* to get the new feature. IOW, the bit field is
        needed to allow for new features to be added in the future in spite of
        an installed base that won't support those features. If my understanding
        is correct, I think adding the bit fields is as much a technical decision
        as is refactoring. It allows flexibility in the future.

        When designing data formats, particularly when I was doing embedded systems,
        I always tried to allow for growth. My rule of thumb is that older devices
        might not understand the content of newer versions of the data format, but
        they should at least understand that they don't understand, and not blindly
        try to interpret it with incorrect understanding. It's better that they
        just ignore the newer formats.

        - George
      Your message has been successfully submitted and would be delivered to recipients shortly.