Разница порождает улучшение
Разница порождает улучшение
Для целой группы образованных людей Нед Гуллей выступает в роли своего рода лабораторного сосуда, эдакой чашки Петри. Гуллей работает в компании Mathworks, известной по MATLAB, пакету прикладных программ для технических вычислений и одноименному языку программирования, широко используемому математиками и инженерами для решения настолько сложных задач, при одном виде которых у многих отвисает челюсть. В 1999 г. компания решила провести очередной конкурс среди программистов. Конкурсы проводились и ранее, правда, тогда использовалась электронная почта. Анализ присланных работ был громоздким, утомительным и занимал немало времени. Новый конкурс Гуллей предложил провести на веб-сайте и судить его в режиме реального времени50.
Цель, которую преследовала компания, запуская новый конкурс, состояла в том, чтобы «приятно развлечь сообщество пользователей MATLAB, поощрить обмен передовым опытом программирования». Вообще, конкурсы по программированию – часть субкультуры «компьютерных гениев» начиная с первых дней развития вычислительной техники. Это объясняется одной причиной: конкурсы развивают навыки, хотя это всего лишь игра. Различные отделы вычислительной техники стали проводить свои турниры еще в 1970-е, а неофициальные матчи между программистами начались еще раньше. В общем, Mathworks поддержала добрую традицию.
На первый взгляд задача, предложенная на конкурс Гуллеем, носила весьма условный характер. Конкурсанты должны были предложить свои решения так называемой «дилеммы коммивояжера», смысл которой заключается в поиске оптимального маршрута, проходящего через указанные точки, в которых торговец должен появиться хотя бы по одному разу, с последующим возвращением в исходный пункт. Участники предоставляли свои решения либо в виде алгоритмов, либо уже готовых программ. Конкурс должен был продолжаться 10 дней; представленные решения становились известными всем участникам конкурса, разработчик наиболее эффективного алгоритма объявлялся победителем.
Но Гуллей «подкинул в печку дровишек», разрешив конкурсантам использовать коды других участников, с условием, что будет найдено более лучшее решение задачи. Каждый раз, когда поступало новое решение, его учитывали, оценивали и вывешивали на вебсайте. Каждый участник мог видеть полные программные коды конкурентов, копировать их, вносить свои поправки и улучшения, даже самые незначительные. Уловка же Гуллея приводила к тому, что предложившим самый эффективный алгоритм, а стало быть, и победителем конкурса мог оказаться человек, изменивший всего несколько строк в уже представленном кем-то коде.
Гуллей говорил, что все это напоминает общепринятый процесс разработки программного обеспечения. «В офисе, если один человек найдет решение проблемы, остальные тут же собираются вокруг, чтобы узнать, как он это сделал. Осознав свои и чужие ошибки, они учтут их в своих кодах. В нашей культуре бытует миф о Томасе Эдисоне, умном парне, который мог решить любую проблему. Он увидит ее, как только войдет в комнату, а на выходе уже будет идеальное решение. В действительности большинство достижений – это продукт коллективной работы. Я хотел сделать конкурс, который бы смоделировал движение мысли по всему миру».
Во избежание недопонимания: конкурс компании Mathworks не столько пример краудсорсинга, сколько демонстрация принципа, который делает краудсорсинг таким эффективным. Этот конкурс по своей сути ближе к экспериментам Пейджа с «искусственными агентами», чем к корпорации TopCoder с ее использованием «толпы» в создании реального ПО. Mathworks поощряла среди своих участников «кражи» ПО для получения наилучшего результата. Натан, участник конкурса из Ирландии, даже написал Гуллею письмо с просьбой учесть, что он страдал «от физической дрожи во время подготовки к покорению кода». На время проведения конкурса некоторые игроки брали отпуска, прогуливали учебные занятия, брали больничные листы – и все для того, чтобы принять участие в гонке за право быть первым в списке лидеров. Гуллей назвал конкурс MATLAB «заразным сотрудничеством» – поразительный парафраз «сопернического сотрудничества» Джека Хьюза из TopCoder.
«Программист потратит ночь на разработку идеального, по его мнению, алгоритма, который должен принести победу. А потом кто-то другой добавляет в него небольшие улучшения и выходит на первое место. Первый программист приходит в бешенство из-за того, что кто-то скинул его с пьедестала, используя его же код! С целью восстановить свое первенство он добавляет в него свое улучшение». По словам Гуллея, в итоге конечной целью участия в конкурсе является не победа, а создание такого улучшения, которое впечатлит и «задвинет» других участников. «Это можно сравнить с системой учета баллов, основанной на деловой репутации».
Выдающимся аспектом конкурса MATLAB стал все же не накал страстей, а то, что в нем интеллектуальную собственность выставили на общественное обозрение, сделали из нее продукт неоднократного использования, и это оказалось необычайно эффективным методом решения поставленной задачи. С момента своего первого проведения в 1999 г. конкурс организуется дважды в год. Гуллей отмечает, что в среднем алгоритм, полученный в конце конкурса, превосходит первоначальный вариант в тысячу раз.
Это доказывает, что в соревновании между теорией и практикой последняя ушла далеко вперед, иначе чем еще можно объяснить такое ошеломляющее улучшение? Очевидно, что наличие большого количества участников – один из важнейших факторов. Многие талантливые программисты смогли предложить более лучшие решения. Так же совершенно очевидно, что процесс стимулировал свободный обмен идеями. Обмен способствовал созданию среды сотрудничества, в которой совершенствовались и без того хорошие идеи. Но все это не объясняет до конца график улучшения алгоритма. Важно учесть: лучшими не обязательно оказывались те, кто вносил наибольший вклад. Часто решающие улучшения, способствовавшие прорыву, делали новички. Или, как выразился Гул-лей, «иногда в игру вступали даже скрипт-кидди и вносили свои малейшие изменения, да такие, что даже Эдисон протер бы глаза и сказал: “Ого!”»
Другими словами, «коричневые носки» одержали победу над группой «Менса». Это может показаться нелогичным. Но на самом деле сила распределенных сетей была известна еще за полвека до того, как Пейдж начал сталкивать лбами своих «агентов».
Данный текст является ознакомительным фрагментом.