355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Боб Салливан » Эффект плато. Как преодолеть застой и двигаться дальше » Текст книги (страница 3)
Эффект плато. Как преодолеть застой и двигаться дальше
  • Текст добавлен: 31 октября 2016, 02:45

Текст книги "Эффект плато. Как преодолеть застой и двигаться дальше"


Автор книги: Боб Салливан


Соавторы: Хью Томпсон

Жанр:

   

Психология


сообщить о нарушении

Текущая страница: 3 (всего у книги 20 страниц) [доступный отрывок для чтения: 5 страниц]

Приток новых потребителей, привлеченных возможностями потокового видео, привел к тому, что клиентская база Netflix оказалась в 2011 году больше, чем у компании Comcast. Таким образом Netflix превратилась в крупнейшего оператора на рынке платного телевидения Америки. По некоторым прогнозам, к 2013 году у Netflix будет 40 миллионов пользователей {14}14
  Jeanine Poggi, «Netflix Subscribers to Top 30M by 2013: Poll», The Street, May 9, 2011, www.thestreet.com/story/11110093/1/netflix-subscribers-to-top-30m-by-2013-poll.html.


[Закрыть]
, то есть ее услугами станет пользоваться каждая третья американская семья [18]18
  Сегодня уже известна статистика. По данным самой компании за второй квартал 2013 года, ее абонентская база составляет 37 миллионов 554 тысячи пользователей. www.ir.netflix.com/results.cfm. Прим. ред.


[Закрыть]
. На непростом пути от компании, занимавшейся почтовой рассылкой, до гиганта в области потокового видео Netflix несколько раз терпела неудачи. К примеру, она довольно безуспешно пыталась повысить тарифы на услуги по обработке почты и потоковой трансляции в два раза, причем так, чтобы этого не заметили потребители. Тем не менее с самого начала было понятно, что эта бизнес-модель не вечна.

Как же получилось, что Давид и Голиаф так быстро поменялись местами? И, что еще более важно, почему Blockbuster сломалась, а Netflix расцвела? Почему аналитики, обладавшие всеми инструментами для предсказания будущего, не смогли остановить титанов отрасли от падения? И чему может научить всех нас успех Netflix? Blockbuster потерпела неудачу по той же причине, по какой потеряли популярность кинотеатры и по которой сама Netflix в какой-то момент чуть не утратила собственное доминирующее положение на рынке, – все они достигли плато после того, как перестали предоставлять своим клиентам ценность и сфокусировались на краткосрочных выгодах. Мы называем такую ситуацию алгоритмом жадности. Эти компании и целые отрасли отвлекались и прекращали слушать, а это значило, что они игнорировали вполне очевидные предупредительные сигналы. Они пострадали из-за того, что не увидели едва заметных различий. Они отлично представляли себе всю последовательность шагов на пути вверх, однако именно это сыграло с ними злую шутку, как только начались реальные проблемы. Когда происходят подобные ситуации, плато становится неизбежным – как ямка от падения яблока с дерева на землю.

Однако в отличие от гравитации эффект плато нельзя назвать безусловным. Неудача Blockbuster не была неизбежной.

Вы думаете, что не можете обучить старого пса новым трюкам? Вы слишком погрязли в привычных методах и не в состоянии увидеть новый путь, способный сломать имеющиеся барьеры? Пожалуй, лучшим примером человека, не готового подвергнуть сомнению правильность своих действий и попробовать что-то новое, может считаться опытный игрок, суперзвезда высшей бейсбольной лиги, который уже заработал более четверти миллиарда долларов, делая в точности то же, что и всегда. Игрок команды Yankees Дерек Джетер к 25 годам смог достичь всех основных высот в мире бейсбола. Он уже получил свое место в Зале славы, его команда четыре раза выигрывала в Мировой серии, о нем грезили множество жительниц Нью-Йорка. Короче говоря, Дерек Джетер был живым воплощением крутизны. Однако у него имелся значительный недостаток, настоящая ахиллесова пята, и на нее обратили внимание математики, которые изобрели ряд инструментов математической статистики, оценивавших уровень профессионализма в защите. Вскоре после начала карьеры Джетера в 1995 году эти «ботаники» принялись критиковать его результаты. По их словам, Джетер показывал крайне низкие результаты во всем, что касалось обороны. Один знаменитый яйцеголовый [19]19
  Презрительная кличка ученых, связанная, по всей видимости, со слишком рано появляющейся у них лысиной. Прим. перев.


