Meeting "customer demand"



  • This is not really a programming WTF, but more of a customer WTF. 
    Also it's just a funny story.  Maybe we've all done this?



    At my previous job, I worked on a team that built automated scanning
    systems.  The software controlled a motor that moved the scanning
    head over the piece of material, took data points in a grid pattern,
    and fed the results into the data acquisition module of the software.



    I was responsible for the data analysis and flaw detection portion of
    the system.  Once we had scanned a piece of material, I ran
    through the data points, compared each to a set of criteria, marked
    them good or bad, and as a last step, determined whether there were
    enough bad points in a small enough area to constitute a reject.



    While the software was doing this analysis, it popped up a window that
    said "Analysis working..." and counted down a progress bar.  When
    it was done, it closed that window and popped up the results
    window.  Initially it took about one minute, depending on the
    parameters the customer set up and the size of the data array, which
    depended mostly on the size of the part being scanned.  Customers
    commented on the slowness, and I realized that I could do most of the
    analysis during the scan, when the processor had a lot of free
    time.  I reworked the software to do "real-time flaw detection",
    working on each line of data as it was acquired.  Once the scan
    was done and the progress window popped up, the analysis routine only
    needed to consider the final line of data and then was done, so the
    progress window disappeared very quickly and the results were
    displayed.  I was happy with my code, and our customers were
    pleased.



    Except one.



    The customer complained that the analysis was "WAY too fast" and "MUST
    be broken".  They were especially concerned because the analysis
    appeared to take the same amount of time no matter how much data was
    collected.  I tried explaining the changes I had made but they
    were unshakeable in their belief that the analysis "couldn't possibly
    be that fast."  They couldn't seem to understand that the analysis
    was taking place WHILE the scan was going on.



    Just to be on the safe side, I spent a couple of hours verifying that the analysis worked the same as before.



    The solution, naturally, was to add a delay in the progress bar (for
    that customer only) so it spent a full ten seconds counting down,
    longer for a big data array.  Now they were happy!!



    Six months later, they complained that the analysis was taking too long
    and could we speed it up.  I cut the fake delay in half and they
    were overjoyed.  It was not MY decision to charge them $5,000 for
    "optimization and refinement of algorithms".




  • Completely awesome. Should have charged them more though. I'd say $100,000. Optimization like that is a huge effort. 



  • <font size="2">It just goes to show that the customer is always right.



    </font>



  • @cconroy said:

    <font size="2">It just goes to show that the customer is always right.



    </font>
    <font size="5">A</font>t least the paying customers.



  • @cconroy said:

    <font size="2">It just goes to show that the customer is always right.</font>
    I personally dont like that quote because sometimes ( like this time ) the customer is very very wrong. The trick is to not to let them catch on that they're an idiot.

    Besides, what happens when 2 customers disagree ?



  • @paranoidgeek said:


    Besides, what happens when 2 customers disagree ?


    Then it's time for

    if (company == "Path-E-Tech") {
      fake_delay();
    }

    One of my projects several years ago had a short delay built into the activate/deactivate procedure, to make it look like a more impressive effort (it was really just patching one routine, rather than patching every other routine that called that one routine).  I did eventually get the delay taken out.



  • @emurphy said:

    @paranoidgeek said:

    Besides, what happens when 2 customers disagree ?


    Then it's time for

    if (company == "Path-E-Tech") {
      fake_delay();
    }


    Personally, I would think the code isn't Enterprise enough. It should look like this:

    #define IDIOT  "Path-E-Tech"

    if(company == IDIOT){
        fake_delay();
    }

    THAT'S what I call "work satisfaction".



  • First post - hope I'm doing this right...

    If each scan line was immediately converted to xml (G=good point, B=bad point, N=point not found), and stored in the tblcolumn database, by the time the system finished crunching the data, the customer would be extremely confident that his data had been thoroughly analyzed by an enterprise-class algorithm!



  • @JHolland said:

    Just to be on the safe side, I spent a couple of hours verifying that the analysis worked the same as before.



    The solution, naturally, was to add a delay in the progress bar (for
    that customer only) so it spent a full ten seconds counting down,
    longer for a big data array.  Now they were happy!!



    Six months later, they complained that the analysis was taking too long
    and could we speed it up.  I cut the fake delay in half and they
    were overjoyed.  It was not MY decision to charge them $5,000 for
    "optimization and refinement of algorithms".




    Err, after failing to make them understand
    your data analysis is done while the document is being scanned,
    perhaps, maybe, instead of scamming your customer like that (not that
    they don't deserve it), you could make the progress bar pops up
    earlier, like while the document is being scanned.



  • @paranoidgeek said:

    Besides, what happens when 2 customers disagree ?


    Why, stay out of the crossfire, of course, and let them duke it out.



  • Making the progress bar pop up earlier would have been hard(er). 
    I could have done that, or done something else similar, but I had more
    important work to do on the software like adding real new features for
    non-idiot customer.



    And please note I am not the one who scammed the customer.  The
    company president (who knew why I had added the fake delay in the first
    place) told me to cut it in half when the customer asked for the
    algorithm to be optimized.  He was careful to tell me not to take
    it out altogether lest we tip back into the "WAY too fast and CAN'T be
    right" zone.



    Afterwards (a couple of months later, actually), I found out that he had charged the customer for the "upgrades".



  • @JHolland said:

    Making the progress bar pop up earlier would have been hard(er). 
    I could have done that, or done something else similar, but I had more
    important work to do on the software like adding real new features for
    non-idiot customer.



    And please note I am not the one who scammed the customer.  The
    company president (who knew why I had added the fake delay in the first
    place) told me to cut it in half when the customer asked for the
    algorithm to be optimized.  He was careful to tell me not to take
    it out altogether lest we tip back into the "WAY too fast and CAN'T be
    right" zone.



    Afterwards (a couple of months later, actually), I found out that he had charged the customer for the "upgrades".


    Your company president did the right thing.
    Customers keep complaining and try to get free services. The only way to get them to put a stop to this is to tell them that it will cost them money for these changes. You originally had to make a specific change for just this customer that provided no value whatsoever to the product and that work was done for free. Now, the customer changed their mind (as they will often do) and it is time to put your foot down and tell them that the change will take X number of hours and the price will be X per hour.
    At my company if we are billing for a change or enhancement, we bill for a minimum of 8 hours.
    Besides, in general it is harder to work with idiot customers and therefore they should be charged more than regular customers.



  • @ferrengi said:



    Your company president did the right thing.
    Customers keep complaining and try to get free services. The only way to get them to put a stop to this is to tell them that it will cost them money for these changes. You originally had to make a specific change for just this customer that provided no value whatsoever to the product and that work was done for free. Now, the customer changed their mind (as they will often do) and it is time to put your foot down and tell them that the change will take X number of hours and the price will be X per hour.
    At my company if we are billing for a change or enhancement, we bill for a minimum of 8 hours.
    Besides, in general it is harder to work with idiot customers and therefore they should be charged more than regular customers.


    We establish an SAP in such cases.

    Special Arsehole Price.



  • @dhromed said:

    @ferrengi said:


    Your company president did the right thing.
    Customers keep complaining and try to get free services. The only way to get them to put a stop to this is to tell them that it will cost them money for these changes. You originally had to make a specific change for just this customer that provided no value whatsoever to the product and that work was done for free. Now, the customer changed their mind (as they will often do) and it is time to put your foot down and tell them that the change will take X number of hours and the price will be X per hour.
    At my company if we are billing for a change or enhancement, we bill for a minimum of 8 hours.
    Besides, in general it is harder to work with idiot customers and therefore they should be charged more than regular customers.


    We establish an SAP in such cases.

    Special Arsehole Price.


    Heh, that's a good one.


Log in to reply