May 10th, 2010

moose, transparent

эффекты второго порядка

Законы, предписания, да и просто экономические решения - выход продукта на рынок, скажем - создают структуру выборов и предпочтений. А потом начинает действовать "человеческий фактор" - люди реагируют на созданные для них условия и пытаются маневрировать так, чтобы вышло в их пользу; изменившееся поведение людей меняет ситуацию, и приводит к непредвиденным последствиям, "эффектам второго порядка". В этом нет ничего умного, это тривиально. В одной компании решили давать премии программистам за количество строк написанного кода. В результате программисты стали писать код так, чтобы вышло как можно больше строк за счет всяких ухищрений, а не за счет настоящей продуктивности (которая в любом случае необязательно соответствует размеру кода). Это типичный эффект второго порядка.

Многие примеры эффектов второго порядка банальны и очевидны; но далеко не все таковы. Полезно всегда помнить о том, что люди - не марионетки, в точности следующие предположениям экономической модели; они всегда будут стараться повернуть дело в свою пользу, причем часто способом, который создателю модели и в голову не пришел. Полезно всегда помнить об эффектах второго порядка.

Один из самых интересных комментариев, которые мне попадались в последнее время, написал пользователь jerf в дискуссии на сайте Hacker News. Разговор шел о кабелях HDMI, которые вопреки всякой логике не поставляются часто в коробке вместе с телевизором. В результате покупатель в магазине докупает кабель за $20-$50, и это еще в лучшем случае, если он не клюет на наживку мошенников-производителей "элитных кабелей", типа Monster Cables за $400. На самом же деле отличный HDMI-кабель легко купить долларов за пять в сетевых магазинах; но клиенту нужно, чтобы его новый телевизор заработал сразу, вот он и докупает на месте.

Почему производитель телевизора не кладет кабель в коробку? Это обошлось бы ему где-то в $2, а покупателям сэкономило бы кучу денег; почему конкуренция с другими производителями не приводит к этому результату? Эффект второго порядка, объясняет jerf (англ.). Предположим, Самсунг начал бы поставлять HDMI-кабель вместе с телевизором, и даже не повысил бы цену, смог сам абсорбировать этот расход. Что тогда? Телевизоры попадают в сети магазинов электроники, типа BestBuy, и там тут же замечают, что клиенты перестают докупать кабели за $20-$50, или даже совсем мошеннические за $400 - а BestBuy на всех этих покупках получал свою немалую долю прибыли. BestBuy не может позволить себе потерять столько денег; чтобы возместить убыток, они повысят цену на телевизоры Самсунг, или вообще перестанут их продавать - потому что по повышенной цене они все равно не смогут конкурировать с другими марками (а конкуренция на этом рынке жесточайшая). Что мы имеем в итоге? Самсунг попробовали улучшить свой продукт для покупателя, а в итоге потеряли кучу продаж и денег. Вот поэтому они и не кладут кабель в коробку с телевизором. Эффект второго порядка.

Я недавно прочитал книгу, целиком посвященную дорожному движению - в ней есть главы про планирование шоссе, про пробки, про сравнительный риск разных автомобилей и других факторов, про то, как в Швеции переходили с левостороннего движения на правостороннее и про многое другое. Это не серьезное исследование, а скорее набор огромного количества занимательных фактов (так что даже утомляет в итоге). В этой книге эффекты второго порядка встречаются чуть ли не на каждой странице. Но самый простой пример там, и тот, что мне запомнился лучше всех - это пример опасных дорог. Предположим, есть дорога с опасным поворотом, вокруг холма или другого препятствия: видимость никакая, дорога узкая, знаков нет, дополнительной полосы на обочине тоже нет итд. итд. - опасное место. Так вот, исследования показали, что бывает, в таких случаях попытки сделать дорогу менее опасной приводят к неприятным результатам. Скажем, угол поворота чуть сравняли, видно стало дальше, поставили дорожные знаки, расширили и добавили краевые полосы, колдобины убрали и закатали свежее покрытие... в итоге водители стали на этом участке ездить намного увереннее и быстрее, и разбиваться чаще. Аварий стало больше, и смертей больше. Вот такая штука - эффект второго порядка.
moose, transparent

сон

Еще мне вчера приснился сон, в котором я твердо понял, что это сон, и попытался из него выйти. Со мной такого почти никогда не бывает (1-2 раза за всю жизнь до сих пор, если не забыл целиком и полностью, конечно). Иногда бывает, что во сне есть смутные подозрения, но я обычно ничего не делаю, чтобы как-то их подтвердить.