[Закрыть]
специалист сказал так: «Этому парню достается куда больше девчонок, чем положено по уровню игрового таланта» {15}15
  Nate DiMeo, «Derek Jeter vs. Objective Reality», Slate, July 14, 2008, www.slate.com/articles/sports/sports_nut/2008/07/derek_jeter_vs_objective_reality.html.


[Закрыть]
. Профессор из Уортона обнародовал исследование, из которого следовало, что Джетер – худший защитник за всю историю бейсбола. Статистики обеспечили научное подтверждение кричалке «Jeter Sucks» [20]20
  «Джетер плох!» (англ.). Прим. перев.


[Закрыть]
, популярной у фанатов команды Boston Red Sox – главного соперника New York Yankees, за которую играл Джетер. Фанатская организация Red Sox Nation пришла в восторг. «Потребовались усилия нескольких ученых мирового уровня, чтобы доказать то, что фанаты Red Sox знали уже на протяжении многих лет» {16}16
  Matt O’Donnell, «Science Proves It: Jeter Sucks», Fenway West, February 17, 2008, www.fenwaywest.com/2008-articles/february/science-proves-it-jeter-sucks.html.


[Закрыть]
, – написал один блогер на сайте FenwayWest.com.

Будь на вашем счету в банке 250 миллионов долларов, вас вряд ли сильно обеспокоили бы облаченные в форму наукообразных терминов оскорбления статистиков, не так ли? Однако Джетер не просто обратил на них внимание – он смог с их помощью найти свой фонтан вечной молодости. Как ему это удалось? Он принялся буквально учить заново все свои первые шаги.

После многих лет работы с одним и тем же тренером, на одном и том же стадионе и после выигрыша нескольких чемпионатов Джетер обратил внимание на своих критиков, а затем смог побить их в их собственной игре. В 2008 году он нанял нового тренера, Джейсона Райли из знаменитой компании Athletes Compound, работающей с представителями спортивной элиты в Тампе {17}17
  Ian O’Connor, «O’Connor: How Jeter Got Younger at Age 35», Hackensack (NJ) Record, October 6, 2009.


[Закрыть]
. Райли решил по-новому настроить работу быстросокращающихся мышц Джетера и занялся исправлением ошибок, закрепившихся у спортсмена за многие годы игры. У Джетера имелась давняя проблема, не позволявшая ему хорошо выполнять чуть ли не самый распространенный маневр при защите – перехватывать мячи, катящиеся ближе к середине игровой зоны на второй базе. Райли обнаружил, что Джетер притормаживал, поскольку его левое бедро было менее гибким, чем правое. Такая проблема часто возникает у игроков нападения – правшей. С момента, когда Джетер впервые, в детском возрасте взял в руки биту, он повторял одно и то же движение не менее 2,7 миллиона раз {18}18
  Крайне приблизительные расчеты авторов. Мы предположили, что Джетер ударял битой по мячу примерно по 250 раз в день со времен, когда он был маленьким ребенком (250 ударов × 365 дней × 30 лет). Мы не учитывали каникулы и отпуска (зная, что это очень упорный спортсмен). Но даже если их учесть, то можно предположить, что во время интенсивных занятий в марте или апреле он увеличивал нагрузки в два и более раза… Одним словом, вы понимаете, что мы хотим сказать.


[Закрыть]
и поэтому к 35 годам не успевал за мячом, летевшим слева от него.

И Райли заставил Джетера заниматься изнурительными упражнениями, направленными на укрепление левого бедра и придания ему прежней гибкости. Он буквально заставлял спортсмена делать то, что делает ребенок, который учится ходить.

«Мы раз за разом тренировали его первый шаг, – рассказывал Райли Иэну O’Коннору, автору книги о Джетере. – Я думаю, что поначалу он ненавидел все эти упражнения, потому что это напоминало попытки заново чему-то научить маленького ребенка. Поначалу этот знаменитый спортсмен постоянно говорил: “Я не хочу это делать, потому что выгляжу глупо”, а затем совершенно внезапно изменил свою точку зрения».

Райли заставил Джетера пройти по простому четырехэтапному пути обучения, который использовал в работе со всеми представителями спортивной элиты. Вы тоже можете пройти по этому пути – Райли описал этот метод в перерыве между тренировками Джетера. Метод состоит из четырех простых шагов: неосознанная некомпетентность; осознанная некомпетентность; осознанная компетентность; и – наконец! – победа.

