Blog "about python 3"

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun Jan 5 20:23:15 EST 2014


Roy Smith wrote:

> In article <mailman.4930.1388908293.18130.python-list at python.org>,
>  Chris Angelico <rosuav at gmail.com> wrote:
> 
>> On Sun, Jan 5, 2014 at 2:20 PM, Roy Smith <roy at panix.com> wrote:
>> > I've got a new sorting algorithm which is guaranteed to cut 10 seconds
>> > off the sorting time (i.e. $0.10 per package).  The problem is, it
>> > makes a mistake 1% of the time.
>> 
>> That's a valid line of argument in big business, these days, because
>> we've been conditioned to accept low quality. But there are places
>> where quality trumps all, and we're happy to pay for that. Allow me to
>> expound two examples.
>> 
>> 1) Amazon
>> 
>> http://www.amazon.com/exec/obidos/ASIN/1782010165/evertype-20
>> 
>> I bought this book a while ago. It's about the size of a typical
>> paperback. It arrived in a box too large for it on every dimension,
>> with absolutely no packaging. I complained. Clearly their algorithm
>> was: "Most stuff will get there in good enough shape, so people can't
>> be bothered complaining. And when they do complain, it's cheaper to
>> ship them another for free than to debate with them on chat."
> 
> You're missing my point.
> 
> Amazon's (short-term) goal is to increase their market share by
> undercutting everybody on price.  They have implemented a box-packing
> algorithm which clearly has a bug in it.  You are complaining that they
> failed to deliver your purchase in good condition, and apparently don't
> care.  You're right, they don't.  The cost to them to manually correct
> this situation exceeds the value.  This is one shipment.  It doesn't
> matter.  You are one customer, you don't matter either.  Seriously.
> This may be annoying to you, but it's good business for Amazon.  For
> them, fast and cheap is absolutely better than correct.

One, you're missing my point that to Amazon, "fast and cheap" *is* correct.
They would not agree with you that their box-packing algorithm is buggy, so
long as their customers don't punish them for it. It meets their
requirements: ship parcels as quickly as possible, and push as many of the
costs (damaged books) onto the customer as they can get away with. If they
thought it was buggy, they would be trying to fix it.

Two, nobody is arguing against the concept that different parties have
different concepts of what's correct. To JMF, the flexible string
representation is buggy, because he's detected a trivially small slowdown
in some artificial benchmarks. To everyone else, it is not buggy, because
it does what it sets out to do: save memory while still complying with the
Unicode standard. A small slowdown on certain operations is a cost worth
paying.

Normally, the definition of "correct" that matters is that belonging to the
paying customer, or failing that, the programmer who is giving his labour
away for free. (Extend this out to more stakeholders if you wish, but the
more stakeholders you include, the harder it is to get consensus on what's
correct and what isn't.) From the perspective of Amazon's customers,
presumably so long as the cost of damaged and lost books isn't too high,
they too are willing to accept Amazon's definition of "correct" in order to
get cheap books, or else they would buy from someone else.

(However, to the extent that Amazon has gained monopoly power over the book
market, that reasoning may not apply. Amazon is not *technically* a
monopoly, but they are clearly well on the way to becoming one, at which
point the customer has no effective choice and the market is no longer
free.)

The Amazon example is an interesting example of market failure, in the sense
that the free market provides a *suboptimal solution* to a problem. We'd
all like reasonably-priced books AND reliable delivery, but maybe we can't
have both. Personally, I'm not so sure about that. Maybe Jeff Bezos could
make do with only five solid gold Mercedes instead of ten[1], for the sake
of improved delivery? But apparently not.

But I digress... ultimately, you are trying to argue that there is a single
absolute source of truth for what counts as "correct". I don't believe
there is. We can agree that some things are clearly not correct -- Amazon
takes your money and sets the book on fire, or hires an armed military
escort costing $20 million a day to deliver your book of funny cat
pictures. We might even agree on what we'd all like in a perfect world:
cheap books, reliable delivery, and a pony. But in practice we have to
choose some features over others, and compromise on requirements, and
ultimately we have to make a *pragmatic* choice on what counts as correct
based on the functional requirements, not on a wishlist of things we'd like
with infinite time and money.

Sticking to the Amazon example, what percentage of books damaged in delivery
ceases to be a bug in the packing algorithm and becomes "just one of those
things"? One in ten? One in ten thousand? One in a hundred billion billion?
I do not accept that "book gets damaged in transit" counts as a bug. "More
than x% of books get damaged", that's a bug. "Average cost to ship a book
is more than $y" is a bug. And Amazon gets to decide what the values of x%
and $y are.


> I'm not saying this is always the case.  Clearly, there are companies
> which have been very successful at producing a premium product (Apple,
> for example).  I'm not saying that fast is always better than correct.
> I'm just saying that correct is not always better than fast.

In the case of Amazon, "correct" in the sense of "books are packed better"
is not better than fast. It's better for the customer, and better for
society as a whole (less redundant shipping and less ecological harm), but
not better for Amazon. Since Amazon gets to decide what's better, their
greedy, short-term outlook wins, at least until such time as customers find
an alternative. Amazon would absolutely not agree with you that packing the
books more securely is "better", if they did, they would do it. They're not
stupid, just focused on short-term gain for themselves at the expense of
everyone else. (Perhaps a specialised, and common, form of stupidity.)

By the way, this whole debate is known as "Worse is better", and bringing it
back to programming languages and operating systems, you can read more
about it here:

http://www.jwz.org/doc/worse-is-better.html



[1] Figuratively speaking.


-- 
Steven




More information about the Python-list mailing list