Сон был такой: я иду по коридору одного из зданий гугла в Маунтейн-Вью в Калифорнии, и вдруг меня останавливает работник секьюрити и просит предъявить бейдж. А он у меня в кармане, а не висит на шнурке. Я лезу рукой в карман, щупаю там - кроме бейджика, там еще ключи, иногда телефон, короче по форме нащупываю, что надо, достаю и показываю. Смотрю - а это не бейдж мой, а какая-то странная полуэротическая фотография или картинка, завернутая в пластик так, что похоже на бейдж немного, но не ламинированная. Не могу вполне разобрать, что на ней, какие-то дикие линии и фигуры, но что-то такое полураздетое-женское там есть. Я в смущении и искреннем недоумении - в жизни этого не видел - откидываю это в сторону, и опять шарю в кармане, достаю бейдж - а это опять какая-то невнятная полуэротическая карточка со смазанными линиями. Причем я во сне еще вот чему удивляюсь - эти карточки одна за другой, они все размером в точности с бейджик, но в середине они сильно ужаты по ширине, так что получается не прямоугольник, а форма как у песочных часов примерно. Но когда я в кармане рукой шарю, то ощущается явственно прямоугольный бейдж, как же он превращается в эту странную фигню, когда я вынимаю руку? Наваждение какое-то; хорошо, пробую в третий раз, и опять та же фигня (картинки все время разные, причем черно-белые все; я во сне отмечаю, что они черно-белые). У меня начинают зарождаться смутные подозрения, что что-то не так с реальностью, но я все же решаю поверить, что у меня в кармане как-то случайно оказалось три сомнительных картинки, завернутых в пластик странной формы. Еще раз лезу в карман и достаю опять ту же фигню. И тут меня осеняет, действительно ощущение открытия, догадался: наверное, это сон! Сразу, автоматом, начинаю думать о том, что может тяжело будет проснуться. Отгоняю эти мысли и говорю себе: сделаю еще одну проверку, последнюю, если опять вытащу какую-то дикую карточку - это точно сон. Пробую в пятый раз, и да, карточка. Тут меня неожиданно для себя самого охватывает злоба и ярость, причем очень сильные, и я, не подумав даже, как это сработает, с силой мотаю головой (не туда-сюда, а одним таким сильным движением слева направо, которое возвращается в центр и переходит в быстро затухающее мотание; все вместе целиком занимает полсекунды наверное). Один раз мотнул - ничего. Еще раз. Еще раз - ничего, но чувствую, что-то близко. В четвертый раз с силой мотаю и просыпаюсь.
moose, transparent

улыбки

(будет интересно в основном тем, кто знает иврит)

Я обычно не слежу за ТВ-конкурсами народного пения, но очень понравилось вот это исполнение песни "Улыбки" Хавы Альберштейн:

http://www.youtube.com/watch?v=iA1uUaKD45Q#t=3m12s

Второй день его слушаю. Участницу зовут Рони Гиносар, 22 года. Спасибо kandidych за ссылку.

Update: работающая по состоянию на 2010/12/06 ссылка: http://www.youtube.com/watch?v=wFf5g-cXvgc
moose, transparent

эффект второго порядка в программировании

(эта запись будет интересна в основном программистам)

В предыдущей записи я мельком упомянул историю о том, как в одной компании программистам стали давать премии за количество строчек кода, и они в результате стали это число раздувать посредством всяких ухищрений.

Несмотря на то, что история звучит апокрифичненько, на самом деле я о ней прочитал всего пару дней назад во внутренней рассылке на работе, и в ней были указаны конкретная компания, конкретный отдел, продукт и итд. Я попросил у автора разрешение пересказать ее у себя в журнале, и мы договорились, что названия я уберу, а все остальное перескажу. Строго говоря, история приходит к вам из третьих рук: ее непосредственным действующим лицом была жена моего коллеги.

Итак, много лет назад ЖМК (жена моего коллеги) работала в очень большой компании, имя которой вам знакомо. Она получила неожиданное задание: разработать способ аккуратного подсчета строк кода, чтобы менеджеры первого и второго звена могли с помощью этих чисел измерять продуктивность разработчиков. Все это происходило в огромном отделе данной компании, включавшем в себя более 2000 (!) разработчиков.

ЖМК должна была использовать машинный анализ исходного кода, а не просто количество "физических" строк в файлах. Иными словами, это скорее был подсчет отдельных инструкций (statements) в языке, хотя назывался он "количество строк кода". Одним из ключевых вопросов, которые понадобилось прояснить с менеджерами, оказался вопрос if-statements, которые на данном языке часто писали в одну строку: считать их за одну строку или каждый branch считать отдельно? Менеджеры решили, что каждый branch следует считать отдельно.

Внимание, эффект второго порядка!

Вскоре после введения нового режима измерения продуктивности ВСЕ if-then statements в исходном коде данного проекта стали выглядеть так:

if CONDITION then ACTION else ;

Т.е. программисты обнаружили, что если добавить "else" перед точкой с запятой, то их продуктивность удваивается.

ЖМК также обнаружила большое количество блоков следующего вида:

if (v > 0) then x = 3 else ;
if (v > 0) then y = sqrt(v) else ;
if (v > 0) then print(y) else ;

там где обычно программист написал бы

if (v > 0) then begin x = 3; y = sqrt(v); print(y) end ;

Дело в том, что "обычный" способ считался за 3 строчки кода (или 4, если добавить пустой else в конце), а "новый" за 6.

и так далее.

Кому-то может показаться странным, что программисты могли так извратить светлый дух науки Тьюринга и Кнута, и породить такое уродство. Но для многих из них разница в оценке продуктивности означала разницу между "Фиатом" и "Феррари", и - что поделать - людям это было важно.