Объясним эту идею по-другому. Джетер неправильно делал первый шаг, однако не знал этого (шаг 1: неосознанная некомпетентность). Когда Райли указал ему на это, Джетер понял, что использует неправильную технику, но никак не мог сломать свою плохую привычку (шаг 2: осознанная некомпетентность). Попрактиковавшись и сконцентрировавшись, он смог перестроить свою нервно-мышечную коммуникацию так, чтобы делать правильные движения – но лишь после невероятной концентрации (шаг 3: осознанная компетентность). И наконец, новые движения зафиксировались в его памяти, после чего могли совершаться автоматически (шаг 4: неосознанная компетентность).

«В этом состоит цель всех движений, – утверждает Райли. – Для того чтобы движения были эффективными, они должны быть лучше синхронизированы и забирать у вас меньше энергии». Танцоры, постоянно считающие «раз-два-три, раз-два-три», выглядят довольно глупо. Так же глупо выглядят защитники, считающие свои шаги в попытке перехватить мяч. Однако при достаточной практике правильный способ действий становится автоматическим, и тут-то и начинают происходить настоящие изменения.

Достигнув состояния неосознанной компетентности, Джетер смог пробиться через свое защитное плато. Когда во время сезона 2009 года этот игрок Yankees начал перехватывать каждый мяч, летевший слева от него, менеджеры других команд лиги во всеуслышание задавались вопросом, не натолкнулся ли он на фонтан вечной юности. До этого так улучшить свою защиту не мог ни один 35-летний защитник. В ходе этого сезона Джетер допустил наименьшее количество ошибок за всю свою карьеру. Но самое главное – ему удалось шокировать даже самых занудных статистиков и уверенно занять место во всех созданных ими рейтингах бейсбольных защитников. Крики «Jeter Sucks!» утихли. И кстати, New York Yankees выиграли турнир Мировой серии, наглядно доказав, что любое плато можно преодолеть, да еще и с потрясающими результатами. Знаете, сколько команд выиграло с 1955 года Мировую серию с защитником в возрасте старше 35 лет? Одна – Yankees с Дереком Джетером в 2009 году. Знаете, сколько защитников в возрасте старше 25 лет получило приз «Золотая ловушка» с 1970 года? Один – Дерек Джетер.

Его история совсем не похожа на историю Blockbuster. И совсем уж необязательно, чтобы на нее была похожа и ваша история.

2. Полная разрядка
Первая сила плато,

или Когда вы видите помидор, то говорите себе: «Это будет вкус помидора». Но что если его вкус напомнит… малину?

«Я вообще не понимаю, что здесь происходит. Я в шоке, я зла и даже не знаю, что сказать».

Дженнифер Лопез была невероятно расстроена. Она пыталась найти утешение у своих коллег – судей телевизионного шоу American Idol [21]21
  American Idol – телешоу с самым высоким рейтингом в США. Соревнование на звание лучшего начинающего исполнителя. Прим. ред.


[Закрыть]
продюсера Рэнди Джексона и солиста группы Aerosmith Стивена Тайлера {19}19
  Цитаты взяты из десятого сезона шоу American Idol, эпизода 25, транслировавшегося 7 апреля 2011 года. Если вы решите пересмотреть этот эпизод, то предупреждаем: он способен выбить слезу (стоит отметить, что Боб искренне сбит с толку любовью Хью к этому шоу). И не беспокойтесь о судьбе Пиа Тоскано. Через несколько дней после описываемых событий она смогла подписать контракт с компанией Interscope Records: Megan Angelo, «Pia Toscano Gets a Record Deal with Interscope – So What’s the Point of Winning American Idol Again?» Business Insider, April 10, 2011, articles.businessinsider.com/2011-04-10/entertainment/30014648_1_jimmy-iovine-contestants-idol-winners.


[Закрыть]
.

«Меня никогда не расстраивало и не бесило это шоу, но сейчас я просто вне себя. Что здесь вообще происходит?» – сказал Джексон. Тайлер, хотя и был недоволен голосованием, заметил: «Ну не знаю, это Америка. Одно дело – ошибка, но отсутствие страсти – это непростительно!»

Фанаты шоу были злы не меньше судей. Только что они были свидетелями, как Пиа Тоскано, одна из самых талантливых и приятных певиц, которые когда-либо появлялись на этом шоу, заняв последнее, девятое место, была фактически изгнана. Однако хотя судьи и были недовольны голосовавшими зрителями, проблема была в них самих – они оказались слишком милы: постоянно хвалили почти каждое выступление каждого участника, да еще и делали это почти каждую неделю. Если бы комплименты были чесноком, то можно было бы сказать, что зрители American Idol нюхали чесночные головки на протяжении нескольких недель и (подобно тому, что происходит в «Вонючей розе») перестали замечать запах чеснока. Голосовавшие зрители привыкли к похвалам в адрес участников, перестали обращать внимание на комплименты и уже не могли отличить посредственность от исключительного таланта.

В ходе шоу American Idol подающие надежды певцы соревнуются между собой каждую неделю, выступая перед судьями, которые комментируют их выступления. Затем зрители получают шанс проголосовать за своих фаворитов. Миллионы людей звонят, отправляют текстовые сообщения или жмут на кнопки на сайте. Участник, получивший меньше всего голосов, отправляется домой. Роль судей состоит в том, чтобы дать экспертное заключение, указать на промахи и отметить достижения участников, для того чтобы зрители могли сделать осознанный выбор.

Но это только в теории.

Этот механизм идеально работал лишь до момента ухода с шоу сварливого судьи Саймона Коуэлла {20}20
  Саймон Коуэлл покинул шоу в конце девятого сезона, не преминув перед этим высмеять нескольких участников. Некоторые из самых ярких его комментариев можно найти здесь: Joyce Lee, «Simon Cowell Zingers; 10 of the Best», CBS News, May 26, 2010, www.cbsnews.com/8301-31749_162-20005994-10391698.html. Теперь познакомиться с Коуэллом и убедиться в том, что у него сварливый характер, можно на другом популярном шоу: X Factor ( www.thexfactorusa.com).


[Закрыть]
. Он не стеснялся ругать певцов, которые, по его мнению, плохо выступили, но и не скупился на похвалы. Вот лишь пара цитат из Коуэлла, произнесенных во время шоу: «Если бы вы спели что-то подобное две тысячи лет назад, вас бы забросали камнями» и «Если вы занимаетесь спасением жизней на воде так же хорошо, как поете, то утонуть должна была бы куча людей». Думаем, что вы уже понимаете, что мы имели в виду: он был безжалостным, довольно грубым, однако при этом вы четко знали, кого он любит, а кого ненавидит.

Совсем другое впечатление производила команда из Лопез, Тайлера и Джексона. Самый жесткий их комментарий выглядел следующим образом: «Это было несколько неудачно, однако мы все равно тебя любим». Они хвалили почти каждое выступление, в результате чего зрители не могли провести различие между выступавшими и начинали руководствоваться какими-то собственными оценками. Автор сайта Today.comКрэйг Берман описал эту проблему на следующий день после изгнания Тоскано: «Невозможно было понять, что Тоскано действительно нравится судьям больше всех остальных. Они осыпали щедрыми похвалами всех участников, говоря, что все прошло отлично и что они совершенно не представляют себе, за кого же теперь проголосуют зрители» {21}21
  Craig Berman, «“Idol” Judges Berate Fans for Sending Pia Home», Today, April 8, 2011, today.msnbc.msn.com/id/42484717/ns/today-entertainment/t/idol-judges-berate-fans-sending-pia-home.


[Закрыть]
.

Саймон Коуэлл, несмотря на свою вспыльчивость, играл важнейшую роль в механике шоу, помогая усиливать разрыв между отдельными певцами. Новые судьи этого не делали. В первый раз, когда Лопез, Тайлер и Джексон похвалили Пиа Тоскано, это что-то значило, однако со временем потерялось в море последовательности.

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

У автосигнализаций, широко распространившихся в 1970-х годах, был совершенно ужасный звук. Разумеется, владельцы обращали на него внимание и реагировали на происходящее, то есть сигнализация служила своей заявленной цели – привлечению внимания к возможным ворам. Однако вскоре их эффективность достигла своего плато.

Неужели гениальные жулики смогли перехитрить сигнализацию? Вряд ли. Проблема была значительно проще: людям не нравился шум. Проведенное полицией Нью-Йорка исследование шума от автомобильных сигнализаций показало, что около 99 процентов включений сигнализации не было связано с попытками проникновения {22}22
  В последнее время было проведено несколько интересных исследований по вопросу эффективности автосигнализаций. Мы рекомендуем начать изучение этого вопроса с работы Aaron Friedman, Aaron Naparstek и Mateo Taussig-Rubbo «Alarmingly Useless: The Case for Banning Car Alarms in New York City», Transportation Alternatives, March 21, 2003, www.transalt.org/files/newsroom/reports/caralarms/08ineffective.html. Ниже перечислены и другие интересные источники: Kim Hazelbaker, «Insurance Industry Analyses and the Prevention of Motor Vehicle Theft», in Business and Crime Prevention, eds. Marcus Felson and Ronald V. Clarke (Monsey, NY: Willow Tree Press Inc., 1997), 283–293. New York City Police Department, Police Strategy No. 5: Reclaiming the Public Spaces of New York (New York: New York City Police Department, 1994), 6, 11, and 20. Brian Anderson, «Let’s Ban Car Alarms», City Journal 12, no. 1 (2002).


[Закрыть]
. Иными словами, сигнализация включалась скорее не в результате действий злоумышленников, а из-за порыва ветра, прыжка соседской кошки на капот, вибрации проезжавшего мимо грузовика или шагов проходящего пешехода. Это звук стал настолько привычным, а ложные включения – настолько частыми, что люди стали их попросту игнорировать. Сигналы перестали быть эффективными.

Проведенное компанией Progressive Insurance исследование показало, что менее одного процента людей, услышавших включение автомобильной сигнализации, позвонят в полицию. Какофония неэффективных сигналов привела к тому, что в Нью-Йорке был принят закон, согласно которому запрещалось использование сигнализаций, не выключавшихся автоматически после трех минут работы. Это развязало руки преступникам. Проведенное в 1997 году исследование данных о страховых случаях, связанных более чем с 73 миллионами автомобилей, показало, что внедрение автосигнализаций не привело к уменьшению количества краж. Вот что происходит, когда нам предлагают фальшивые сигналы и недостоверные данные: мы игнорируем и те и другие.

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

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

В конце 2000 года технологическое сообщество США заинтересовалось техническим сбоем, произошедшим в округе Волусия во Флориде. Машина для электронного голосования в районе с 600 зарегистрированными избирателями насчитала минус16 тысяч 22 голоса за Эла Гора, кандидата от Демократической партии {23}23
  Оценка уязвимости машин для голосования – одно из любимых хобби Хью. Он даже снялся для документального фильма Hacking Democracy, номинанта на премию «Эмми», и детально рассказал о технологических недостатках имеющихся систем. Узнать больше об этом фильме можно на сайте www.hackingdemocracy.com. См. также: Dana Milbank, Tragicomedy of Errors Fuels Volusia Recount, The Washington Post, November 12, 2000.


[Закрыть]
. Если вы в это время не снимались в эпизоде шоу «Остаться в живых» на пустынном острове, то наверняка помните драму, связанную с противостоянием Буша и Гора в ходе выборной кампании. Неуверенность! Неопределенность! Хаос! Но что же случилось в Волусии? Каким образом машина, призванная помогать в одном из самых важных процессов в стране, могла дать столь серьезный сбой? (Нужно отметить, что плохие результаты были аннулированы и не оказали никакого влияния на итог выборов, поскольку голоса в Волусии были впоследствии пересчитаны, причем с изрядной шумихой.)

Наверняка машина для голосования тестировалась тысячи раз, а затем сотни раз использовалась на региональных выборах без каких-либо проблем. Тем не менее проблема возникла, и это изрядно замедлило процесс выбора следующего лидера свободного мира. Если же мы с вами посмотрим на внутреннюю кухню отрасли по разработке программного обеспечения, то легко поймем, почему серьезные программные сбои часто не привлекают внимания. Программы создаются разработчиками, то есть людьми, производящими множество страниц с логическими инструкциями, которые машина затем интерпретирует и в соответствии с которыми работает. В большинстве компаний-разработчиков готовый программный продукт проверяется тестерами – людьми, которые смотрят на программу со всех сторон в надежде найти ошибки. Тестеры делают то, что делали бы на их месте обычные пользователи. Они нажимают на большие кнопки, выбирают самые типичные опции, открывают и закрывают файлы и т. д. Проблема состоит в том, что зачастую пути, по которым идут обычные пользователи, не всегда позволяют выявить сбои или ошибки в программе. Какие-то проблемы выявляются, однако способность тестеров найти сбои быстро достигает уровня плато – система, по сути, приобретает иммунитет к стандартным техникам тестирования. Однако многие ошибки, упускаемые из внимания, оказываются потом чуть ли не самыми важными (минус 16 тысяч 22 голоса – это серьезно). То есть обычный метод охоты за сбоями несовершенен и позволяет упускать именно те важнейшие ошибки, которые как раз и необходимо найти.

Каждый год сотни продуктов отзываются с рынка из-за тех или иных дефектов. О некоторых из этих дефектов производители знают еще перед выпуском продукта, однако во многих случаях их не выявляют из-за того, что тестирование было слишком методичным, слишком нормальным. Борис Бейзер, легенда в мире тестирования программных продуктов, называет эту ситуацию парадоксом пестицидов {24}24
  Boris Beizer, Software Testing Techniques, 2nd ed. (London: International Thomson Computer Press, 1990).


[Закрыть]
. В своей книге Software Testing Techniques («Техники тестирования программ») он замечает: «Каждый метод, который вы используете для предотвращения или выявления сбоев, оставляет следы менее заметных сбоев, против которых этот метод неэффективен». Выражаясь иными словами, традиционные методы проверки могут привести к появлению «суперсбоев», что особенно страшно, если речь идет о программах, контролирующих движение самолетов, гаджетах, следящих за ускорением автомобиля, или устройствах, помогающих выбрать президента.

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

Фаззинг обращает внимание на все странное и необычное {25}25
  Отличное описание фаззинга с технической точки зрения приведено в книге Ari Takanen, Jared DeMott, Charlie Miller, Fuzzing for Software Security Testing и Quality Assurance (Norwood, MA: Artech House Inc., 2008).


[Закрыть]
. Эта техника основана на точке зрения, с которой редко соглашаются инженеры: большинство систем слишком сложны для полного понимания, что приводит к возникновению странных вещей. Инженеры привыкли к жестким процессам и живут в мире математических допусков. Фаззинг допускает, что реальный мир значительно более неопределен.

Первый опыт общения Хью с фаззингом {26}26
  Детальное техническое описание ошибки в машине по продаже напитков (и фаззинга в целом) приведено в статье, написанной Хью: Herbert H. Thompson, «Secure Software Needs Careful Testing – and Lots Of It», Information Week, November 28, 2009.


[Закрыть]
(хотя в то время он этого еще не понял) состоялся, когда он учился в школе на Багамах. Хью захотел выпить газировки. Тогда, в 1980-х годах, машины по продаже прохладительных напитков только-только начали появляться в школах в столице страны Нассау. Багамы – довольно небольшой рынок для поставщиков таких машин, а кроме того, ситуация осложнялась уникальным положением национальной валюты. Официальной денежной единицей на острове выступает багамский доллар, искусственно привязанный к доллару США в соотношении один к одному. Багамские и американские доллары полностью взаимозаменяемы. Если вы покупаете в магазине шоколадку, то можете получить сдачу наполовину в американских, а наполовину в багамских долларах.

Наконец новые машины добрались и до школы, в которой учился Хью, однако к ним были прикреплены рукописные объявления: «Только 25-центовые монеты США». Когда Хью вместе со своими страдавшими от жажды друзьями добрался до одной из этих машин, ни у кого не оказалось американских четвертаков, и ребята начали экспериментировать. Один бросил в прорезь металлическую шайбу в надежде, что это каким-то волшебным образом поможет получить газировку. Шайба тут же выскочила обратно. Тогда они засунули в прорезь американский 10-центовик. Ничего. Багамский 25-центовик. Безрезультатно. Кто-то вспомнил, что в таких ситуациях иногда помогает соленая вода. Из этого тоже ничего не вышло, не считая того, что машина оказалась полностью мокрой. В течение получаса ребята запихивали в машину все, что только могли найти в карманах (в их защиту стоит сказать, что они к тому моменту еще не достигли пубертатного возраста). Ничего не получалось до тех пор, пока кто-то не бросил в прорезь багамскую монету в 10 центов.

Эта монета ничуть не похожа на 25-центовую американскую монету. Она обрезана по краям, что делает ее немного похожей на серебряный цветок. К немалому удивлению Хью и его друзей, на дисплее высветилась цифра «25» – машина ошибочно приняла монету за американский четвертак. Они пошарили по карманам и нашли еще три монетки в 10 центов. На дисплее последовательно высветились цифры «0,50», «0,75» и, наконец, «1,00» (на острове довольно высокие цены). Они нажали кнопку «Выбрать», и – ба-бам! – из ящика вылетела бутылка газировки. Это был один из самых примечательных моментов в детстве Хью.

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

Машина, торговавшая газировкой, нормально реагировала на обычное использование, однако отказала, столкнувшись с необычным сценарием. С этой проблемой сталкивалось множество систем, начиная от атомной станции в Фукусиме и заканчивая «Титаником». Люди, оценивающие подобные системы, обычно ограничены правилами логики, но реальный мир редко бывает столь же негибким. Говоря иными словами, системы немеют.

Именно в этот момент на сцене и появляется фаззинг. Тех, кто занимается им, можно сравнить с обезьянками на амфетаминах, пробующих любые действия в надежде что-то сломать. У них мало правил и почти нет ограничений. Они просто делают то, что считают нужным. Нормальный, рассудительный человек не будет вопить в течение часа на машину, торгующую газировкой, и ожидать, что в результате получит бесплатную бутылку. А заряженная амфетаминами мартышка вполне может это попробовать. И кто знает, может быть, в машине есть какой-нибудь сенсор, изучающий окружающую какофонию: думая, что звуки исходят от грузовика, развозящего воду, она разблокирует свою защиту. Современные системы настолько сложны, что никто не знает точно, к чему могут привести необычные стимулы. Хью лично столкнулся с этим во время своего полета из Лас-Вегаса в Орландо {27}27
  Узнать дополнительные детали этой истории можно в статье: Hugh Thompson, «How to Crash an In-Flight Entertainment System», CSO Online, February 9, 2007. blogs.csoonline.com/how_to_crash_an_in_flight_entertainment_system.


[Закрыть]
.

Перед каждым сиденьем самолета был небольшой экран, вмонтированный в спинку. Пассажиры во время рейса могли смотреть один из нескольких телевизионных каналов или играть в несколько простых игр. Одна из игр выглядела поразительно похожей на классическую стратегическую игру «Тетрис», в которой игроки пытаются перемещать падающие объекты так, чтобы они образовывали завершенные горизонтальные линии. Причем предлагалось указать количество элементов, которые можно было заранее увидеть в ходе игры: «ноль» означал полную непредсказуемость, а «четыре» позволяло планировать на несколько шагов вперед. Для того чтобы получить максимальное преимущество, Хью начал нажимать большую кнопку со знаком «+» на экране и постепенно дошел до максимального значения, равного четырем.

Рядом с его креслом располагалась небольшая телефонная консоль, с помощью которой пассажиры могли позвонить друзьям и членам семьи всего за 22 доллара в минуту. Хью заметил, что у телефона имеется цифровая клавиатура и что с ее помощью можно было контролировать «Тетрис», в том числе и уровень сложности. Он попытался ввести с помощью телефонной клавиатуры «10», но безуспешно. Значение на экране сначала изменилось на «1», а затем на «0» – то есть два нормальных, вполне допустимых значения. Разочарованный, Хью предположил, что у него нет никаких вариантов ввести в игру двузначные значения. Он попробовал цифру «8» – опять безрезультатно. Номер на экране даже не изменился.

Затем он попробовал цифру «5»… И – ура! – игра ее приняла!

Цифра «5» представляет в данном случае немалый интерес. Тестеры программных продуктов называют его пограничным значением {28}28
  Эти вопросы описаны в нескольких хороших книгах по тестированию программных продуктов, например в Cem Kaner, Jack Falk и Hung Q. Nguyen, Testing Computer Software, 2nd ed. (New York: John Wiley & Sons, 1999).


[Закрыть]
, поскольку оно лишь немного превышает максимально допустимое значение (пограничное), которое была готова принять программа (в данном случае «4»). Частая ошибка в программировании состоит в «ошибке на одно значение» при создании логики программы {29}29
  Эти вопросы описаны в нескольких хороших книгах по тестированию программных продуктов, например в Cem Kaner, Jack Falk и Hung Q. Nguyen, Testing Computer Software, 2nd ed. (New York: John Wiley & Sons, 1999).


[Закрыть]
. К примеру, программист мог намереваться написать код, означавший: «Значение параметра должно быть меньше пяти».

Однако фактически программный код означал: «Значение параметра должно быть меньше или равно пяти».

В большинстве языков программирования разница между этими формулами состоит в одном-единственном нажатии на клавишу.

Итак, теперь игра шла на неизведанной территории, в систему было введено непредвиденное значение пять. Затем Хью снова переключил свое внимание на сенсорный экран и нажал кнопку «+», которая, к его «ботаническому» восторгу, позволила увеличить значение до «6»! Возможно, логика, которая прежде не позволяла ему ввести значение выше предельного, формулировалась так: «При значении, равном четырем, не увеличивать». В данном случае значение составляло не четыре, а пять, поэтому нажатие кнопки «+» позволило успешно повысить его до шести. Хью открыл упаковку арахиса и принялся нажимать кнопку «+» до тех пор, пока значение не достигло 127. Тут он решил остановиться и поразмышлять.

Число 127 играет особую роль в компьютерных науках. По сути, это своего рода плато. С технической точки зрения это два в седьмой степени минус единица (27 − 1). В некоторых случаях это максимальное значение, с которым может справиться определенная система. Чтобы понять, почему это так, подумайте о ситуациях, когда вы используете для счета собственные пальцы. Давайте предположим, что вы считаете привычным образом, то есть ваши выпрямленные шесть пальцев означают цифру «6». Если, используя этот метод, вы попытаетесь посчитать более чем до десяти, то столкнетесь с проблемой – количество ваших пальцев ограниченно. Дети обычно стараются запомнить, что уже прошли этот цикл один раз, и затем вновь начинают выпрямлять пальцы, но первый из них означает уже не 1, а 11. Однако представьте себе, что вам нужно отправить кому-то фотографию ваших пальцев. В этом случае вы не можете показать на фотографии 12 или 13, потому что на картинке это будет выглядеть как два или три. Эта проблема возникает, поскольку на уровне десяти мы достигли предельного значения для пальцев, а добавляя к нему что-то еще, мы сталкиваемся с тем, что специалисты по компьютерным наукам называют целочисленным переполнением. Иными словами, мы попытались сохранить больше информации, чем можно. При использовании пальцев, для того чтобы посчитать до 11, мы, доходя до максимального значения (10), «возвращаемся» к минимальному значению – в случае с пальцами это означает 1. Такая же проблема возникает и в программах, где для хранения числа используется набор так называемых бинарных переключателей («вкл/выкл»). Когда число превышает совокупную емкость переключателей, программа просто перегружает значение до минимально допустимого. Представьте себе, что вы считаете от 1 до 100, но при этом видите только последнюю цифру в каждом числе. Может показаться, что вы движетесь от 0 до 9, а затем вдруг опять к 0. Когда подобное явление происходит в области программирования, оно способно привести к всевозможным проблемам.

Помните ли вы о «проблеме 2000 года» {30}30
  Richard Lacayo et al., «The End of the World as We Know It?» Time, January 18, 1999.


[Закрыть]
? Возможно, что лично вы были на какой-то безумной вечеринке, когда год на календаре изменился с 1999-го на 2000-й, однако некоторые ученые-компьютерщики провели эту ночь в подвалах своих домов с запасами продуктов питания. Они сильно беспокоились о том, что произойдет со старыми компьютерными системами (работающими в банках и компаниях, занимающихся организацией воздушного трафика), когда двузначное описание года (99) внезапно изменится на 00. К счастью, миллениум не привел к апокалипсису. Однако этого нельзя было сказать о развлекательной системе, которой пользовался Хью в самолете.

Почему число 127 настолько важно для некоторых программ? Подобно числу 10 для наших пальцев, оно считается пограничным значением. Обычная математика говорит нам, что результат сложения 1 и 127 (1 + 127) должен быть равен 128. Однако порой в компьютерной математике результат оказывается равным минус 128, то есть минимальному значению, которое могут удерживать бинарные переключатели. Иными словами, это все равно что выпрямленный палец, означающий 11, однако выглядящий как один.

Как только Хью увидел число 127 на экране самолетной развлекательной системы, он понял, что у него есть отличный шанс вызвать целочисленное переполнение системы. Затем, исключительно в интересах науки, он нажал кнопку «+» еще один раз. Внезапно на экране на какой-то момент показалось число 128, а затем экран погас.

Тут же выключился экран сидевшего рядом с ним пассажира.

Погасли экраны и у пассажиров перед ним и за ним.

Через секунду выключилась вся развлекательная система в самолете.

После нескольких минут ворчания некоторых пассажиров бесстрастный бортпроводник перегрузил систему, и все вернулось к нормальному состоянию. А Хью приземлился с новыми знаниями о «Тетрисе» (и числе 127).

Как мог производитель упустить из виду эту проблему?


    Ваша оценка произведения:

Популярные книги за неделю